Subject: RE: [xsl] Copying and updating selectively From: Américo Albuquerque <melinor@xxxxxxx> Date: Sat, 26 Jul 2003 14:23:53 +0100 |
Hi > -----Original Message----- > From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx > [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of John Reid > Sent: Saturday, July 26, 2003 11:49 AM > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: RE: [xsl] Copying and updating selectively > > > Um some small changes, but still no result. The first > apply-template gets applied, does it then apply itself > recursively,without falling thru to the next apply-template? > If so does the copy statement build a structure that is then > applied once the recursion ends?? > > <xsl:template match="player/dates"> > <xsl:copy> > <xsl:apply-templates > select="@*|node()[not(../@pword=$varPMKey)]"/> > <xsl:apply-templates select="@*|node()[yes/@ID < $varFrom]"/> > <xsl:apply-templates select="@*|node()[yes/@ID > > $varTo]"/> </xsl:copy> </xsl:template> > > g'day, > > i got so far with this and then came up empty. I want to > update/copy a xml file updating any yes node to null (i guess > deleting the text node is the better way to put it). So that > i start with ONE and end with TWO on the condition that the > @ID date is within the two date parameters. The code at the > bottom is my starting attempt. The two date parameters are > $varFrom=20030806 and $varTo=20030814 > > any thoughts > > salud John Reid This is a variation of the identity template. Copy all nodes and change just that you want to change <xsl:param name="varFrom" select="'20030809'"/> <xsl:param name="varTo" select="'20030812'"/> <xsl:template match="node()|@*"> <xsl:copy> <xsl:apply-templates select="node()|@*"/> </xsl:copy> </xsl:template> <xsl:template match="yes"> <!-- this variable is been used as a shortcut to current()/@ID in the select statement --> <xsl:variable name="id" select="@ID"/> <xsl:copy> <!-- here I'm sellecting all non text nodes, all text nodes if the current node ID attribute is not between $varFrom and $varTo and all attribute nodes --> <xsl:apply-templates select="node()[not(self::text())] | text()[not($id >= $varFrom and $id <= $varTo)] | @*"/> </xsl:copy> </xsl:template> Applied to (the A's is to see if those nodes get copied or not): <player> <dates> <yes ID="20030722" WE="Tu">A</yes> <yes ID="20030729" WE="Tu">A</yes> <yes ID="20030805" WE="Tu">A</yes> <yes ID="20030809" WE="Sa">D</yes> <yes ID="20030810" WE="Su">D</yes> <yes ID="20030812" WE="Tu">D</yes> <yes ID="20030819" WE="Tu">A</yes> <yes ID="20030826" WE="Tu">A</yes> </dates> </player> Will give this result (no D's): <player> <dates> <yes ID="20030722" WE="Tu">A</yes> <yes ID="20030729" WE="Tu">A</yes> <yes ID="20030805" WE="Tu">A</yes> <yes ID="20030809" WE="Sa"/> <yes ID="20030810" WE="Su"/> <yes ID="20030812" WE="Tu"/> <yes ID="20030819" WE="Tu">A</yes> <yes ID="20030826" WE="Tu">A</yes> </dates> </player> (...) Regards, Américo Albuquerque XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Copying and updating sele, John Reid | Thread | RE: [xsl] Copying and updating sele, John Reid |
RE: [xsl] Copying and updating sele, John Reid | Date | AW: [xsl] using variable in order a, Markus Abt |
Month |