[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: XPath for matching multiple child elements
Will,
At 12:49 PM 9/28/2006, Mike wrote: > <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? 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. (It worked in a little test instance I tried.) Basically the predicate says "match this if it's one of the $comment-elements". Another way to do this is with XSLT 2.0 pipelining. Pass the document through an identity transform that flags the elements with an attribute; then on the second pass match the elements that have the attribute. That might work better in cases where you have many different kinds of these things. I hope that helps. Cheers, Wendell
|
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
|