Subject: Re: [xsl] xsl:for-each...iteration question From: Mukul Gandhi <mukul_gandhi@xxxxxxxxx> Date: Tue, 19 Apr 2005 10:12:37 -0700 (PDT) |
Hi Paul, Please also try this XSL.. You may like it.. <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="xml" indent="yes" /> <xsl:variable name="exclude" select="document('exclude.xml')" /> <xsl:template match="node() | @*"> <xsl:copy> <xsl:apply-templates select="node() | @*" /> </xsl:copy> </xsl:template> <xsl:template match="*[@attr-name = $exclude/exclude-list/exclude-attr]" /> </xsl:stylesheet> This is a modified identity stylesheet.. The 2nd template excludes those elements, whose attr-name attribute has value matching that in exclude file.. I have found.. identity template is a really powerful piece of code which lets us do complex things.. Regards, Mukul --- Paul Coletti <pcoletti@xxxxxxxxxx> wrote: > This has been answered before I'm sure but doing a > relevant search in the archives is tricky. > > I've an input doc containing a number of modify-attr > elements > <modify> > <modify-attr attr-name = "abc"/> > <modify-attr attr-name = "123"/> > <modify-attr attr-name = "789"/> > </modify> > > I have another document containing a list of > prohibited attributes. > <exclude-list> > <exclude-attr>123</exclude-attr> > </exclude-list> > > > I want to iterate over my input doc and copy all > those modify-attr elements that are NOT in the > exclude list to the output. > > <xsl:template match="modify/modify-attr"> > <xsl:variable name="currentAttr" > select="@attr-name"/> > <xsl:variable name="currentNode" select="."/> > > <xsl:for-each > select="document('excludedoc')/exclude-list/exclude-attr"> > <xsl:when test="$currentAttr=."> > <xsl:message>Exclude</xsl:message> > </xsl:when> > <xsl:otherwise> > <xsl:copy-of select="$currentNode"/> > </xsl:otherwise> > </xsl:for-each> > > </xsl:template> > > Obvisouly, this is flawed, I get multiple > modify-attr elements copied to the output because I > cannot see a way of ensuring the for-each only > copies a permitted node once and once only. > > I've a feeling this is approaching the problem from > the wrong way.... > > __________________________________ Do you Yahoo!? Plan great trips with Yahoo! Travel: Now over 17,000 guides! http://travel.yahoo.com/p-travelguide
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] xsl:for-each...iteration , Aron Bock | Thread | RE: [xsl] xsl:for-each...iteration , cknell |
Re: [xsl] xsl:for-each...iteration , David Carlisle | Date | RE: [xsl] xsl:for-each...iteration , cknell |
Month |