Kenneth Reid Beesley wrote:
I'm converting a non-XML data-dump into XML, and the document contains
examples of both
<a><b>...</b></a>
and
<b><a>...</a></b>
which (in this document) are equivalent. I'd like to use XSLT to
convert all examples of the latter to the former, with the following
caveats:
1. <b> can contain mixed text, in which case nothing should be changed.
2. <b><a>...</a></b> should be changed to <a><b>...</b></a> only if the
<a>...</a> element is the unique child node of <b>...</b>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="b[a and not(a[2]) and not(node()[not(self::a)])]">
<a>
<b>
<xsl:apply-templates select="a/node()"/>
</b>
</a>
</xsl:template>
might suffice.
--
Martin Honnen
http://msmvps.com/blogs/martin_honnen/
--~------------------------------------------------------------------
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>
--~--