xsl-list
[Top] [All Lists]

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

2010-02-18 12:30:36

Two templates: an identity template that copies everything by default

<xsl:template match="*">
  <xsl:copy>
    <xsl:copy-of select="@*"/>
    <xsl:apply-templates/>
  </
</

and a template for the nodes you want to change:

<xsl:template match="b[a][count(child::node()=1]">
  <a>
    <b>
      <xsl:apply-templates select="a/child::node()"/>
    </b>
  </a>
</xsl:template>

Regards,

Michael Kay
http://www.saxonica.com/
http://twitter.com/michaelhkay 
 

-----Original Message-----
From: Kenneth Reid Beesley [mailto:krbeesley(_at_)gmail(_dot_)com] 
Sent: 18 February 2010 17:55
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Noobie: normalize <b><a>...</a></b> to 
<a><b>...</b></a>


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>

How can I do this?

Thanks,

Ken

******************************
Kenneth R. Beesley, D.Phil.
P.O. Box 540475
North Salt Lake, UT
84054  USA






--~------------------------------------------------------------------
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>
--~--



--~------------------------------------------------------------------
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>
--~--