[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: Deleting a node depending on contents of a grandfa

Subject: RE: Deleting a node depending on contents of a grandfather attribute and a child node
From: "John Reid" <John.Reid@xxxxxxxxxxxxxxx>
Date: Thu, 31 Jul 2003 11:48:00 +1000
delete node xslt
G'day Dion,

'Nodes which do not have that from date will
not be copied.' yep.
Ie if from=$vardate do not copy across. In your example XML below you
are copying across where from=$vardate, rather than the reverse.

Ie
if $vardate="20030103" you should get this
node in the output:

<absent type="C">
	<to>20030921</to>
	<from>20030901</from>
</absent>

But not this one:

<absent type="D">
	<to>20030801</to>
	<from>20030103</from>
</absent>

salud

John

Howdy!

I may be confused or you may be... let's figure out which :)

Once again, let's not think of this as deleting a node, but rather as
copying nodes...  In my case, you are copying those nodes which have a
from with a certain date.  Nodes which do not have that from date will
not be copied.

In your example XML below, if $vardate="20030103" you should get this
node in the output:

<absent type="D">
	<to>20030801</to>
	<from>20030103</from>
</absent>

But not this one:

<absent type="C">
	<to>20030921</to>
	<from>20030901</from>
</absent>

Is that what you expect?

Dion



-----Original Message-----
From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx
[mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of John Reid
Sent: Wednesday, July 30, 2003 3:12 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: RE:  Deleting a node depending on contents of a
grandfather attribute and a child node

G'day Dion,
I understand the logic of what u say but I am confused a little
Should this statement
      <xsl:apply-templates select="absent[from=$vardate]"/>
 be
      <xsl:apply-templates select="absent[not(from=$vardate)]"/>
And
<xsl:template match="/"> I am not sure which node it would match to and
what it achieves

Salud

john
Hey John:

Keep in mind in XSLT that you don't delete nodes, you fail to copy them
to the output tree.  This is more than a semantic distinction, as it
suggests a different approach.

What you should do here is move the logic of whether to copy the nodes
to the appropriate parent and then apply templates on those nodes...
i.e.

<xsl:template match="/"> <!-- if this is the parent of parent nodes -->
   <xsl:apply-templates select="parent[@pword=$varpword]"/>
</xsl:template>

<xsl:template match="absentia">
   <xsl:copy>
      <xsl:apply-templates select="absent[from=$vardate]"/>
   </xsl:copy>
</xsl:template>

HTH!

Dion

-----Original Message-----
From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx
[mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of John Reid
Sent: Wednesday, July 30, 2003 1:27 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject:  Deleting a node depending on contents of a grandfather
attribute and a child node

Could I put this q up again?
:o)
i have tried a number of approaches but with various but not correct
results. I want to delete the absent node (and everything below it)
where $vardate = from and @pword $varpword.

Starting with:
<player pword='82345'>
<absentia>
<absent type="C">
	<to>20030921</to>
	<from>20030901</from>
</absent>
<absent type="D">
	<to>20030801</to>
	<from>20030103</from>
</absent>
</absentia>
<player>

ending with:
<player pword='82345'>
<absentia>
<absent type="D">
	<to>20030801</to>
	<from>20030103</from>
</absent>
</absentia>
<player>

tried this (along with about 10 variations):

<xsl:param name="vardate" select="0" />
<xsl:param name="varpword" select="0" />

<xsl:template match="@*|node()">
<xsl:copy>
    <xsl:apply-templates select="@*|node()"/>
  </xsl:copy>
</xsl:template>

<xsl:template match="absent">
    <xsl:variable name="date1" select="./from"/>
    <xsl:variable name="pword" select="ancestor::@pword"/>
    <xsl:copy>
      <xsl:apply-templates select="@*|node()[not($date1 = $vardate and
$pword = $varpword)]"/>
  </xsl:copy>
</xsl:template>


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


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




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


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




 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

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.