Hi
-----Original Message-----
From: owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
[mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com] On Behalf Of
Bjorn Aune
Sent: Wednesday, August 27, 2003 11:22 AM
To: XSL-List(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] XML/XSL BreadCrumb Trail
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!!
Try this:
<xsl:param name="pageID" select="1003"/>
<xsl:key name="menu" match="z:row" use="@PageID"/>
<xsl:template match="rs:data">
<xsl:apply-templates select="z:row[(_at_)PageID=$pageID]"/>
</xsl:template>
<xsl:template match="z:row">
<xsl:if test="not(@ParentID=0)">
<xsl:apply-templates mode="menu" select="key('menu',@ParentID)"/>
<xsl:text> > </xsl:text>
</xsl:if>
<xsl:value-of select="@PageTitle"/>
</xsl:template>
<xsl:template match="z:row" mode="menu">
<xsl:if test="not(@ParentID=0)">
<xsl:apply-templates mode="menu" select="key('menu',@ParentID)"/>
<xsl:text> > </xsl:text>
</xsl:if>
<xsl:value-of select="@PageTitle"/>
</xsl:template>
You'll need to bind the rs and z prefixes to the namespaces used by SQL
Server
Regards,
Americo Albuquerque
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list