Mega Code Archive

 
Categories / XML Tutorial / XSLT StyleSheet
 

There is an important difference in variable value specification

File: Data.xml <?xml version="1.0" encoding="utf-8"?> <data>     <AAA>       <BBB>         <CCC>C1</CCC>       </BBB>       <CCC>C2</CCC>       <CCC>C3</CCC>     </AAA>     <AAA>       <CCC>         <DDD>D1</DDD>         <DDD>D2</DDD>       </CCC>     </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:variable name="var1" select="//AAA/CCC/text()"/>     <xsl:variable name="var2">//AAA/CCC/text()</xsl:variable>     <xsl:template match="/">       <xsl:call-template name="function">         <xsl:with-param name="path1" select="//AAA/CCC/DDD"/>         <xsl:with-param name="path2">//AAA/CCC/DDD</xsl:with-param>       </xsl:call-template>     </xsl:template>     <xsl:template name="function">       <xsl:param name="path1"/>       <xsl:param name="path2"/>       <paragraph>         <xsl:value-of select="$path2"/>         <xsl:text> : </xsl:text>         <xsl:value-of select="$path1"/>       </P>       <paragraph>         <xsl:value-of select="$var2"/>         <xsl:text> : </xsl:text>         <xsl:for-each select="$var1">           <xsl:value-of select="."/>           <xsl:text/>         </xsl:for-each>       </P>     </xsl:template> </xsl:stylesheet> Output: <?xml version="1.0" encoding="UTF-8"?><paragraph>//AAA/CCC/DDD : D1</P><paragraph>//AAA/CCC/text() : C2C3                </P>