![]() |
![]() | ![]() | ![]() | Altova Mailing List Archives>Archive Index >xsl-list Archive Home >Recent entries >Thread Prev - Re: [xsl] Recursive substitution >Thread Next - Re: [xsl] Recursive substitution [xsl] Recursive substitutionTo: Date: 11/4/2005 8:33:00 PM I've reformatted my question:
Input XML:
<x>
<define name="DEF1">
<reg name="REG1"/>
</define>
<define name="DEF2">
<reg name="REG2"/>
<ref name="DEF1"/>
</define>
<block name="block1">
<reg name="REG4"/>
<reg name="REG3"/>
<ref name="DEF2"/>
</block>
</x>
----------------------
Output Expected XML:
<block name="block1">
<reg name="REG4"/>
<reg name="REG3"/>
<reg name="REG2"/>
<reg name="REG1"/>
</block>
----------------------
But when I apply the following stylesheet I get the following: (Note the missing REG1 node)
<block name="block1">
<reg name="REG4"/>
<reg name="REG3"/>
<reg name="REG2"/>
</block>
----------------------
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:template match="*" >
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<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>
<xsl:template match="/*/define"/>
</xsl:stylesheet>
Thanks,
Anupam.
__________________________________
Yahoo! Mail - PC Magazine Editors' Choice 2005
http://mail.yahoo.com | ![]() | ![]() | ![]() |
| Company | Legal | Press | Partners | Careers | Sitemap | Contact Us | Altova Blog | |||
|
