This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: rendering a treeview *hairy problem*


Hi Mattias,

>> weee, this problem has been on my mind the last couple of days...
>> So roll up your sleeves and get your gray ones going, hopefully
>> they work better than mine :)
>
> No takers? aww come on, I was hoping this list would impress me with
> it's brilliance :)

Hey give us a chance - leave more than 4 hours between sending
messages and expecting a reply, especially if those 4 hours are when
those of us in Britain are asleep! :)

> I think I have the problem boiled down however. What I need to do is
> in each node go recursively through each parent and check whether it
> has any siblings.. but I'm not sure how to do that

You're looking for the ancestor:: axis, which gets all the ancestors
of the current node.

  <xsl:for-each select="ancestor::post">
     ...
  </xsl:for-each>

If that ancestor has any following siblings, then you need to add a
line, otherwise just a space:

  <xsl:choose>
     <xsl:when test="following-sibling::post">
        <img align="middle" src="/community/images/line.gif" />
     </xsl:when>
     <xsl:otherwise>
        <img align="middle" src="/community/images/space.gif" />
     </xsl:otherwise>
  </xsl:choose>

By the way, because of the built-in templates, the following:

  <xsl:for-each select="thread">
     <xsl:apply-templates />
  </xsl:for-each>

is equivalent to simply:

  <xsl:apply-templates />

and you never need to define:

 <xsl:template match="/">
     <xsl:apply-templates/>
 </xsl:template>

XSLT already has that built-in for you.

I hope that helps,

Jeni

---
Jeni Tennison
http://www.jenitennison.com/



 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]