xsl-list
[Top] [All Lists]

RE: [xsl] Pattern question: first child of first descendant

2009-03-24 04:32:33

I think it's

match="entry[. is
ancestor::table[1]/descendant::entry[1]]/*[self::title|self::para][1]"

Note the use of "is" rather than "=".

When matching complex patterns like this, it's sometimes best to preselect
all the matching elements into a global variable:

<xsl:variable name="initial-paras"
select="//table/descendant::entry[1]/*[self::title|self::para][1]"/>

<xsl:template match="*[. intersect $initial-paras]">

See also http://www.w3.org/Bugs/Public/show_bug.cgi?id=5464

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


-----Original Message-----
From: Christian Roth [mailto:roth(_at_)visualclick(_dot_)de] 
Sent: 24 March 2009 01:10
To: XSL List
Subject: [xsl] Pattern question: first child of first descendant

Hello,

I am looking for a pattern that does "match the first title 
or para child of the first entry descendant of a table 
element". I'm using XSLT2.

The pattern I have come up with so far is

match="*[self::para or self::title][parent::entry = 
(ancestor::table[1]// entry)[1]][1]"

It seems to work, but looks a little cumbersome to me. Is 
there a better way to express that match?

- Christian


--~------------------------------------------------------------------
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>
--~--



--~------------------------------------------------------------------
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>
--~--