[Home] [By Thread] [By Date] [Recent Entries]
Please try this stylesheet:
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:redirect="http://xml.apache.org/xalan/redirect" extension-element-prefixes="redirect"> <xsl:output method="xml" /> <xsl:template match="/"> <xsl:apply-templates select="topic" /> <xsl:apply-templates select="//topic[count(ancestor::topic) = 1]" /> </xsl:template> <xsl:template match="topic">
<xsl:variable name="filename" select="concat(@id,'.xml')"/>
<redirect:write select="$filename">
<topic>
<xsl:copy-of select="@*" />
<xsl:apply-templates mode="x"/>
</topic>
</redirect:write>
</xsl:template><xsl:template match="topic[count(ancestor::topic) = 1]"> <xsl:variable name="filename" select="concat(@id,'.xml')"/> <redirect:write select="$filename"> <xsl:copy-of select="." /> </redirect:write> </xsl:template> <xsl:template match="*" mode="x">
<xsl:if test="not(self::topic)">
<xsl:copy>
<xsl:copy-of select="@*" />
<xsl:apply-templates mode="x" />
</xsl:copy>
</xsl:if>
</xsl:template></xsl:stylesheet> This when applied to XML: <topic id="1">
<title>Root level</title>
<prolog/>
<body>
<p>This is the root-level topic.</p>
</body>
<topic id="2a">
<title>Child level 2a</title>
<prolog/>
<body>
<p>This is child level 2a.</p>
</body>
<topic id="3a">
<title>Child level 3a</title>
<prolog/>
<body>
<p>This is child level 3a.</p>
</body>
</topic>
</topic>
<topic id="2b">
<title>Child level 2b</title>
<prolog/>
<body>
<p>This is child level 2b.</p>
</body>
<topic id="3b">
<title>Child level 3b</title>
<prolog/>
<body>
<p>This is child level 3b.</p>
</body>
</topic>
<topic id="3c">
<title>Child level 3c</title>
<prolog/>
<body>
<p>This is child level 3c.</p>
</body>
</topic>
</topic>
</topic>Produces 3 output files: 1.xml <?xml version="1.0" encoding="UTF-8"?> <topic id="1"> <title>Root level</title> <prolog/> <body> <p>This is the root-level topic.</p> </body> </topic> 2a.xml <?xml version="1.0" encoding="UTF-8"?>
<topic id="2a">
<title>Child level 2a</title>
<prolog/>
<body>
<p>This is child level 2a.</p>
</body>
<topic id="3a">
<title>Child level 3a</title>
<prolog/>
<body>
<p>This is child level 3a.</p>
</body>
</topic>
</topic>2b.xml <?xml version="1.0" encoding="UTF-8"?>
<topic id="2b">
<title>Child level 2b</title>
<prolog/>
<body>
<p>This is child level 2b.</p>
</body>
<topic id="3b">
<title>Child level 3b</title>
<prolog/>
<body>
<p>This is child level 3b.</p>
</body>
</topic>
<topic id="3c">
<title>Child level 3c</title>
<prolog/>
<body>
<p>This is child level 3c.</p>
</body>
</topic>
</topic>Hope this helps. -- Regards, Mukul Gandhi http://gandhimukul.tripod.com On 8/7/06, Mark Peters <flickrmeister@xxxxxxxxx> wrote: Hi guys,
|

Cart



