xsl-list
[Top] [All Lists]

Re: [xsl] Noobie: normalize <b><a>...</a></b> to <a><b>...</b></a>

2010-02-18 12:09:50
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>
--~--