RE: [xsl] Delete XML Node

Subject: RE: [xsl] Delete XML Node
From: "KIENLE, STEVEN C [IT/0200]" <steven.c.kienle@xxxxxxxxxxxxx>
Date: Thu, 31 Oct 2002 14:27:42 -0500
Deepak,

In case what you really want to do is output Y if and only if it has a Z
element node, the following transform will work:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
  <xsl:template match="/X">
    <X>
      <xsl:for-each select="A">
        <A>
          <xsl:value-of select="."/>
        </A>
      </xsl:for-each>
      <xsl:for-each select="Y[Z]">
        <Y>
          <xsl:for-each select="Z">
            <Z>
              <xsl:value-of select="."/>
            </Z>
          </xsl:for-each>
        </Y>
      </xsl:for-each>
    </X>
  </xsl:template>
</xsl:stylesheet>

This key is to use the XPath selection of "Y[Z]" which means all Y which
have a Z element.

With the input XML of:

<X>
  <A>A</A>
  <Y></Y>
</X>

The output will be:

<X>
  <A>A</A>
</X>

With the input XML of:

<X>
  <A>A</A>
  <Y>
    <Z>B</Z>
  </Y>
</X>

The output will be:

<X>
  <A>A</A>
  <Y>
    <Z>B</Z>
  </Y>
</X>

I hope this may help.

	Steve

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread