Subject: RE: [xsl] xsl needed: sibilings with different parents From: "Michael Kay" <mhk@xxxxxxxxx> Date: Wed, 8 Sep 2004 08:36:04 +0100 |
> ><xsl:for-each select="BB/BB1"> > ><xsl:copy-of > >select="/root/AA/AA1[/BB/BB1[position()]]"/> > ></xsl:for-each> > > You are using position() as a standalone expression for a > predicate. All > predicates are converted to boolean true()/false() before they are > used. The position() function always returns a positive > number, hence will > always be converted to boolean true(). This qualifies all > BB1 children of > BB that may be present. Ken is right that [position()] won't work, but he hasn't explained the reason very clearly. Any predicate that is the numeric value [N] is treated as shorthand for [position()=N], so the predicate [position()] is short for [position()=position()] which of course is always true. Generally speaking, any operation involving combining or comparing two node-sets needs variables, except for a limited class of joins that can be handled using the implicit existential semantics of operators like "=". Perhaps someone better versed in predicate logic than I am can explain why this is true. Michael Kay
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] xsl needed: sibilings wit, G. Ken Holman | Thread | [xsl] FYI: new early beta release (, Pieter Reint Siegers |
Re: [xsl] CONVERT XSLT (HTML > XSL-, Braumüller, Hans | Date | RE: [xsl] global find and replace c, Michael Kay |
Month |