| 
 
Subject: Re: [xsl] Moving nested elements to root level From: Kevin Rodgers <kevin.rodgers@xxxxxxx> Date: Fri, 27 May 2005 10:36:37 -0600  | 
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
| Current Thread | 
|---|
  | 
| <- Previous | Index | Next -> | 
|---|---|---|
| [xsl] Moving nested elements to roo, jpk | Thread | [xsl] Automatic html generation of , Frequent Fliers | 
| Re: [xsl] Automatic html generation, Frequent Fliers | Date | RE: [xsl] Encoding Issues with Java, Brook Ellingwood | 
| Month |