xsl-list
[Top] [All Lists]

RE: XML/XSL BreadCrumb Trail

2003-08-27 14:15:13
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> &gt; </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> &gt; </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



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