xsl-list
[Top] [All Lists]

RE: Generating HTML <link> navigation

2004-10-22 05:31:30
I believe I might have scared of any replies by giving to much unecessary details to the specific problem I'm trying to solve, so I wish to try and simplify my question. I hope this may make it easier to understand my difficulty.

I have the current list of elements;
<xsl:variable name="list">
<li id="1" href="one.html" />
<li id="2" href="two.html" />
<li id="3" href="three.html" />
<li id="4" href="four.html" />
</xsl:variable>

<xsl:variable name="id" select="3" />

What I would like to do is extract the two neighbouring elements, the one before and after, a specific element I am looking up. So say I want to look up the element with @id=3, I would then like to retrieve the @href value of id=(_at_)2 and id=(_at_)4(_dot_) My actuall problem does not use sequential numbers as @id's, so I can not use arithmetic on the @id value.

I can retrieve the element with a specific @id with the follwing expression:
<xsl:variable name="li" select="exsl:node-set($list)/li[(_at_)id=$id]/@href" />

What I don't understand is how to get the neighbouring elements. I believe I have to use the axis following-sibling:: and preceding-sibling::, but I can't come up with the exact XPath expression. Based on the logic for retrieving a specific element attribute value my current _non_working_ expression for retrieving neighbour values are;

<xsl:variable name="prev" select="exsl:node-set($list)/following-sibling::li[(_at_)id=$id][1]/@href" /> <xsl:variable name="next" select="exsl:node-set($list)/preceding-sibling::li[(_at_)id=$id][1]/@href" />

What would be the correct way to retrieve the neighbouring element values realtive to one specific element?

Thank you for your help.

Best regards,
Mario Caprino

_________________________________________________________________
FREE pop-up blocking with the new MSN Toolbar ? get it now! http://toolbar.msn.click-url.com/go/onm00200415ave/direct/01/



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