[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

xsl:sort with document()

Subject: xsl:sort with document()
From: Jan Limpens <jan.limpens@xxxxxxxxx>
Date: Thu, 2 Dec 2004 16:06:07 -0200
xsl sort document
hi,

I have the content of a website organized in folders, so there is a
one webpage to one xml-file relation. I read the contents of the files
and generate a xml document from this.
In a second step I use a xslt stylesheet to open each of this files
via document() and extract some information, which leads to a
navigation structure, where I have a link, a title, a description and
so on.
now my problem: as the files are in the filesystem, they are ordered
by alphabet (at least I get it this way from the .net framework) which
is not what I want.  For example I want the page  'contact' to be the
last of a generation, but as it starts with c it comes somewhere at
the beginning.
so I had no better idea than put a navi:order field into each of these
files, which contains a number after which I could sort. (anyone with
a better idea? I don't like mine too much because it mixes structure
with content).

Anyway, I have not found a way to actually bring this to work...

some examples ....

the filestructure...
<?xml version="1.0"?>
<site xmlns:site="http://limpens.com/site">
	<site:document>
		<site:xml-file>file:///D:/XmlContent/Home.xml</site:xml-file>
		<site:children>
			<site:document>
				<site:xml-file>file:///D:/XmlContent/Home/Development.xml</site:xml-file>
				<site:children>
					<site:document>
						<site:xml-file>file:///D:/XmlContent/Home/Development/TaskSheet.xml</si
te:xml-file>
					</site:document>
					<site:document>
						<site:xml-file>file:///D:/XmlContent/Home/Development/VectorPainter.xml
</site:xml-file>
					</site:document>
					<site:document>
						<site:xml-file>file:///D:/XmlContent/Home/Development/WwwLimpensCom.xml
</site:xml-file>
					</site:document>
					<site:document>
						<site:xml-file>file:///D:/XmlContent/Home/Development/WwwWaldeckAt.xml<
/site:xml-file>
					</site:document>
				</site:children>
			</site:document>
			<site:document>
				<site:xml-file>file:///D:/XmlContent/Home/Illustrations.xml</site:xml-fil
e>
			</site:document>
		</site:children>
	</site:document>
</site>

======================================================================

the xslt to produce the navigation structure

<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:site="http://limpens.com/site"
xmlns:blog="http://limpens.com/blogbase"
xmlns:navi="http://limpens.com/navigation">
	<xsl:output method="xml" encoding="UTF-16" indent="yes"/>
	<xsl:param name="selectedLanguage" select="'de'"/>
	<xsl:param name="defaultLanguage" select="'en'"/>
	<xsl:param name="baseDir" select="'file:///D:/XmlContent'"/>

	<xsl:template match="site">
		<site>
			<xsl:apply-templates select="site:document"/>
		</site>
	</xsl:template>

	<xsl:template match="site:document">
		<site:document>
			<site:xml-file>
				<xsl:value-of select="site:xml-file"/>
			</site:xml-file>
			<site:link>
				<xsl:text>/</xsl:text>
				<xsl:value-of select="$selectedLanguage"/>
				<xsl:value-of
select="substring-before(substring-after(string(site:xml-file),
$baseDir), 'xml')"/>
				<xsl:text>aspx</xsl:text>
			</site:link>
			<xsl:apply-templates select="document(site:xml-file)"/>
			<xsl:if test="site:children">
				<site:children>
					<xsl:apply-templates select="site:children/site:document">
						<xsl:sort select="navi:order"/><!--does not work-->
					</xsl:apply-templates>
				</site:children>
			</xsl:if>
		</site:document>
	</xsl:template>

	<<xsl:template match="blog:Blog">
		<site:title>
			<xsl:value-of
select="blog:BlogInfos/blog:BlogInfo[lang($selectedLanguage)]/navi:title"/>
		</site:title>
		<site:description>
			<xsl:value-of
select="blog:BlogInfos/blog:BlogInfo[lang($selectedLanguage)]/blog:Descriptio
n"/>
		</site:description>
		<site:order>
			<xsl:value-of select="navi:order"/>
		</site:order>
	</xsl:template>

</xsl:stylesheet>
======================================================================

a sample xml document

