Subject: [xsl] Re: how to select elements based on their children's names? From: "Dimitre Novatchev" <dnovatchev@xxxxxxxxx> Date: Mon, 10 Mar 2003 22:42:52 +0100 |
> if i want to select all elements that have at least one, say, > "book" child element, it seems i can do it this way: > > //*[name(child::*) = "book"] long way > //*[name(*) = "book"] shorter way These are both wrong -- they match all elements whose *first* child's name is "book". Elements, which have a child named "book", but it doesn't happen to be the first child -- are not matched by these two expressions. An expression satisfying your requirements is: //*[book] > > 1) is this the easiest way to do it? No, because it is not at all a way to do it -- see above. > > 2) why doesn't the following work as well? > > //*[name(node()) = "book"] See above -- in addition this might not return any node, if the first child of any element happens to be one for which name() is the empty string -- e.g. a text node. XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] how to select elements ba, Michael Kay | Thread | Re: [xsl] Re: how to select element, Robert P. J. Day |
Re: [xsl] Re: how to select element, Robert P. J. Day | Date | [xsl] Re: How to filter nodes on at, Dimitre Novatchev |
Month |