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