XML/XSLT stylesheet/mod

Материал из Web эксперт
Версия от 11:26, 26 мая 2010; Admin (обсуждение | вклад) (1 версия)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

if test="(position() mod

   <source lang="xml">

File: Data.xml <?xml version="1.0" encoding="utf-8"?> <cars>

 <manufacturer name="Chevrolet">
   <car>Cavalier</car>
   <car>Corvette</car>
   <car>Impala</car>
   <car>Malibu</car>
 </manufacturer>
 <manufacturer name="Ford">
   <car>Pinto</car>
   <car>Mustang</car>
   <car>Taurus</car>
 </manufacturer>
 <manufacturer name="Volkswagen">
   <car>Beetle</car>
   <car>Jetta</car>
   <car>Passat</car>
   <car>Touraeg</car>
 </manufacturer>

</cars> 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="/">
   <xsl:text>Automobile manufacturers and their cars
</xsl:text>
   <xsl:for-each select="cars/manufacturer">
     <xsl:value-of select="@name"/>
     <xsl:text>
</xsl:text>
     <xsl:for-each select="car">
       <xsl:text>  </xsl:text>
       <xsl:if test="(position() mod 2) = 0">
         <xsl:number count="manufacturer|car" level="multiple"
           format="1.1. "/>
       </xsl:if>
       <xsl:value-of select="."/>
       <xsl:text>
</xsl:text>
     </xsl:for-each>
   </xsl:for-each>
 </xsl:template>

</xsl:stylesheet>

Output: omobile manufacturers and their cars Chevrolet

 Cavalier
 1.2. Corvette
 Impala
 1.4. Malibu

Ford

 Pinto
 2.2. Mustang
 Taurus

Volkswagen

 Beetle
 3.2. Jetta
 Passat
 3.4. Touraeg
</source>
   
  


mod function

   <source lang="xml">

File: Data.xml <?xml version="1.0"?> <towns>

 <town>A</town>
 <town>B</town>
 <town>C</town>
 <town>D</town>
 <town>E</town>
 <town>F</town>
 <town>G</town>
 <town>H</town>
 <town>I</town>
 <town>J</town>
 <town>K</town>
 <town>L</town>

</towns>

File: Transform.xslt <?xml version="1.0"?> <xsl:stylesheet version="2.0"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="xml" indent="yes" />
 <xsl:param name="cols" select="4" />
 <xsl:template match="towns">
<xsl:for-each-group select="town" group-by="position() mod (last() idiv $cols)"> <xsl:for-each select="current-group()"> </xsl:for-each> </xsl:for-each-group>
             <xsl:value-of select="." />
 </xsl:template>

</xsl:stylesheet> Output: ml version="1.0" encoding="UTF-8"?>

A D G J
B E H K
C F I L
</source>