RE: [xsl] Ideal XML Site tree layout

Subject: RE: [xsl] Ideal XML Site tree layout
From: "John Hamman" <John@xxxxxxxxxxxxxxxxx>
Date: Wed, 21 Apr 2004 09:58:23 -0400
I realized I wasn't clear on my question.
What im looking for is to make a single file (xml) that list all the 
Directorys and links for a medium to large site. My original thought is to
do what DMOZ did with the directory but im not sure this is the best way. I
would like to find the most efficient and possibly proven way to do this.
john

-----Original Message-----
From: Emmanuil Batsis (Manos) [mailto:mbatsis@xxxxxxxxxxx] 
Sent: Wednesday, April 21, 2004 3:47 AM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: Re: [xsl] Ideal XML Site tree layout

Although what you are after is not clear to me, Apache Cocoon's sitemap 
may be very interesting to you (as a study or solution).

hth,

Manos

John Hamman wrote:
> I ask this in xsl because I need a xml file that will list an entire
> (enterprise size) site in one file and be easily sorted via xsl.
> Do anyone have any ideas on a good framework for this?
> john
> 
> -----Original Message-----
> From: Robert Koberg [mailto:rob@xxxxxxxxxx] 
> Sent: Sunday, April 18, 2004 10:15 AM
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Re: [xsl] Dmoz xml structure sort
> 
> Hi,
> 
> I think you are on the right track, but I would suggest changing your 
> schema a bit. I would organize your topics hierarchically and have a 
> unique ID and a name (names are more likely to have duplicates) 
> attribute, like:
> 
> <topic id="t123" name="Base">
>    <Title local="en-US">Home</Title>
>    <topic id="t234" name="General_Information">
>      <topic id="t345" name="About_us">
> 
>      </
>      <topic id="t346" name="Contact_us">
> 
>      </
>    </
> </
> 
> With this structure you will be able to many more things than you have 
> probably thought of at this point and you do not need to list the 
> //narrow elements because they are now there. This means you can move 
> things around and you wont' have to edit your topics config.
> 
> Now, on to some XSL:
> 
> First thing to do is create a top level key:
> 
> <xsl:key name="topics" match="topic" use="@id"/>
> 
> Then I usually pass the 'focus' id into the transformation as a 
> parameter, so if you can do that you can get your focus topic in a top 
> level variable:
> 
> <xsl:variable
>    name="focus_topic"
>    select="key('topics', $focus_topic_id)"/>
> 
> <xsl:variable
>    name="focus_parent"
>    select="key('topics', $focus_parent_id)"/>
> 
> Then you can use this variable throughout your transformation to find 
> your topic context. You can ensure you always have valid links by first 
> going to the linked topic nodeset and then traveling up and down the 
> topic hierarchy to find the path. Say you want to create a nav thingy - 
> you can do it like so:
> 
> <xsl:template match="/">
>    <html>
>      <xsl:call-template name="head"/>
>      <body>
>        <div id="pageBody">
>          <xsl:call-template name="banner"/>
> 
>          <div id="navColumn">
> 
>            <xsl:apply-templates
>              select="$focus_parent/*"
>              mode="navigation"/>
> 
>          </div>
> 
>          <div id="contentWrapper">
>            <xsl:appl
>          <xsl:call-template name="footer"/>
>        </div>
>      </body>
>    </html>
> </xsl:template>
> 
> 
> <!-- match the children of the focus parent-->
> <xsl:template match="*" mode="navigation">
> 
>    <xsl:variable name="href">
>      <xsl:call-template name="topic_path_builder"/>
>    </
> 
>    <xsl:choose>
>      <xsl:when test="not(@id=$focus_topic_id)">
>        <div>
>          <a href="{$href}">
>            <xsl:value-of select="@label"/>
>          </a>
>        </div>
>      </
>      <xsl:otherwise>
>        <div class="selected">
>          <a href="{$href}">
>            <xsl:value-of select="@label"/>
>          </a>
>        </div>
>      </
>    </
> </
> 
> <xsl:template name="topic_path_builder">
>    <xsl:call-template name="ancestor_path"/>
>    <xsl:text>/</xsl:text>
>    <xsl:value-of select="@name"/>
> </xsl:template>
> 
> <!-- root relative paths,
> you could do document relative paths too-->
> 
> <xsl:template name="ancestor_path">
>    <xsl:for-each select="ancestor::*">
>      <xsl:text>/</xsl:text>
>      <xsl:value-of select="@name"/>
>    </xsl:for-each>
> </xsl:template>
> 
> make sense?
> 
> best,
> -Rob
> 
> 
> 
> John Hamman wrote:
> 
> 
>>Hi all.
>>I have a navigational site tree xml page similar to Dmoz.org.
>>And its made up like this below. I am new to xpath and am having problems
>>finding a solution to this.
>>
>>My file looks similar to this.
>>
>><Topic id="Base">
>>			<tag catid="1"/>
>>			<Title local="en-US">Home</Title>
>>			<narrow resource="Base/General_Information"/>
>>			<narrow resource="Base/StudentLife"/>
>>			<narrow resource="Base/Missions"/>
>>			<narrow resource="Base/Community"/>
>>			<narrow resource="Base/Academics"/>
>>			<narrow resource="Base/News"/>
>>		</Topic>
>>		<Topic id="Base/General_Information">
>>			<tag catid="2"/>
>>			<Title local="en-US">General Information</Title>
>>			<narrow
>>resource="Base/General_Information/About_us"/>
>>			<narrow
>>resource="Base/General_Information/Contact_us"/>
>>			<narrow
>>resource="Base/General_Information/Directors_Letter"/>
>>			<narrow
>>resource="Base/General_Information/History"/>
>>			<narrow
>>resource="Base/General_Information/What_We_Beleive"/>
>>			<narrow
>>resource="Base/General_Information/Staff_Directory"/>
>>		</Topic>
>>		<Topic id="Base/General_Information/About_us">
>>			<tag catid="8"/>
>>			<Title local="en-US">About Us</Title>
>>		</Topic>
>>		<Topic id="Base/General_Information/Contact_us">
>>			<tag catid="9"/>
>>			<Title local="en-US">Contact Us</Title>
>>		</Topic>
>>...
>>...
>>...
>>
>>
>>And I want to acheave results like this if I had a dynamic variable like 
>>"Base/General_Information/About_us"
>>
>><Topic id="Base/General_Information/About_us">
>>			<tag catid="8"/>
>>			<Title local="en-US">About Us</Title>
>>		</Topic>
>>		<Topic id="Base/General_Information/Contact_us">
>>			<tag catid="9"/>
>>			<Title local="en-US">Contact Us</Title>
>>		</Topic>
>>		<Topic id="Base/General_Information/Directors_Letter">
>>			<tag catid="10"/>
>>			<Title local="en-US">Letter From the
>>Director</Title>
>>		</Topic>
>>		<Topic id="Base/General_Information/History">
>>			<tag catid="11"/>
>>			<Title local="en-US">History</Title>
>>		</Topic>
>>		<Topic id="Base/General_Information/What_We_Beleive">
>>			<tag catid="12"/>
>>			<Title local="en-US">What We Beleive</Title>
>>		</Topic>
>>		<Topic id="Base/General_Information/Staff_Directory">
>>			<tag catid="13"/>
>>			<Title local="en-US">Staff Directory</Title>
>>		</Topic>
>>
>>Can someone point me in the right direction?
>>john
> 
> 

-- 
Manos Batsis

     _  __    __                    __
    / |/ /__ / /____ __ _ ___ _____/ /_
   /    / -_) __(_-</  ' Y _ `/ __/ __/
  /_/|_/\__/\__/___/_/_/_|_,_/_/  \__/


http://www.netsmart.gr
mailto:mbatsisSPAM_TRAP@xxxxxxxxxxx
tel:+302103240940
http://forte.netsmart.gr/foaf/manos_foaf.rdf

Current Thread