|
Subject: RE: [xsl] Delete XML Node From: "KIENLE, STEVEN C [IT/0200]" <steven.c.kienle@xxxxxxxxxxxxx> Date: Thu, 31 Oct 2002 16:14:50 -0500 |
Replace the for each with the Y[Z] with the following:
<xsl:for-each select="Y[child::*]">
<xsl:copy-of select="." />
</xsl:for-each>
This will fire only for those Y which have children. Then it makes a deep
copy of that node.
If you need this logic to apply you node more than Y, then you may want to
look at multiple templates instead of for-each elements.
-----Original Message-----
From: Deepak Rao [mailto:deepaksubs@xxxxxxxxxxx]
Sent: Thursday, October 31, 2002 4:04 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: RE: [xsl] Delete XML Node
Whoops, I shot myself in the foot here....
sorry folks I am new to XSL.... and pardon my ignorrance
To clarify things, I want an XSL which would output a <Y> if and only if it
has a sub element in this case a <Z>. In the current example I have only one
sub element <Z> but there can be more than one sub-element of <Y>.
e.g.
<Y>
<Z></Z>
<D></D>
......
</Y>
I do not want <Y></Y> to appear in the output if all the sub-elements do not
map.
Thanks,
Deepak
>From: "KIENLE, STEVEN C [IT/0200]" <steven.c.kienle@xxxxxxxxxxxxx>
>Reply-To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
>To: "'xsl-list@xxxxxxxxxxxxxxxxxxxxxx'" <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
>Subject: RE: [xsl] Delete XML Node
>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
_________________________________________________________________
Internet access plans that fit your lifestyle -- join MSN.
http://resourcecenter.msn.com/access/plans/default.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
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| RE: [xsl] Delete XML Node, Wendell Piez | Thread | RE: [xsl] Delete XML Node, Deepak Rao |
| RE: [xsl] Delete XML Node, Deepak Rao | Date | [xsl] Re: variables in XSLT, karan bhasin |
| Month |