jpk writes:
I am in need of a transform that moves all instances
of a given element to the root level. So given the
target element name is 'br' and this as input:
<p>
<strong>
strong:text(top) <br/>prefix
<span style="a style">
span a
<span style="rgb();">
span b<br/> text
</span>
text
</span>
strong:text(btm) <br/>suffix<br/>
</strong>
Root level text with<br/> tag.
</p>
I want to get something like this:
<p>
<strong>
strong:text(top)
</strong>
<br/>
...
Just a guess:
1. Use the identity transformation to copy everything by default:
<xsl:template name="identity" match="@*|node()" mode="#all">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
2. Write a template for the p target element that augments the identity
transformation with its br descendants:
<xsl:template match="p">
<xsl:copy>
<xsl:apply-templates select="@*|node()|*//br"/ mode="copy">
</xsl:copy>
</xsl:template>
3. Plus a template to suppress the br elements in their original place
in the tree:
<xsl:template match="br" mode="#default">
</xsl:template>
I added the mode attributes to the templates last, to try to distinguish
when the identity and suppress templates should be applied to the br
elements.
--
Kevin Rodgers
--~------------------------------------------------------------------
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>
--~--