xsl-list
[Top] [All Lists]

RE: Delete XML Node

2002-10-31 12:02:53
Hi Deepak!

Perhaps I'm missing something, but... Your XSLT (reformatted for clarity)

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
  <xsl:template match="/">
    <X>
      <xsl:for-each select="X/A">
        <A>
          <xsl:value-of select="."/>
        </A>
      </xsl:for-each>
<!-- Comment this section out to not have a Y element -->
      <Y>
        <xsl:for-each select="X/Y/Z">
          <Z>
            <xsl:value-of select="."/>
          </Z>
        </xsl:for-each>
      </Y>
<!-- end of section -->
    </X>
  </xsl:template>
</xsl:stylesheet>

Is putting in a <Y> element because you're explicitly telling it to.  Just 
remove the section I commented to not output that element.

HTH!

Dion


-----Original Message-----
From: Deepak Rao [mailto:deepaksubs(_at_)hotmail(_dot_)com] 
Sent: Thursday, October 31, 2002 10:13 AM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Delete XML Node

Hi,

I am converting XML to XML using XSL. I am facing a problem as mentioned 
below. Can anyone pl help with writing a correct XSL for solving the 
problem.

Thanks,
Deepak

For e.g.

The Schema
----------
<xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema'>

<xsd:element name='A' type='xsd:string'>
</xsd:element>

<xsd:element name='Z'>
  <xsd:complexType/>
</xsd:element>

<xsd:element name='Y'>
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref='Z'/>
   </xsd:sequence>
  </xsd:complexType>
</xsd:element>

<xsd:element name='X'>
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref='A'/>
    <xsd:element ref='Y'/>
   </xsd:sequence>
  </xsd:complexType>
</xsd:element>
</xsd:schema>

The input XML
-------------
<X>
    <A>A</A>
    <Y></Y>
</X>

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

The output is
-------------
<?xml version='1.0' ?>
<X>
<A>A</A>
<Y/>
</X>

But I desire the output
-----------------------
<?xml version='1.0' ?>
<X>
<A>A</A>
</X>

_________________________________________________________________
Get a speedy connection with MSN Broadband.  Join now! 
http://resourcecenter.msn.com/access/plans/freeactivation.asp


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


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



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