XML/XSLT stylesheet/last — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
|
(нет различий)
|
Текущая версия на 11:26, 26 мая 2010
last() as index
<source lang="xml">
File: Data.xml
<wine grape="Chardonnay">
<winery>shop 1</winery> <product>product 1</product> <year>1998</year> <desc>description</desc> <prices> <list>6.99</list> <discounted>5.99</discounted> <case>71.50</case> </prices>
</wine> File: Transform.xslt <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0"> <xsl:output method="xml" omit-xml-declaration="yes" indent="no" /> <xsl:template match="item[3]"> ~~~~ Start of item element"s template ~~~~ 1. This node: { <xsl:apply-templates /> } 2. First node: { <xsl:value-of select="../item[1]" /> } 3. Last node: { <xsl:value-of select="../item[last()]" /> } 4. Preceding node: { <xsl:value-of select="preceding-sibling::item[1]" /> } 5. Next node: { <xsl:value-of select="following-sibling::item[1]" /> } 6. flavor attribute value of first node: { <xsl:value-of select="../item[1]/@flavor" /> } ~~~~ End of item element"s template ~~~~ </xsl:template> <xsl:template match="item" />
</xsl:stylesheet> Output:
shop 1 product 1 1998 description 6.99 5.99 71.50 </source>
Output a comma if it"s not the last one in the node
<source lang="xml">
File: Data.xml
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0"> <xsl:output method="xml" omit-xml-declaration="yes" indent="no" /> <xsl:template match="figure/title"> <xsl:apply-templates /> </xsl:template> <xsl:template match="para" />
</xsl:stylesheet> File: Transform.xslt <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0"> <xsl:output method="xml" omit-xml-declaration="yes" /> <xsl:template match="title"> <xsl:text>title ancestors:</xsl:text> <xsl:for-each select="ancestor::*"> <xsl:value-of select="name()" /> <xsl:if test="position() != last()"> <xsl:text>,</xsl:text> </xsl:if> </xsl:for-each> </xsl:template> <xsl:template match="para" />
</xsl:stylesheet>
</source>
use last() function to get the context size
<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="/"> <html> <head> <title>context position and context size.</title> </head> <body> <xsl:apply-templates select="/Book/Chapter" /> </body> </html> </xsl:template> <xsl:template match="Chapter"> <xsl:if test="position()=2"> <paragraph> and the context size is <xsl:value-of select="last()" />. </paragraph> </xsl:if> </xsl:template>
</xsl:stylesheet> Output: <html>
<head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>context position and context size.</title> </head> <body> <paragraph> and the context size is 5. </paragraph> </body>
</html>
</source>