RE: [xsl] Count Ancestors Up To But Not Including a Given Type

Subject: RE: [xsl] Count Ancestors Up To But Not Including a Given Type
From: "Bjorndahl, Brad" <brad.bjorndahl@xxxxxxxxxxxxxxxx>
Date: Tue, 5 Feb 2008 12:33:30 -0500
Hi,

I'm transforming DITA too. Yes, it's quite wide open in some repects.

To keep track of how deeply nested I am, I initialize tunnel variables (such
as OLdepth and Uldepth) at the topic element, and increment them when I hit
elements such as ol ($OLdepth + 1) or ul ($ULdepth + 1).
When you are in the li element, include the param statements, remembering to
always specify tunnel="yes". Check the parent to see which value you want.
I think this is what tunnel variables are for.

Brad


-----Original Message-----
From: Eliot Kimber [mailto:ekimber@xxxxxxxxxxxx]
Sent: February 5, 2008 2:18 AM
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