XML Tutorial/XSLT stylesheet/number

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

count="manufacturer|car" level="any" format="1. "

   <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:number count="manufacturer|car" level="any" format="1. "/>
     <xsl:value-of select="@name"/>
     <xsl:text>
</xsl:text>
     <xsl:for-each select="car">
       <xsl:number count="manufacturer|car" level="any" format="1. "/>
       <xsl:value-of select="."/>
       <xsl:text>
</xsl:text>
     </xsl:for-each>
   </xsl:for-each>
 </xsl:template>

</xsl:stylesheet> Output: Automobile manufacturers and their cars 1. Chevrolet 2. Cavalier 3. Corvette 4. Impala 5. Malibu 6. Ford 7. Pinto 8. Mustang 9. Taurus 10. Volkswagen 11. Beetle 12. Jetta 13. Passat 14. Touraeg</source>


demonstrates the default behaviour of xsl:number element

   <source lang="xml">

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

 <chapter>First Chapter</chapter>
 <chapter>
   Second Chapter
   <chapter>Subchapter 1</chapter>
   <chapter>Subchapter 2</chapter>
 </chapter>
 <chapter>
   Third Chapter
   <chapter>Subchapter A</chapter>
   <chapter>
     Subchapter B
     <chapter>sub a</chapter>
     <chapter>sub b</chapter>
   </chapter>
   <chapter>Subchapter C</chapter>
 </chapter>

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:template match="/">
<xsl:for-each select="//chapter"> <TR> <TD> <xsl:number/> </TD> <TD> <xsl:value-of select="./text()"/> </TD> </TR> </xsl:for-each> </TABLE> </xsl:template> </xsl:stylesheet> Output: <?xml version="1.0" encoding="UTF-8"?>
Number</TH>
         <td>text</TH>
<TR><TD>1</TD><TD>First Chapter</TD></TR><TR><TD>2</TD><TD>
   Second Chapter
   </TD></TR><TR><TD>1</TD><TD>Subchapter 1</TD></TR><TR><TD>2</TD><TD>Subchapter 2</TD></TR><TR><TD>3</TD><TD>
   Third Chapter
   </TD></TR><TR><TD>1</TD><TD>Subchapter A</TD></TR><TR><TD>2</TD><TD>
     Subchapter B
     </TD></TR><TR><TD>1</TD><TD>sub a</TD></TR><TR><TD>2</TD><TD>sub b</TD></TR><TR><TD>3</TD><TD>Subchapter C</TD></TR></TABLE></source>
   
  

number count="manufacturer|car" level="multiple" format="1.1. "

   <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:number count="manufacturer" format="1. "/>
     <xsl:value-of select="@name"/>
     <xsl:text>
</xsl:text>
     <xsl:for-each select="car">
       <xsl:number count="manufacturer|car" level="multiple" format="1.1. "/>
       <xsl:value-of select="."/>
       <xsl:text>
</xsl:text>
     </xsl:for-each>
   </xsl:for-each>
 </xsl:template>

</xsl:stylesheet> Output: Automobile manufacturers and their cars 1. Chevrolet 1.1. Cavalier 1.2. Corvette 1.3. Impala 1.4. Malibu 2. Ford 2.1. Pinto 2.2. Mustang 2.3. Taurus 3. Volkswagen 3.1. Beetle 3.2. Jetta 3.3. Passat 3.4. Touraeg</source>


number format=" 01. "

   <source lang="xml">

File: Data.xml <?xml version="1.0" encoding="UTF-8"?> <provinces>

<name>Alberta</name>
<name>British Columbia</name>
<name>Manitoba</name>
<name>New Brunswick</name>
<name>Newfoundland and Labrador</name>
<name>Northwest Territories</name>
<name>Nova Scotia</name>
<name>Nunavut</name>
<name>Ontario</name>
<name>Prince Edward Island</name>
<name>Quebec</name>
<name>Saskatchewan</name>
<name>Yukon</name>

</provinces>

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="provinces">
   <xsl:apply-templates select="name" />
 </xsl:template>
 <xsl:template match="name">
   <xsl:number format=" 01.	" />
   <xsl:value-of select="." />
   <xsl:text>
</xsl:text>
 </xsl:template>

</xsl:stylesheet> Output:

01.  Alberta
02.  British Columbia
03.  Manitoba
04.  New Brunswick
05.  Newfoundland and Labrador
06.  Northwest Territories
07.  Nova Scotia
08.  Nunavut
09.  Ontario
10.  Prince Edward Island
11.  Quebec
12.  Saskatchewan
13.  Yukon</source>
   
  

number format="1. "

   <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="html"/>
 <xsl:template match="/">
   <html>
     <head>
       <title>Automobile manufacturers and their cars</title>
     </head>
     <body>
       <xsl:for-each select="cars/manufacturer">
         <paragraph>
           <xsl:number format="1. "/>
           <xsl:value-of select="@name"/>
         </paragraph>
       </xsl:for-each>
     </body>
   </html>
 </xsl:template>

