This transformation:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:z="z:z" xmlns:rs="rs/rs"
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:call-template name="trail">
<xsl:with-param name="pNode" select="/*/*[(_at_)PageID='1003']"/>
</xsl:call-template>
</xsl:template>
<xsl:template name="trail">
<xsl:param name="pNode" select="."/>
<xsl:param name="pTrace"/>
<xsl:for-each select="$pNode[1]">
<xsl:variable name="vParent"
select="../*[(_at_)PageID = current()/@ParentID]"/>
<xsl:choose>
<xsl:when test="$vParent">
<xsl:call-template name="trail">
<xsl:with-param name="pNode"
select="$vParent"/>
<xsl:with-param name="pTrace"
select="concat(' > ', @PageTitle, $pTrace)"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="concat(@PageTitle, $pTrace)"/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
when applied on a well-formed variation of your example xml:
<rs:data xmlns:z="z:z" xmlns:rs="rs/rs">
<z:row PageID="1000" ParentID="0" PageTitle="Home"/>
<z:row PageID="1001" ParentID="1000" PageTitle="Page1"/>
<z:row PageID="1002" ParentID="1000" PageTitle="Page2"/>
<z:row PageID="1003" ParentID="1001" PageTitle="Page1.1"/>
</rs:data>
produces the wanted result:
Home > Page1 > Page1.1
---- "Bjorn Aune" <fortgjort(_at_)msn(_dot_)com> wrote:
Im having problems with developing a solution for breadcrumb trail
(navigation path - home > page 1 > page 1.1 > etc...) with xml data
and xsl.
The data is stored in a sql server and is placed in a XMLDOM
object......objRS.Save objXML, adPersistXML. The XML data is just a
recordset containing all the pages for the website.
Each row in the XML contains the following attributes/values:
- PageID
- ParentID
- PageTitle
<rs:data>
<z:row PageID="1000" ParentID="0" PageTitle="Home"/>
<z:row PageID="1001" ParentID="1000" PageTitle="Page1"/>
<z:row PageID="1002" ParentID="1000" PageTitle="Page2"/>
<z:row PageID="1003" ParentID="1001" PageTitle="Page1.1"/>
....
....
</rs:data>
In the XSL(T) object i have included some ASP parameters, the current PageID
and the parent PageID for the current page.
How should I design the XSL template to be able to get the following output
(if the current PageID = 1003):
Home > Page1 > Page1.1
Hope to hear from you!!
_________________________________________________________________
Hotmail snakker ditt språk!
http://www.hotmail.msn.com/cgi-bin/sbox?rru=dasp/lang.asp - Få Hotmail på
norsk i dag
=====
Cheers,
Dimitre Novatchev.
http://fxsl.sourceforge.net/ -- the home of FXSL
__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list