xsl-list
[Top] [All Lists]

xsl:sort with document()

2004-12-02 11:06:07
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</site: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-file>
                        </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:Description"/>
                </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 prático 
nessa áreo. É
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</site: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-file>
                                
<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

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



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