Re: Recursive substitution
At 02:55 PM 11/4/2005, you wrote:
<xsl:template match="ref[@name]"> <xsl:variable name="x"> <xsl:copy-of select="//define[@name=current()/@name]/*"/> </xsl:variable> <xsl:apply-templates select="$x"/> </xsl:template>
When you say this you are asking the processor to build a temporary tree containing copies of the 'define' elements you want, and then traverse them matching with templates.
But the temporary tree you have created does not include any 'define' elements for references that appear inside it (unless there happen to be circular references, in which case you're in trouble anyway).
Accordingly, the processor does not find those nodes to process and does not process them.
Solve your problem by creating a copy and processing it, but by continuing to apply templates to nodes in the original tree:
<xsl:template match="ref[@name]"> <xsl:apply-templates select="//define[@name=current()/@name]/*"/> </xsl:template>
And watch out for those endless loops!
Good luck, Wendell
PURCHASE STYLUS STUDIO ONLINE TODAY!
Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!
Download The World's Best XML IDE!
Accelerate XML development with our award-winning XML IDE - Download a free trial today!
Subscribe in XML format