Hallo,
Wenn ich mit XSL nun das <text>-Element bearbeitet, weiss ich nicht, wie ich die Verlinkung machen kann. Irgendwie muss ich merken, ob ich zu einer <page> verlinke oder zu einem <field>. Wenn zu einem Field, dann muss dieselbe seite aufgerufen werden mit der id des Fields als Anker.
Ich möchte einmal einen Link zu einer Seite konstruieren mit index.php?id=xx und einmal als Anker, wenn ich zu einem Field verlinke mit index.php?id=xx#xx
---------
<xsl:template match="text">
xsl:choose
<xsl:when test="parent::page/link">
<p>
<a href="{concat('index.php?id=', parent::page/@id)}">
<xsl:value-of select="const" />
<!-- was auch immer "const" für ein Element ist, es sollte innerhalb vom text stehen sonst wird es nciht gefunden -->
</a>
</p>
</xsl:when>
<xsl:when test="parent::field/link">
<p>
<a href="{concat('index.php?id=', ancestor::page[1]/@id, '#', parent::field/@id)}">
<xsl:value-of select="const" />
<!-- was auch immer "const" für ein Element ist, es sollte innerhalb vom text stehen sonst wird es nciht gefunden -->
</a>
</p>
</xsl:when>
xsl:otherwise
<p>
<xsl:value-of select="."/>
</p>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
------
parent::page/link prüft ob <text> im <page> steht und ob <page> ein <link> enthält, parent::field/link geht analog.
Falls <text> in einem <flied> steht, verweist "ancestor::page[1]" auf das erste <page> (vom <text> aus gesehen) was oberhalb vom <text> steht (falls innerhalb vom <page> kein anderes <page> vorkommen kann, kannst du das [1] auch weglassen)
Grüße
Thomas