Mega Code Archive

 
Categories / XML Tutorial / XSLT StyleSheet
 

Last() returns a number equal to the context size from the expression evaluation context

File: Data.xml <?xml version="1.0" encoding="utf-8"?> <data>     <AAA>       <BBB>         <CCC>A</CCC>       </BBB>       <BBB/>     </AAA>     <AAA>       <BBB/>       <BBB>         <CCC>B</CCC>         <CCC>C</CCC>         <CCC>D</CCC>         <CCC>E</CCC>       </BBB>     </AAA> </data> 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="/">       <DIV>         <xsl:for-each select="//BBB">           <xsl:call-template name="printout"/>         </xsl:for-each>       </DIV>       <DIV>         <xsl:apply-templates select="//CCC"/>       </DIV>       <DIV>         <xsl:apply-templates select="//AAA[last()]//CCC"/>       </DIV>     </xsl:template>     <xsl:template match="CCC">       <xsl:call-template name="printout"/>     </xsl:template>     <xsl:template name="printout">       <xsl:if test="position()=1">         <xsl:value-of select="name()"/>       </xsl:if>       <xsl:text>(</xsl:text>       <xsl:value-of select="position()"/>       <xsl:text>/</xsl:text>       <xsl:value-of select="last()"/>       <xsl:text>)</xsl:text>     </xsl:template> </xsl:stylesheet> Output: <?xml version="1.0" encoding="UTF-8"?><DIV>BBB(1/5)(2/5)(3/5)(4/5)(5/5)</DIV><DIV>CCC(1/5)(2/5)(3/5)(4/5)(5/5)</DIV><DIV>CCC(1/4)(2/4)(3/4)(4/4)</DIV>