XML Editor
Sign up for a WebBoard account Sign Up Keyword Search Search More Options... Options
Chat Rooms Chat Help Help News News Log in to WebBoard Log in Not Logged in
Show tree view Topic
Topic Page 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Go to previous topicPrev TopicGo to next topicNext Topic
Postnext
Peter CiuffettiSubject: Changing values of xsl:variables
Author: Peter Ciuffetti
Date: 25 May 2000 01:22 PM
Hello,

From my reading of the XSLT spec, xsl:variables are essentially constants.

Yet I didn't learn this until after I had gotten into the habit with Stylus of writing stylesheets that freely changed variables. Though I find it very helpful to be able to do so, I'm finding that my stylesheets don't work in other XSL processors if I take advantage of this capability in Stylus. Is this a 'feature' of Stylus or a 'bug'? Is it likely to disappear? Here's an example of Stylus letting me change a variable and the same stylesheet under Xalan:

--------------------------------------------

Input test document:

<?xml version="1.0"?>
<test>
<child>a</child>
<child>b</child>
<child>c</child>
<child>d</child>
</test>

--------------------------------------------

Stylesheet:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="*|/">
<xsl:apply-templates/>
</xsl:template>

<xsl:template match="text()|@*">
<xsl:value-of select="."/>
</xsl:template>

<xsl:template match="test">
<xsl:variable name="ctr" select="0"/>
<test>
<xsl:for-each select="child">
<xsl:variable name="ctr" select="$ctr + 1"/>
<child><xsl:value-of select="$ctr"/></child>
</xsl:for-each>
</test>
</xsl:template>

<xsl:template match="child"/>

</xsl:stylesheet>
--------------------------------------------

Output produced with Stylus:

<test>
<child>1</child>
<child>2</child>
<child>3</child>
<child>4</child>
</test>

--------------------------------------------

Output produced with Xalan:

<test>
<child>1</child>
<child>1</child>
<child>1</child>
<child>1</child>
</test>

Postnext
(Deleted User) Subject: Changing values of xsl:variables
Author: (Deleted User)
Date: 25 May 2000 03:06 PM
The spec reads, "It is an error if a binding established by an xsl:variable or xsl:param element within a template shadows another binding established by an xsl:variable or xsl:param element also within the template." It would seem both Stylus and Xalan have a bug in not signalling the error. This will be fixed in a future release. Thanks for your report.

Alex Lloyd
eXcelon corp.

Postnext
Peter CiuffettiSubject: Changing values of xsl:variables
Author: Peter Ciuffetti
Date: 31 May 2000 07:22 AM
When I use an xsl:variable inside a template, is it going to get a new binding every time the template is invoked, or will the binding be permanent after the first time the template is called?

E.g.

<xsl:template match="*">
<xsl:variable name="theName" select="name()"/>
...
</xsl:template>

Posttop
(Deleted User) Subject: Changing values of xsl:variables
Author: (Deleted User)
Date: 31 May 2000 10:58 AM
The scope of a variable declared in a template is one template instantiation. Successive instantiations will receive new instances of the variable.

Alex Lloyd
eXcelon corp.

 
Topic Page 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Go to previous topicPrev TopicGo to next topicNext Topic
Download A Free Trial of Stylus Studio 6 XML Professional Edition Today! Powered by Stylus Studio, the world's leading XML IDE for XML, XSLT, XQuery, XML Schema, DTD, XPath, WSDL, XHTML, SQL/XML, and XML Mapping!  
go

Log In Options

Site Map | Privacy Policy | Terms of Use | Trademarks
Stylus Scoop XML Newsletter:
W3C Member
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.