Subject: RE: [xsl] Ideal XML Site tree layout From: "John Hamman" <John@xxxxxxxxxxxxxxxxx> Date: Tue, 20 Apr 2004 18:18:30 -0400 |
Any use in large sites? john -----Original Message----- From: Jeffrey Moss [mailto:jeff@xxxxxxxxxxxx] Sent: Tuesday, April 20, 2004 5:37 PM To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: Re: [xsl] Ideal XML Site tree layout http://www.binarycloud.com I think this is what you're looking for. I personally maintain my own "sitemap" file that turns into a "sitemap.html", and I use it for some other things like navigation menus, page grouping/sequencing, but that is more suited to my needs and shouldn't be very hard for you to implement. -Jeff ----- Original Message ----- From: "John Hamman" <John@xxxxxxxxxxxxxxxxx> To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx> Sent: Tuesday, April 20, 2004 2:50 PM Subject: [xsl] Ideal XML Site tree layout > 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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Ideal XML Site tree layou, Jeffrey Moss | Thread | Re: [xsl] Ideal XML Site tree layou, Robert Koberg |
Re: [xsl] Ideal XML Site tree layou, Jeffrey Moss | Date | Re: [xsl] Ideal XML Site tree layou, Robert Koberg |
Month |