G'day Dion,
Short answer is yes that is what I am expecting.
I understand that by not copying across nodes, they are effectively
deleted. I save the xml file back onto itself.
Salud
john
-----Original Message-----
From: owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
[mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com] On Behalf Of
Dion Houston
Sent: Thursday, 31 July 2003 10:46 AM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: RE: [xsl] Deleting a node depending on contents of a
grandfather attribute and a child node
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(_at_)lists(_dot_)mulberrytech(_dot_)com
[mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com] On Behalf Of
John Reid
Sent: Wednesday, July 30, 2003 3:12 PM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: RE: [xsl] 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[(_at_)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(_at_)lists(_dot_)mulberrytech(_dot_)com
[mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com] On Behalf Of
John Reid
Sent: Wednesday, July 30, 2003 1:27 PM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] 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