Thomas J.S.: XSL erzeugen

Beitrag lesen

Hallo,

Nee die Seiten werden nicht generiert. Diese XML Datei ist halt als Inhalt in einem CMS anzusehen. Die Anbindung ist schon implementiert und funktionniert.
Nur für diese XML Datei, hätte ich gern die passende XSL schreiben, so dass die Darstellung HTML Konform ist.
Also ich möchte auf der Seite 1 dieses:
<a href="#5">Link 2</a> haben und wiederum auf Seite 2

Ich glaube entweder hast du mich missverstanden oder ich dich.

Wenn du sagst, die Seiten werden nicht generiert: das kann nicht sein, es sei denn du lieferst direkt nur das XML aus. Dann sind Links (<a ...> irrelevant, weil XML das nicht kennt. Irgendwo muss es HTML rauskommen, wenn der Browser was darstellen soll.

Was hilft es dir, wenn ich schreibe:

--------------------------------------
<xsl:stylesheet version="2.0"       xmlns:xsl="http://www.w3.org/1999/XSL/Transform"      xmlns:xhtml="http://www.w3.org/1999/xhtml">
<xsl:output name="xhtml-page" method="xhtml" indent="no"             doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
            doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"/>

<xsl:template match="/">
  <xsl:for-each select="start/page">
    <xsl:result-document href="page{position()}.html" format="xhtml-page">
      <html xmlns="http://www.w3.org/1999/xhtml">
        <head><title><xsl:value-of select="."/></title></head>
        <body>
         <xsl:apply-templates />

<a ... was auch immer>

</body>
      </html>
    </xsl:result-document>
  </xsl:for-each>
</xsl:template>

<!-- andere templates -->

</xsl:stylesheet>
---------------------------------------

aber dein CMS keinen blassen Schimmer vom XSL 2.0 hat?

Wenn du aber nur _eine_ Seite hast und darin mit Ankers hin und her springen willst:

<xsl:for-each select="page">

<xsl:apply-templates />

xsl:choose
  <xsl:when test="position() = 1">
   <a href="{following-sibling::page[1]/@id}">
    Link <xsl:value-of select="substring(following-sibling::page/@id, 2)" />
   </a>
  </xsl:when>
  <xsl:when test="last()">
   <a href="{preceding-sibling::page[1]/@id}">
    Link <xsl:value-of select="substring(preceding-sibling::page/@id, 2)" />
   </a>
  </xsl:when>
  xsl:otherwise
   <a href="{following-sibling::page[1]/@id}">
    Link <xsl:value-of select="substring(following-sibling::page/@id, 2)" />
   </a>

<a href="{preceding-sibling::page[1]/@id}">
    Link <xsl:value-of select="substring(preceding-sibling::page/@id, 2)" />
   </a>
  </xsl:otherwise>
 </xsl:choose>
</xsl:for-each>

Grüße
Thomas