|
Subject: Re: [xsl] Recursive substitution From: David Carlisle <davidc@xxxxxxxxx> Date: Tue, 1 Nov 2005 22:36:50 GMT |
I see you're using 2.0, it's best to say explictly if you want a 2.0
answer as the current version is still 1.0 (2.0 is still in draft)
I don't think you need to keep copying nodes and build copies of the
tree, you want to recursively walk over the existing tree not copy
branches of it:
<x>
<define name="DEF1">
<reg name="REG1"/>
</define>
<define name="DEF2">
<reg name="REG2"/>
<ref name="DEF1"/>
</define>
<block name="block1">
<reg name="REG3"/>
<ref name="DEF2"/>
</block>
</x>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name="r" match="define" use="@name"/>
<xsl:template match="x">
<xsl:apply-templates select="block"/>
</xsl:template>
<xsl:template match="reg">
Register: <xsl:value-of select="@name"/>
</xsl:template>
<xsl:template match="ref">
<xsl:apply-templates select="key('r',@name)"/>
</xsl:template>
</xsl:stylesheet>
$ saxon8 ref.xml ref.xsl
<?xml version="1.0" encoding="UTF-8"?>
Register: REG3
Register: REG2
Register: REG1
________________________________________________________________________
This e-mail has been scanned for all viruses by Star. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| [xsl] Recursive substitution, Agnisys | Thread | Re: [xsl] Recursive substitution, Agnisys |
| Re: [xsl] Processing IDREFS attribu, Dan Vint | Date | Re: [xsl] Processing IDREFS attribu, Dan Vint |
| Month |