|
Subject: RE: [xsl] Count Ancestors Up To But Not Including a Given Type From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Tue, 5 Feb 2008 09:52:13 -0000 |
Perhaps
<xsl:for-each-group select="reverse(ancestor::*[self::ol|self::ul])"
group-adjacent="node-name()">
<xsl:if test="position()=1">
<xsl:sequence select="count(current-group())"/>
</xsl:if>
</xsl:for-each-group>
That is, partition the ancestors into runs of ol or ul, and then get the
length of the first run.
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: Eliot Kimber [mailto:ekimber@xxxxxxxxxxxx]
> Sent: 05 February 2008 07:18
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] Count Ancestors Up To But Not Including a Given Type
>
> Maybe it's the lateness of the hour but I'm finding myself
> stymied on what I hope is relatively simple check.
>
> In DITA, as in many doctypes, you can have nested lists of the form:
>
> <ol>
> <li>
> <ol>
> <li>
> </li>
> </ol>
> </li>
> </ol>
>
> As well as an intermixing of different list types, e.g.:
>
> <ol>
> <li>
> <ul>
> <li>
> <ol>
> <li>
>
>
> What I need to do is determine, for a given li, its depth of
> nesting within unbroken ancestry of a given list type.
>
> Thus, int the first example, the deepest li is a level 2
> because it has two ancestor <ol> elements with no intervening
> <ul> (or other non-list element that might occur within <li>
> and itself contain a list). In the second example, the
> deepest <li> is a level one because there is an intervening
> <ul> between the two <ol> ancestors.
>
> I can't for the life of me figure out either a single
> expression or a recursive function that will return the
> correct answer.
>
> What bit of logic am I failing to see? I am using XSLT 2.
>
> Thanks,
>
> ELiot
>
> --
> Eliot Kimber
> Senior Solutions Architect
> "Bringing Strategy, Content, and Technology Together"
> Main: 610.631.6770
> www.reallysi.com
> www.rsuitecms.com
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| [xsl] Count Ancestors Up To But Not, Eliot Kimber | Thread | RE: [xsl] Count Ancestors Up To But, Wendell Piez |
| Re: [xsl] Browser support for X-lin, Colin Adams | Date | Re: [xsl] strip-spaces, David Carlisle |
| Month |