XML/XSLT stylesheet/position — различия между версиями
Admin (обсуждение | вклад) м (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>