RE: [xsl] XPath for matching multiple child elements

Subject: RE: [xsl] XPath for matching multiple child elements
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Thu, 28 Sep 2006 17:49:39 +0100
> <xsl:template match="comments//(h1|p|b|i)">
> 
> A syntax like that would be much more fun to maintain and 
> adjust than writing out all of the combinations, like so:
> 
> <xsl:template match="comments//h1 | comments//p | comments//b 
> | comments//i">
> 
> I'm using XSLT 2.0 and SaxonB 8.something.  Is there some 
> obvious solution that I have missed?

Unfortunately while the above is legal in XPath 2.0 in an expression, it's
still not allowed in a pattern - the syntax of patterns is much more
restrictive.

If you've got a schema then you might find that the elements you want to
match are all members of the same substitution group, in which case you can
write comments//schema-element(inline) where "inline" is the head of the
substitution group. Or the elements might all have the same type, in which
case you can write comments//element(*, inlineType).

Michael Kay
http://www.saxonica.com/

Current Thread