syntax differences between match and select patterns
I read in the XSL (draft) spec (section 2.6) the following about patterns: " A pattern is a string which is matched against an element in the source document. " Then a paragraph down we read: " A pattern that is matched against an element is known as a match pattern. Patterns in xsl:template are match patterns. " And in the next paragraph: " A pattern can also be used to select a list of nodes; a pattern that is used for this is known as a select pattern. In a select pattern, there is a current node which provides a context for the selection. The pattern selects the list of the source nodes that match the pattern. Nodes in the selected list are in document order. Patterns in xsl:process, xsl:for-each and xsl:value-of are select patterns. " So there are two kinds of patterns, match and select patterns. However, what is very much less clear to me is which of the various "matching" syntaxes described in the subsections apply to one and the other. 2.6.1 Alternative Patterns 2.6.2 Matching on Element Ancestry 2.6.3 Anchors 2.6.4 Matching the Root Node 2.6.5 Matching on Element Types 2.6.6 Qualifiers 2.6.7 Matching on Children 2.6.8 Matching on Attributes 2.6.9 Matching on Position For instance, anchors can be used in both (section 2.6.3 states this explicitly), but then I try and use position patterns (2.6.9) in a select pattern (inside a choose pattern), as such <xsl:template match="invitation/body/par"> <xsl:choose> <xsl:when test="body/par[first-of-type()]"> <xsl:process-children/> </xsl:when> <xsl:when test="body/par[last-of-type()]"> <xsl:process-children/> </xsl:when> <xsl:otherwise> <fo:block> <xsl:process-children/> </fo:block> </xsl:otherwise> </xsl:choose> </xsl:template> This does not work, meaning that position matching (and probably a fwe of the other schemes) does not work for select patterns. Only section 2.6.3 and 2.6.8 make explicit reference to select patterns, so I am not sure which syntax is possible where. Thanks for pointing out where the precise syntax rules are explained in the draft spec. Michel Goossens 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