|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Moving nested elements to root level
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
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








