Hallo,
Ich komme erst jetzt dazu zu antworten:
Die XML sieht folgend aus:
<PageHierarchy>
<Page priority="100" name="Niederlassungen">
<Page priority="20" name="Deutschland">
<Page name="Osnabrück" id="1" priority="10"/>
<Page name="Hamburg" id="2" priority="20"/>
<Page name="Bremen" id="3" priority="30"/>
<Page name="Hannover" id="4" priority="40"/>
</Page>
<Page name="Niederlande" priority="10">
<Page name="Enschede" id=8"" priority="10"/>
</Page>
</Page>
</PageHierarchy>Daraus soll ein Menü erstellt werden. Die Pages sind im XML aber nicht in der richtigen Reihenfolge (@priority). Deshalb sortiere ich sie bei aufruf des templates mit xml:sort.
Dies funktioniert bei der Darstellung der Menüpunkte auch.
Das Problem ist, dass nicht alle Seiten Inhalt haben, sondern nur die, die eine ID besizten. Bei Seiten ohne ID soll die erste-Kindseite angezeigt werden, sortiert nach priority.
<xsl:value-of select="descendant-or-self::Page/@id"/> liefert mit aber die Kindseite, wie sie im XML steht (Bei klick auf "Niederlassungen" also "Osnabrück" statt "Enschede").
<xsl:template match="PageHierarchy">
xsl:apply-templates
<xsl:sort select="@priority" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="Page[not(@id)]">
<xsl:value-of select="@name" />
<br />
xsl:apply-templates
<xsl:sort select="@priority" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="Page[@id]">
<xsl:value-of select="@name" />
<br />
</xsl:template>
Grüße
Thomas