|
Subject: RE: [xsl] recursion with xsl:apply-templates From: "Andrew Welch" <AWelch@xxxxxxxxxxxxxxx> Date: Wed, 27 Aug 2003 12:32:19 +0100 |
> Anyway, my primary problem remains. Any ideas?
> Volker.
I would use a variable here, then query that for each id.
Something like:
<xsl:variable name="indexToIDs">
<xsl:for-each select="//*[@index]">
<xsl:variable name="pos" select="position()"/>
<entry genid="{generate-id()}"
id="{/transformation/id_list/id[$pos]}"/>
</xsl:for-each>
</xsl:variable>
Which will give you an RTF of elements like this:
<entry genid="abc" id="2003..."/>
<entry genid="foo" id="2004..."/>
Then you should perform an identity transform on your source, with an
extra template handling elements with @index.
In that template query the rtf (or more to the point, query a variable
that is a nodeset of the rtf) using the generated id of the current
element for its id, and construct your output how you want it, something
like:
The identity transform:
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
The template to handle the special case:
<xsl:template match="*[@index]">
<xsl:variable name="genid" select="generate-id()"/>
<xsl:copy>
<xsl:copy-of select="$indexToIDsNodeSet/entry[@genid =
$genid]/@id"/>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
A template to supress @index
<xsl:template match="@index"/>
cheers
andrew
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] recursion with xsl:apply-, Volker Witzel | Thread | RE: [xsl] recursion with xsl:apply-, Andrew Welch |
| RE: [xsl] URL rewriting with sessio, Michael Kay | Date | Re: [xsl] recursion with xsl:apply-, David Carlisle |
| Month |