Hi Jarno,
First of all, thanks of answering me. I have copied your xslt program and
tried to run it, but the xslt processor declares 3 errors (for x unknown
namespace) so i have removed the 'x' and placed the datatypes at the start
of the document (as below) but it does not suceeded. What's wrong with this.
Can we simply make a named template (getDaTyID) with a parameter for doing
the job?.
Thanks again.
-----------------------------------------
<xsl:template match="/">
<document>
<dataTypes>
<dataType id="1" name="string"/>
<dataType id="2" name="integer"/>
<dataType id="3" name="float"/>
</dataTypes>
<xsl:apply-templates select="variables"/>
</document>
</xsl:template>
----------------------------------------------
<xsl:template match="var">
<xsl:copy>
<xsl:apply-templates select="@name"/>
<xsl:for-each select="@type">
<xsl:element name="{local-name()}">
<xsl:attribute name="idref">
<xsl:value-of select="document('')/*/dataTypes/dataType[(_at_)name =
current()]/@id"/>
</xsl:attribute>
</xsl:element>
</xsl:for-each>
</xsl:copy>
</xsl:template>
-----------------------------------------
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
----- Original Message -----
From: <Jarno(_dot_)Elovirta(_at_)nokia(_dot_)com>
To: <xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com>
Sent: Monday, October 20, 2003 9:31 AM
Subject: RE: [xsl] Reference problem
Hi,
The problem is with idref attribute. How am i going to refer
to these newly
created dataTypes nodes with their IDs ?it is possible or not ?
Thanks a lot.
Something in the lines of
<xsl:template match="/">
<document>
<dataTypes>
<xsl:apply-templates
select="document('')/*/x:dataTypes/dataType"/>
</dataTypes>
<xsl:apply-templates select="variables"/>
</document>
</xsl:template>
<xsl:template match="var">
<xsl:copy>
<xsl:apply-templates select="@name"/>
<xsl:for-each select="@type">
<xsl:element name="{local-name()}">
<xsl:attribute name="idref">
<xsl:value-of
select="document('')/*/x:dataTypes/dataType[(_at_)name = current()]/@id"/>
</xsl:attribute>
</xsl:element>
</xsl:for-each>
</xsl:copy>
</xsl:template>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<x:dataTypes>
<dataType id="1" name="string"/>
<dataType id="2" name="integer"/>
<dataType id="3" name="float"/>
</x:dataTypes>
Cheers,
Jarno - VNV Nation: Arclight
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list