xsl-list
[Top] [All Lists]

RE: Reusing Variables!!

2004-01-09 03:25:24
XSLT is not a procedural language, variables are not storage locations
whose contents you can modify as execution proceeds. You have to think
in functional terms, not procedural terms.

In your case the "function" is the concatenation of the string values of
a set of nodes. You can write this as:

<xsl:variable name="url">
 <xsl:for-each select="./breakdown[(_at_)sort='param' and @type='fixed']">
   <xsl:value-of select="@name"/>
 </xsl:for-each>
</xsl:variable>

I couldn't see why you were using an empty string as an argument to
concat(), by the way - it has no effect.

Michael Kay

-----Original Message-----
From: owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com 
[mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com] On Behalf Of 
Robert A. van Ginkel
Sent: 09 January 2004 10:03
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Reusing Variables!!


[XML]
       <action idx="1" flag="browse">
         <breakdown sort="page" data="index.php" />
         <breakdown sort="param" name="entity" type="fixed" 
data="User" />
         <breakdown sort="param" name="action" type="fixed" 
data="View" />
       </action>
[XSL]
<xsl:for-each select="/sg/contents/menu/actions/action">
  <xsl:variable name="url" select="./breakdown[(_at_)sort='page']/@data"/>
  <xsl:variable name="url" select="concat($url,'1','')"/>
  <xsl:for-each select="./breakdown[(_at_)sort='param' and @type='fixed']">
    <xsl:variable name="url" select="concat($url,@name,'')"/>
  </xsl:for-each>
</xsl:for-each>

Would give:
Sablotron error on line 136: conflicting variable bindings 'url' 
(line number is wrong)
I looked this up and  "Parameters are normal variables 
according to the 
XSLT 1.0 spec. Thus, you can't use two variables of the same 
name in a 
template. Libxslt and Xalan are too forgiving here. Saxon 
would give you 
the same error as Sablotron. Saxon is the right authority for 
the spec 
interpretation issues, I believe."
This explains it, but how can I get what I want here?


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



<Prev in Thread] Current Thread [Next in Thread>