</xsl:stylesheet> Output: <html>

  <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     <title>Automobile manufacturers and their cars</title>
  </head>
  <body>
     <paragraph>1. Chevrolet</paragraph>
     <paragraph>2. Ford</paragraph>
     <paragraph>3. Volkswagen</paragraph>
  </body>

</html></source>


number format="I "

   <source lang="xml">

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

<state>South Carolina</state>
<state>South Dakota</state>
<state>Tennessee</state>
<state>Texas</state>
<state>Utah</state>
<state>Vermont</state>
<state>Virginia</state>
<state>Washington</state>
<state>West Virginia</state>
<state>Wisconsin</state>
<state>Wyoming</state>

</us>

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="us">
   <xsl:apply-templates select="state" />
 </xsl:template>
 <xsl:template match="state">
   <xsl:number format="I	" />
   <xsl:value-of select="." />
   <xsl:text>
</xsl:text>
 </xsl:template>

</xsl:stylesheet> Output: I South Carolina II South Dakota III Tennessee IV Texas V Utah VI Vermont VII Virginia VIII Washington IX West Virginia X Wisconsin XI Wyoming</source>


number format: roman

   <source lang="xml">

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

<state>Alabama</state>
<state>Alaska</state>
<state>Arizona</state>
<state>Arkansas</state>
<state>West Virginia</state>
<state>Wisconsin</state>
<state>Wyoming</state>

</us>

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="us">
   <xsl:apply-templates select="state" />
 </xsl:template>
 <xsl:template match="state">
   <xsl:number format="i	" />
   <xsl:value-of select="." />
   <xsl:text>
</xsl:text>
 </xsl:template>

</xsl:stylesheet> Output: i Alabama ii Alaska iii Arizona iv Arkansas v West Virginia vi Wisconsin vii Wyoming</source>


number format=" a. "

   <source lang="xml">

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

<state>Alabama</state>
<state>Alaska</state>
<state>Arizona</state>
<state>Arkansas</state>
<state>California</state>
<state>BC</state>
<state>Connecticut</state>
<state>Delaware</state>
<state>Florida</state>
<state>Georgia</state>
<state>Hawaii</state>
<state>Wisconsin</state>
<state>Wyoming</state>

</us>

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="us">
   <xsl:apply-templates select="state" />
 </xsl:template>
 <xsl:template match="state">
   <xsl:number format=" a.	" />
   <xsl:value-of select="." />
   <xsl:text>
</xsl:text>
 </xsl:template>

</xsl:stylesheet> Output:

a.  Alabama
b.  Alaska
c.  Arizona
d.  Arkansas
e.  California
f.  BC
g.  Connecticut
h.  Delaware
i.  Florida
j.  Georgia
k.  Hawaii
l.  Wisconsin
m.  Wyoming</source>
   
  

number level="any" count="section | element" format="1. "

   <source lang="xml">

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

<section title="US coin denominations">
 <element>cent</element>
 <element>nickel</element>
 <element>dime</element>
 <element>quarter</element>
 <element>half dollar</element>
 <element>dollar</element>
</section>

</outline> 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="outline">
   <xsl:for-each select="section|//element">
     <xsl:number level="any" count="section | element" format="1. " />
     <xsl:value-of select="@title | text()" />
     <xsl:text>
</xsl:text>
   </xsl:for-each>
 </xsl:template>

</xsl:stylesheet> Output: 1. US coin denominations 2. cent 3. nickel 4. dime 5. quarter 6. half dollar 7. dollar</source>


number value="1000000" grouping-size="3" grouping-separator=","

   <source lang="xml">

File: Data.xml <thanks>Thanks a </thanks>

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="thanks">
   <xsl:value-of select="." />
   <xsl:number value="1000000" grouping-size="3"
     grouping-separator="," />
   <xsl:text>!</xsl:text>
 </xsl:template>

</xsl:stylesheet> Output: Thanks a 1,000,000!</source>


number value="count(car)" format="01"

   <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="html"/>
 <xsl:template match="/">
   <html>
     <head>
       <title>Automobile manufacturers and their cars</title>
     </head>
     <body>
       <xsl:for-each select="cars/manufacturer">
         <paragraph>
           <xsl:text>Cars produced by </xsl:text>
           <xsl:value-of select="@name"/>
           <xsl:text>: </xsl:text>
           <xsl:number value="count(car)" format="01"/>
         </paragraph>
       </xsl:for-each>
     </body>
   </html>
 </xsl:template>

</xsl:stylesheet> Output: <html>

  <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     <title>Automobile manufacturers and their cars</title>
  </head>
  <body>
     <paragraph>Cars produced by Chevrolet: 04</paragraph>
     <paragraph>Cars produced by Ford: 03</paragraph>
     <paragraph>Cars produced by Volkswagen: 04</paragraph>
  </body>

</html></source>


number value="position()" format="1. "

   <source lang="xml">

File: Data.xml <?xml version="1.0" encoding="UTF-8"?> <provinces>

<name>Alberta</name>
<name>British Columbia</name>
<name>Manitoba</name>
<name>New Brunswick</name>
<name>Newfoundland and Labrador</name>
<name>Northwest Territories</name>
<name>Nova Scotia</name>
<name>Nunavut</name>
<name>Ontario</name>
<name>Prince Edward Island</name>
<name>Quebec</name>
<name>Saskatchewan</name>
<name>Yukon</name>

