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 |