=> Главная База Знаний Xslt Lang()


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>