Книга: XSLT

lang() 

lang() 

Функция lang проверяет, совпадает ли язык контекстного узла (определенный в атрибуте xml:lang) с переданным ей языком. Функция применяется следующим образом:

boolean lang(string)

Функции нужно передать строку, определяющую язык в спецификации XML, как, например, «en» для английского, «de» для немецкого и «jp» для японского.

В следующем примере я проверяю, написан ли исходный документ на английском. Сначала я устанавливаю атрибут xml:lang в planets.xml в значение, соответствующее английскому языку:

<?xml version="1.0"?>
<?xml=stylesheet type="text/xml" href="planets.xsl"?>
<PLANETS xml:lang="en">
 <PLANET>
  <NAME>Mercury</NAME>
  <MASS UNITS="(Earth = 1)">.0553</MASS>
  <DAY UNITS="days">58.65</DAY>
  <RADIUS UNITS="miles">1516</RADIUS>
  <DENSITY UNITS="(Earth = 1)">.983</DENSITY>
  <DISTANCE UNITS="million miles">43.4</DISTANCE><!--B перигелии-->
 </PLANET>
 .
 .
 .

Теперь я удостоверяюсь, что исходный документ на самом деле написан на английском, перед тем как применять к нему шаблоны:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:template match="/PLANETS">
  <xsl:if test="lang('en')">
   <HTML>
    <HEAD>
     <TITLE>
      The Planets Table
     </TITLE>
    </HEAD>
    <BODY>
     <H1>
      The Planets Table
     </H1>
     <TABLE BORDER="2">
      <TR>
       <TD>Name</TD>
       <TD>Mass</TD>
       <TD>Radius</TD>
       <TD>Day</TD>
      </TR>
      <xsl:apply-templates/>
     </TABLE>
    </BODY>
   </HTML>
  </xsl:if>
 </xsl:template>
 <xsl:template match="PLANET">
  <TR>
   <TD><xsl:value-of select="NAME"/></TD>
   <TD><xsl:apply-templates select="MASS"/></TD>
   <TD><xsl:apply-templates select="RADIUS"/></TD>
   <TD><xsl:apply-templates select="DAY"/></TD>
  </TR>
 </xsl:template>
</xsl:stylesheet>

Оглавление книги

Оглавление статьи/книги

Генерация: 0.110. Запросов К БД/Cache: 2 / 0
поделиться
Вверх Вниз