XML/XSLT stylesheet/position — различия между версиями

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

Текущая версия на 11:26, 26 мая 2010

Get the context position with position() function

   <source lang="xml">

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

 <Chapter number="c1">the first chapter</Chapter>
 <Chapter number="c2">the second chapter</Chapter>
 <Chapter number="c3">the third chapter</Chapter>
 <Chapter number="c4">the fourth chapter</Chapter>
 <Chapter number="c5">the fifth chapter</Chapter>

</Book> 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="Chapter">
   <xsl:if test="position()=2">
     <paragraph>
       the context position is
       <xsl:value-of select="position()" />
     </paragraph>
   </xsl:if>
 </xsl:template>

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

 <paragraph>
       the context position is
       2</paragraph>
 
 
 
 
</source>
   
  


If statement and position(), last() functions

   <source lang="xml">

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

 <Title>this is the title</Title>
 <Authors>
   <Author>A</Author>
   <Author>B</Author>
   <Author>C</Author>
 </Authors>
 <Year>2007</Year>
 <Chapters>
   <Chapter number="1" title="title 1">chapter 1</Chapter>
   <Chapter number="2" title="title 2">chapter 2</Chapter>
   <Chapter number="3" title="title 3">chapter 3</Chapter>
   <Chapter number="4" title="title 4">chapter 4</Chapter>
   <Chapter number="5" title="title 5">chapter 5</Chapter>
 </Chapters>

</Book>

File: Transform.xslt <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

 version="1.0">
 <xsl:template match="Author">
   <xsl:value-of select="." />
   <xsl:if test="position() != last()">
     <xsl:text>, </xsl:text>
   </xsl:if>
   <xsl:if test="position() = last()-1">
     <xsl:text>and </xsl:text>
   </xsl:if>
   <xsl:if test="position() = last()">
     <xsl:text>.</xsl:text>
   </xsl:if>
 </xsl:template>

</xsl:stylesheet>

Output: <?xml version="1.0" encoding="UTF-8"?>

 this is the title
 
   A, 
   B, 
   C, and 
 
 2007
 
   chapter 1
   chapter 2
   chapter 3
   chapter 4
   chapter 5
 
</source>
   
  


position() function

   <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:value-of select="position()" />
   <xsl:text>. </xsl:text>
   <xsl:value-of select="." />
   <xsl:text>
</xsl:text>
 </xsl:template>

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

</source>