[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: union operator and predicates in XSLT patterns
On 24/01/2011 17:06, HILLMAN, Tomos wrote: > Hi; just a quick query for my own understanding. Apologies if I've gotten the wrong list. > > I wanted to use both a union and operator in an XLST template, i.e. match="(div1|div2)[not(@role)]" (simplified). > > This is, I think, equivalent in XPath 2.0 as "/*//(div1|div2)[not(@role)]", which I would expect to follow the rule for patterns in XSLT (the node $N matches pattern PAT if $N is a member of expression "root($N)//(PAT)". However, this shows as invalid. > > Can someone explain this to me? :) > One of the reasons for the restriction that "|" is allowed only as the top-level operator in an XSLT pattern is that it affects the algorithm for computing the default priority of the template rule. You can write this pattern as div1[not(@role)] | div2[not(@role)] or as *[not(@role)][self::div1 or self::div2] (In Saxon, the first version will perform better). Michael Kay Saxonica
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] |
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
|