XML Tutorial/XSLT stylesheet/Comparison Operator

Материал из Web эксперт
Перейти к: навигация, поиск

less than

File: Data.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<america>
 <source>
  <title>A</title>
  <url>http://www.wbex.ru/</url>
  <populations estimate="true" year="2002"/>
<nation>
 <name>Canada</name>
 <capital>Ottowa</capital>
 <population>32277942</population>
 <cc>dz</cc>
</nation>

</america>

File: Transform.xslt <?xml version="1.0" encoding="US-ASCII"?> <xsl:stylesheet version="1.0"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="text" />
 <xsl:template match="america">
   <xsl:apply-templates select="nation" />
 </xsl:template>
 <xsl:template match="nation">
   <xsl:text> * </xsl:text>
   <xsl:value-of select="name" />
   <xsl:if test="population <= 10000000">
     <xsl:text> (<= to 10M)</xsl:text>
   </xsl:if>
   <xsl:text>
</xsl:text>
 </xsl:template>

</xsl:stylesheet> Output:

* Canada</source>
   
  

Use esapced entity to do the compare

File: Data.xml
<?xml version="1.0" standalone="yes"?>
<poem author="jm" year="1667">
  <verse>line 1</verse>
  <verse>line 2</verse>
  <verse>line 3</verse>
  <verse>line 4</verse>
</poem>
File: Transform.xslt
<?xml version="1.0" standalone="yes"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="1.0">
  <xsl:output method="text" />
  <xsl:template match="poem">
    <xsl:if test="count(verse) &lt; 3">
      The poem has less than 3 verse child elements.
    </xsl:if>
  </xsl:template>
</xsl:stylesheet>


Using comparison operator

File: Data.xml
<?xml version="1.0" encoding="UTF-8"?>
<provinces>
  <province id="AB">
    <name>Alberta</name>
    <abbreviation>AB</abbreviation>
  </province>
</provinces>
File: Transform.xslt
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="text" />
  <xsl:template match="math">
    <xsl:apply-templates
      select="operand[(. &lt; 50) and (. &gt; 30)]" />
  </xsl:template>
  <xsl:template match="operand[(. &lt; 50) and (. &gt; 30)]">
    <xsl:value-of select="." />
    <xsl:text> + 25 = </xsl:text>
    <xsl:value-of select=". + 25" />
    <xsl:text>&#10;</xsl:text>
    <xsl:value-of select="." />
    <xsl:text> * 25 = </xsl:text>
    <xsl:value-of select=". * 25" />
    <xsl:text>&#10;</xsl:text>
  </xsl:template>
</xsl:stylesheet>
Output:

  
    Alberta
    AB