</provinces>

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="provinces">
   <xsl:apply-templates select="name">
     <xsl:sort order="descending" />
   </xsl:apply-templates>
 </xsl:template>
 <xsl:template match="name">
   <xsl:number value="position()" format="1. " />
   <xsl:apply-templates />
   <xsl:text>
</xsl:text>
 </xsl:template>

</xsl:stylesheet> Output: 1. Yukon 2. Saskatchewan 3. Quebec 4. Prince Edward Island 5. Ontario 6. Nunavut 7. Nova Scotia 8. Northwest Territories 9. Newfoundland and Labrador 10. New Brunswick 11. Manitoba 12. British Columbia 13. Alberta</source>


Setting the attribute level into multiple

   <source lang="xml">

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

 <chapter>First Chapter</chapter>
 <chapter>
   Second Chapter
   <chapter>Subchapter 1</chapter>
   <chapter>Subchapter 2</chapter>
 </chapter>
 <chapter>
   Third Chapter
   <chapter>Subchapter A</chapter>
   <chapter>
     Subchapter B
     <chapter>sub a</chapter>
     <chapter>sub b</chapter>
   </chapter>
   <chapter>Subchapter C</chapter>
 </chapter>

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:template match="/">
Number</TH><td>text</TH>
<xsl:for-each select="//chapter"> <TR> <TD> <xsl:number level="multiple"/> </TD> <TD> <xsl:value-of select="./text()"/> </TD> </TR> </xsl:for-each> </TABLE> </xsl:template> </xsl:stylesheet> Output: <?xml version="1.0" encoding="UTF-8"?>
Number</TH>
         <td>text</TH>
<TR><TD>1</TD><TD>First Chapter</TD></TR><TR><TD>2</TD><TD>
   Second Chapter
   </TD></TR><TR><TD>2.1</TD><TD>Subchapter 1</TD></TR><TR><TD>2.2</TD><TD>Subchapter 2</TD></TR><TR><TD>3</TD><TD>
   Third Chapter
   </TD></TR><TR><TD>3.1</TD><TD>Subchapter A</TD></TR><TR><TD>3.2</TD><TD>
     Subchapter B
     </TD></TR><TR><TD>3.2.1</TD><TD>sub a</TD></TR><TR><TD>3.2.2</TD><TD>sub b</TD></TR><TR><TD>3.3</TD><TD>Subchapter C</TD></TR></TABLE></source>
   
  

The attribute starts with format identificator followed by separator characters.

   <source lang="xml">

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

       <n>one</n>
   <n>two</n>
   <n>three</n>
   <n>four</n>

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:template match="/">
Number</TH><td>text</TH>
<xsl:for-each select="//n"> </xsl:for-each>
             <xsl:number value="position()" format="A   "/>
             <xsl:value-of select="."/>
   </xsl:template>

</xsl:stylesheet> Output:

<?xml version="1.0" encoding="UTF-8"?>
A one
B two
C three
D four
</source>


The format is given with format attribute.

   <source lang="xml">

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

       <n>one</n>
   <n>two</n>
   <n>three</n>
   <n>four</n>

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:template match="/">
<xsl:for-each select="//n"> </xsl:for-each>
             <xsl:number value="position()" format="001. "/>
             <xsl:value-of select="."/>
   </xsl:template></xsl:stylesheet>

Output:

<?xml version="1.0" encoding="UTF-8"?>
001. one
002. two
003. three
004. four
</source>


xsl:number inserts formated numbers into output

   <source lang="xml">

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

   <n>one</n>
   <n>two</n>
   <n>three</n>
   <n>four</n>

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:template match="/">
<xsl:for-each select="//n"> </xsl:for-each>
             <xsl:number value="position()" format="1. "/>
             <xsl:value-of select="."/>
   </xsl:template>

</xsl:stylesheet> Output:

<?xml version="1.0" encoding="UTF-8"?>
1. one
2. two
3. three
4. four
</source>


xsl:number value="position()" format="a# "

   <source lang="xml">

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

       <n>one</n>
   <n>two</n>
   <n>three</n>
   <n>four</n>

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:template match="/">
<xsl:for-each select="//n"> </xsl:for-each>
             <xsl:number value="position()" format="a# "/>
             <xsl:value-of select="."/>
   </xsl:template>

</xsl:stylesheet> Output:

<?xml version="1.0" encoding="UTF-8"?>
a# one
b# two
c# three
d# four
</source>


xsl:number value="position()" format="I... "

   <source lang="xml">

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

       <n>one</n>
   <n>two</n>
   <n>three</n>
   <n>four</n>

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:template match="/">
<xsl:for-each select="//n"> </xsl:for-each>
             <xsl:number value="position()" format="I... "/>
             <xsl:value-of select="."/>
   </xsl:template>

</xsl:stylesheet> Output:

<?xml version="1.0" encoding="UTF-8"?>
I... one
II... two
III... three
IV... four
</source>