xsl-list
[Top] [All Lists]

Re: [xsl] Remove parent node for the specific child nodes

2008-02-12 08:00:32
On 12/02/2008, Michael Daniloff <mdanilof(_at_)yahoo(_dot_)com> 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/

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

<Prev in Thread] Current Thread [Next in Thread>