xsl-list
[Top] [All Lists]

RE: [xsl] XPath for matching multiple child elements

2006-09-28 15:55:51
But it's free enough to support a bit of a workaround, even 
if you have no schema:

<xsl:variable name="comment-elements" 
select="//comments//(h1|p|b|i)"/>

<xsl:template match="*[exists(. intersect $comment-elements)]">
    ...
</xsl:template>

I think this should work. 

Yes, but it might have fairly horrible performance.

I don't know how other processors work, but with Saxon, patterns are a lot
more efficient if they identify the element names that match, because Saxon
basically does a hash lookup on the node kind and then on the node name. Any
match="*" pattern gets tested against every node; and in this case that will
involve a serial search through the list of h1|p|b|i elements, which is
distinctly O(n^2). Not worth the savings in keystrokes.

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


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--