[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Matching braches without a certain node
Hi Ted, > <xsl:for-each select="//middle"> > <xsl:if test="not (foo[node()]"> > [Whatever I want to do] > </xsl:if> > </xsl:for-each> The expression not (foo[node()] has unbalanced brackets and will generate an error from the XSLT processor. More importantly, after you add the missing closing ')', this will not eliminate all "nodes that _don't_ have the 'foo' node" . It will return a node-set of all child elements that do not have a 'foo' child with a node child. So, in case you add another 'middle' element (id=4) at the end of your xml document, like the following: <top> <middle id="1"> <data>value</data> <foo>bar</foo> </middle> <middle id="2"> <data>value</data> </middle> <middle id="3"> <data>value</data> <foo>bar</foo> </middle> <middle id="4"> <data>value</data> <foo/> </middle> </top> Then the expression //middle[not (foo[node()])] returns a nodeset of two elements: <middle id="2"> <data>value</data> </middle> and <middle id="4"> <data>value</data> <foo/> </middle> As you can see, the second node in the returned node-set still has a 'foo' child. The expression that will return all 'middle' elements that do not have a 'foo' child is: //middle[not(foo)] Dimitre Novatchev. Theodore Weatherly wrote: Suppose we have this XML: <top> <middle id="1"> <data>value</data> <foo>bar</foo> </middle> <middle id="2"> <data>value</data> </middle> <middle id="3"> <data>value</data> <foo>bar</foo> </middle> </top> I want to match the 'middle' nodes that _don't_ have the 'foo' node (id==2). This seems to work: <xsl:template match="/"> [stuff before] <xsl:for-each select="//middle"> <xsl:if test="not (foo[node()]"> [Whatever I want to do] </xsl:if> </xsl:for-each> </xsl:template> (You get the general idea.) Isn't there any simpler way to do this?? I'd rather do something where, in one line, I match the 'middle' nodes without the 'foo' tag, and then do an unconditional loop over these nodes. Thanks! -Ted __________________________________________________ Do You Yahoo!? Yahoo! Shopping - Thousands of Stores. Millions of Products. http://shopping.yahoo.com/ XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|