Subject: Re: Remove parent node for the specific child nodes
From: "Andrew Welch" <andrew.j.welch@xxxxxxxxx>
Date: Tue, 12 Feb 2008 14:42:22 +0000
|
On 12/02/2008, Michael Daniloff <mdanilof@xxxxxxxxx> wrote:
> Using XSLT 1.0, MSXML
>
> I have to transform the following xml file:
>
> <sect>
> <p>
> <moveFromRangeStart w:id="22"/>
> <moveFrom id="23">
> <r>
> <t>want theparagraph to disappear</t>
> </r>
> </moveFrom>
> <p>
>
> <p>
> <r>
> <t>leave this</t>
> </r>
> <moveFromRangeStart w:id="24"/>
> <moveFrom id="25">
> <r>
> <t>more text here</t>
> </r>
> </moveFrom>
> <p>
>
> <p>
> <r>
> <t>leave this too</t>
> </r>
> <moveFromRangeStart w:id="29"/>
> <moveFrom id="30">
> <r>
> <t>more text to be removed here</t>
> </r>
> </moveFrom>
> <r>
> <t>and this</t>
> </r>
> <p>
> </sect>
>
> into this:
>
> <sect>
> <p>
> <r>
> <t>leave this</t>
> </r>
> <p>
>
> <p>
> <r>
> <t>leave this too</t>
> </r>
> <r>
> <t>and this</t>
> </r>
> <p>
> </sect>
>
> As you can see, I have to eliminate moveFrom and
> moveFromRangeStart nodes and if there are no any other
> siblings then remove the parent <p> node.
Use the identity template with:
<xsl:template match="moveFrom|moveFromRangeStart"/>
<xsl:template match="p[count(*) = count(moveFrom|moveFromRangeStart)]"/>
cheers
--
Andrew Welch
http://andrewjwelch.com
Kernow: http://kernowforsaxon.sf.net/
|