xsl-list
[Top] [All Lists]

Re: [xsl] Finding the closest preceding element within the containing block

2012-05-20 21:14:56
Did you get an answer yet?

I'm suspicious that what you want is
  preceding-sibling::c[1]


Assume a document structure like the one below. The "c" and "d"
elements are at the same level inside of "b" which is inside of
"a". Currently, I can find the first "c" in the "b" that encloses
"d". But that is too far away. I want to find the closest preceding
"c" within the surrounding "b" when processing the template for
element "d".

When executing the template for "d", my current path attempt is
(ancestor::a[1]//c)[1]

But, if there is no preceding "c" in the "b" element, I'd like to
detect that, and not find a "c" in any other "b". If I use just
"preceding::c", I might find a "c" in some other "b", which I don't
want.
<a>
   ...
   other elements
   ...
</a>
<a>
   ...
   other elements
   ...
</a>
<a>
   <b>
   ...
   </b>
   ...
   <b>
      ...
      <c/>   <---- My path gets this "c"
      ...
      <c/>
      ...
      <c/>   <---- I want this "c" when processing "d"
      ...
      <d/>
      ...
      <c/>
      ...
   </b>
   ...
   <b>
   ...
   </b>
</a>
<a>
   ...
   other elements
   ...
</a>
...

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

<Prev in Thread] Current Thread [Next in Thread>