I have several XML files like the following:
<!-- CNs-->
<Ns>
<!--CN1-->
<N name="N1">
<Ms>
<!--C1N3-->
<M name="1N3"/>
<!--C1N1-->
<M name="1N1"/>
<!--C1N2-->
<M name="1N2"/>
</Ms>
</N>
<!--CN2-->
<N name="N2">
<Ms>
<!--C2N2-->
<M name="2N2"/>
<!--C2N3-->
<M name="2N3"/>
<!--C2N1-->
<M name="2N1"/>
</Ms>
</N>
</Ns>
I'd like to sort them while keeping comments with the nodes they refer
to (e.g., keep <!--CN2--> with <M name="2N2"/>).
I've tried the following xslt:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes" method="xml"/>
<xsl:template match="node() | @*">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Ns">
<xsl:copy>
<xsl:apply-templates select="comment()| N" >
<xsl:sort select="@name"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
It sorts fine but puts the comments for all the N nodes together at
the top of the Ns element. I've played around with trying to group the
comments and N nodes using preceding-sibling but have not been
succesful.
Any ideas?
Thanks
--
Mike Blake-Knox
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--