Mega Code Archive

 
Categories / XML Tutorial / XSLT StyleSheet
 

Variable assignment with choose statement

File: Data.xml <?xml version="1.0"?> <list xml:lang="en">   <title>title 1</title>   <listitem>item 1</listitem>   <listitem>item 2</listitem>   <listitem>item 3</listitem>   <listitem xml:lang="sw">item 4</listitem>   <listitem xml:lang="en-gb">item 5</listitem>   <listitem xml:lang="zu">item 6</listitem>   <listitem xml:lang="jz">item 7</listitem> </list> File: Transform.xslt <?xml version="1.0"?> <xsl:stylesheet version="1.0"    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">   <xsl:output method="text"/>   <xsl:variable name="favoriteNumber" select="23"/>   <xsl:variable name="favoriteColor" select="'blue'"/>   <xsl:variable name="complicatedVariable">     <xsl:choose>       <xsl:when test="count(//listitem) &gt; 10">         <xsl:text>really long list</xsl:text>       </xsl:when>       <xsl:when test="count(//listitem) &gt; 5">         <xsl:text>moderately long list</xsl:text>       </xsl:when>       <xsl:otherwise>         <xsl:text>fairly short list</xsl:text>       </xsl:otherwise>     </xsl:choose>   </xsl:variable>   <xsl:template match="/">     <xsl:text>Hello!  Your favorite number is </xsl:text>     <xsl:value-of select="$favoriteNumber"/>     <xsl:text>.&#xA;Your favorite color is </xsl:text>     <xsl:value-of select="$favoriteColor"/>     <xsl:text>.&#xA;&#xA;Here is a </xsl:text>     <xsl:value-of select="$complicatedVariable"/>     <xsl:text>:&#xA;</xsl:text>     <xsl:variable name="listitems" select="list/listitem"/>     <xsl:call-template name="processListitems">       <xsl:with-param name="items" select="$listitems"/>     </xsl:call-template>   </xsl:template>   <xsl:template name="processListitems">     <xsl:param name="items"/>     <xsl:variable name="favoriteColor">       <xsl:text>chartreuse</xsl:text>     </xsl:variable>          <xsl:text>    (Your favorite color is now </xsl:text>     <xsl:value-of select="$favoriteColor"/>     <xsl:text>.)&#xA;</xsl:text>     <xsl:for-each select="$items">       <xsl:value-of select="position()"/>       <xsl:text>.  </xsl:text>       <xsl:value-of select="."/>       <xsl:text>&#xA;</xsl:text>     </xsl:for-each>   </xsl:template> </xsl:stylesheet> Output: Hello!  Your favorite number is 23. Your favorite color is blue. Here is a moderately long list:     (Your favorite color is now chartreuse.) 1.  item 1 2.  item 2 3.  item 3 4.  item 4 5.  item 5 6.  item 6 7.  item 7