Hallo,
Das mit dem XSLT klingt doch ganz gut. Wie gehe ich hierzu aber mit den Deeplinks zu den Unterseiten um? Vorallem wenn ich einen Tree anlegen will?
Dein XML ist nicht ganz so glücklich gewählt. z.B. wäre eine Aufbau wie:
<Stadt Name="München">
<Strasse>Berliner Strasse</Strasse>
<Strasse>Hamburger Strasse</Strasse>
</Stadt>
besser geeignet. So muss du halt ein wenig mehr in deinem XSLT "programmieren".
Folgende Stylesheet erzeugt mit Saxon (habe jetzt mit dem 8er ausprobiert) eine:
index.html
Berlin.html
München.html
Berlin\Frankfurter Strasse.html
Berlin\Münchner Strasse.html
etc.
----------------------------------------------------------------
<?xml version="1.0" encoding="iso-8859-1"?>
<Staedte>
<Stadt Name="München">
<Strasse>Berliner Strasse</Strasse>
<Strasse>Hamburger Strasse</Strasse>
</Stadt>
<Stadt Name="Berlin">
<Strasse>Münchner Strasse</Strasse>
<Strasse>Frankfurter Strasse</Strasse>
</Stadt>
</Staedte>
----------------------------------------------------------------
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet
version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output name="staedte" method="html" indent="yes"
encoding="ISO-8859-1"
doctype-system="http://www.w3.org/TR/html4/loose.dtd"
doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" />
<xsl:template match="/Staedte">
<xsl:result-document href="index.html" format="staedte">
<html>
<head><title>Städte und Straßen</title></head>
<body>
<h1>Städte und Straßen</h1>
<xsl:for-each select="Stadt">
<p><a href="{@Name}.html"><xsl:value-of select="@Name"/></a></p>
</xsl:for-each>
</body>
</html>
</xsl:result-document>
<xsl:for-each select="Stadt">
<xsl:result-document href="{@Name}.html" format="staedte">
<html>
<head><title><xsl:value-of select="@Name"/></title></head>
<body>
<h1><xsl:value-of select="@Name" /></h1>
<xsl:for-each select="Strasse">
<p><a href="{.}.html"><xsl:value-of select="."/></a></p>
</xsl:for-each>
</body>
</html>
</xsl:result-document>
</xsl:for-each>
<xsl:apply-templates select="Stadt/Strasse" />
</xsl:template>
<xsl:template match="Strasse">
<xsl:result-document href="{concat(parent::*/@Name, '/', escape-uri(., true()))}.html" format="staedte">
<html>
<head><title><xsl:value-of select="."/></title></head>
<body>
<h1><xsl:value-of select="." /></h1>
<p>Zurück zu: <a href="../{parent::*/@Name}.html"><xsl:value-of select="parent::*/@Name"/></a></p>
</body>
</html>
</xsl:result-document>
</xsl:template>
</xsl:stylesheet>
Mit XSLT 1.0 geht das auch, da hat Andreas recht, da er das bereits verwendet ist es besser, wenn er das dir erklärt ;-)
(und ich darf derweilen faulenzen)
Grüße
Thomas