<?xml version="1.0" ?>
<Blog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://limpens.com/blogbase"
	xsi:schemaLocation="http://limpens.com/blogbase Schemas\BlogBase.xsd"
xmlns:navi="http://limpens.com/navigation">
	<navi:order>30</navi:order>
	<BlogInfos>
		<BlogInfo xml:lang="en">
			<navi:title>Software Development</navi:title>
			<Title>Diverse Software Development Projects</Title>
			<Description>Once in a while I still reach back to my other passion
- programming. Sometimes something usefull emerges, then you can read
about it just here...</Description>
		</BlogInfo>
		<BlogInfo xml:lang="de">
			<navi:title>Software Entwicklung</navi:title>
			<Title>Verschiedene Software Entwicklungen</Title>
			<Description>Hin und wieder gebe ich mich meiner anderen
Leidenschaft (neben dem Zeichnen) hin - der Programmierung. Manchmal
entstehen dabei auch n|tzliche und/oder interessante
Dinge.</Description>
		</BlogInfo>
		<BlogInfo xml:lang="pt">
			<navi:title>Desenvolvimento de Soft</navi:title>
			<Title>Diversas desenvolvimentos de soft</Title>
			<Description>De vez em quando eu crio algo pratico nessa areo. I
aqui onde eu escevo sobre estes assuntos...</Description>
		</BlogInfo>
	</BlogInfos>
</Blog>

======================================================================

the navigation structure

<?xml version="1.0"?>
<site xmlns:site="http://limpens.com/site"
xmlns:blog="http://limpens.com/blogbase"
xmlns:navi="http://limpens.com/navigation">
	<site:document>
		<site:xml-file>file:///D:/XmlContent/Home.xml</site:xml-file>
		<site:link>/en/Home.aspx</site:link>
		<site:title>Homepage</site:title>
		<site:description>Here you'll find a selection of my works in the
areas of illustration, my recent publications and some articles on
software design.</site:description>
		<site:children>

			<site:document>
				<site:xml-file>file:///D:/XmlContent/Home/Development.xml</site:xml-file>
				<site:link>/en/Home/Development.aspx</site:link>
				<site:title>Software Development</site:title>
				<site:description>Once in a while ...</site:description>
				<site:order>30</site:order>

				<site:children>
					<site:document>
						<site:xml-file>file:///D:/XmlContent/Home/Development/TaskSheet.xml</si
te:xml-file>
						<site:link>/en/Home/Development/TaskSheet.aspx</site:link>
						<site:title>Task Sheet - an online time management
software</site:title>
						<site:description>TaskSheet</site:description>
						<site:thumbnail>/Images/Thumbnails/TaskSheet.png</site:thumbnail>
					</site:document>
					<site:document>
						<site:xml-file>file:///D:/XmlContent/Home/Development/VectorPainter.xml
</site:xml-file>
						<site:link>/en/Home/Development/VectorPainter.aspx</site:link>
						<site:title>A vector drawing application still in planning</site:title>
						<site:description>This shows...</site:description>
					</site:document>
					<site:document>
						<site:xml-file>file:///D:/XmlContent/Home/Development/WwwLimpensCom.xml
</site:xml-file>
						<site:link>/en/Home/Development/WwwLimpensCom.aspx</site:link>
						<site:title>www.limpens.com - new and shiney</site:title>
						<site:description>There was an old one, ...</site:description>
					</site:document>

					<site:document>
						<site:xml-file>file:///D:/XmlContent/Home/Development/WwwWaldeckAt.xml<
/site:xml-file>
						<site:link>/en/Home/Development/WwwWaldeckAt.aspx</site:link>
						<site:title>Waldeck.at gets a new face (well, a new
technology)</site:title>
						<site:description>With technologies similar ...</site:description>
					</site:document>
				</site:children>
			</site:document>
			<site:document>
				<site:xml-file>file:///D:/XmlContent/Home/Illustrations.xml</site:xml-fil
e>
				<site:link>/en/Home/Illustrations.aspx</site:link>
				<site:title>Illustration</site:title>
				<site:description>Here you will find a wild mix of projects, jobs,
ideas, rants and everything that comes to my mind in this
category.</site:description>
				<site:order>10</site:order>
			</site:document>
		</site:children>
	</site:document>
</site>

any idea how to sort after navi:order?

many thanks!

--
jan

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.