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
Giuseppe CardonSubject: Problem with Xalan with variables
Author: Giuseppe Cardon
Date: 29 Apr 2005 01:43 PM
Originally Posted: 29 Apr 2005 01:27 PM
Hi, I have written an xslt that work well with the Stylus built-in processor, but if i choose the others processors like Xalan-J or Saxon the templates are not getting applied. It must work with xalan-J because I have to use it with the java compiler that use Xalan. The problem is with the using of variables with the "ATTRIBUTE-SET" element. I have a code like this <xsl:stylesheet> <xsl:template name="NameOfTemplate"> <xsl:for-each select="NODE"> <xsl:variable name="id"><xsl:value-of select="@id"/></xsl:variable> <xsl:element name="NEWELEMENT" use-attribute-sets="ELEMENT ATTRIBUTES"/> </xsl:for-each> </xsl:template> <xsl:attribute-set name="ELEMENT ATTRIBUTES"> <xsl:attribute name="NAME"><xsl:value-of select="concat('xxx',$id)"/></xsl:attribute> </xsl:attribute-set> </xsl:stylesheet> In the attribute-set ELEMENT ATTRIBUTES I use the value of the variable and with the built-in processor it work good but with Xalan it can find the name of the variable ( I think is out of scope). How I can do ???

Postnext
Ivan PedruzziSubject: Problem with Xalan with variables
Author: Ivan Pedruzzi
Date: 30 Apr 2005 12:24 AM
Originally Posted: 30 Apr 2005 12:25 AM
Ciao Giuseppe

There are two problems with your code: the attribute-set name is not valid name because contains spaces, the attribute-set uses a variable that is out of scope.

You can easily replace the following code

<xsl:element name="NEWELEMENT" use-attribute-sets="ELEMENT ATTRIBUTES"/>

with this and get rid of the xsl:attribute-set
<element NAME="{@id}"/>

Hope this helps
Ivan



Postnext
Giuseppe CardonSubject: Problem with Xalan with variables
Author: Giuseppe Cardon
Date: 30 Apr 2005 02:54 AM
In the example I haven't used the same name of the variable and element of my real code. In the real code I not have spaces. I can't use the method u said because I don't have to use the variable only in the name of the element but in many attributes of it. For example:

<xsl:template name="NameOfTemplate">
<xsl:for-each select="NODE">
<xsl:variable name="VALUE"><xsl:value-of select="@id"/></xsl:variable>

<xsl:element name="NEWELEMENT" use-attribute-sets="ELEMENTATTR"/>
</xsl:for-each>
</xsl:template>

<xsl:attribute-set name="ELEMENT ATTRIBUTES">
<xsl:attribute name="ATTR1"><xsl:value-of select="concat('xxx1',$VALUE)"/></xsl:attribute>
<xsl:attribute name="ATTR2"><xsl:value-of select="concat('xxx2',$VALUE)"/></xsl:attribute>
<xsl:attribute name="ATTR3"><xsl:value-of select="concat('xxx3',$VALUE)"/></xsl:attribute>
</xsl:attribute-set>

In the built-in processor it works. Thanks for your help

Posttop
Ivan PedruzziSubject: Problem with Xalan with variables
Author: Ivan Pedruzzi
Date: 30 Apr 2005 03:14 AM
As explained in the specs only global variables or parameters are visible to attributes-set
http://www.w3.org/TR/xslt#attribute-sets

Chnaged the attribute-se into a named template

<xsl:template name="ELEMENT-ATTRIBUTES">
<xsl:param name="VALUE"/>
<xsl:attribute name="ATTR1"><xsl:value-of select="concat('xxx1',$VALUE)"/></xsl:attribute>
<xsl:attribute name="ATTR2"><xsl:value-of select="concat('xxx2',$VALUE)"/></xsl:attribute>
<xsl:attribute name="ATTR3"><xsl:value-of select="concat('xxx3',$VALUE)"/></xsl:attribute>
</xsl:template>


then you can call the template passing your variable


<xsl:element name="NEWELEMENT" use-attribute-sets="ELEMENTATTR">
<xsl:call-template name="ELEMENT-ATTRIBUTES">
<xsl:with-param name="VALUE" select="$VALUE"/>
</xsl:call-template>
</xsl:element>



Ivan

 
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.