H.B.: XSL Ankerpunkte mit Variablen?

Hallo! Folgendes Problem. Ich möchte von einer xml-Datei aus auf einen bestimmten Punkt einer anderen xml-Datei verweisen (es geht um Fußnoten (fn.xml)). Das habe ich in meiner xsl-Datei folgendermaßen gelöst:

<xsl:template match="fn"> <!--Fußnoten-->

<a style="color:#000; vertical-align:super; font-size:7pt;text-decoration:none;" target="unten">
<xsl:attribute name="href">xsl:textfn.xml#</xsl:text><xsl:value-of select="." /></xsl:attribute>
 <xsl:value-of select="." /></a>
</xsl:template>

So kann ich den Inhalt der Fußnote an den Link anhängen und auf den Ankerpunkt verweisen

<xsl:template match="fnm">    <!--Ankerpunkt i d and. xml-Datei-->
 <p>
 <a id="M1">
 <xsl:value-of select="." />
 </a></p>
</xsl:template>

In der xml steht:
<text>
<seite>
blabla...wie in sp&auml;teren Jahren<fn id="M1">M1</fn> ist Island von Naturforschern nicht selten besucht worden...
</seite>
</text>

Jetzt kommt das Problem. Ich werde sehr viele Fußnoten haben und möchte nicht für jeden einzelnen mit eigener id einen neuen Abschnitt in der xsl schreiben, sondern das ganze automatisieren - vielleicht mit einer Variablen? Nur wie?

Und als zweite Frage: Kann ich nicht auch die id von <fn> ausgeben, ohne <fn id="M1">M1</fn> schreiben zu müssen, also daß ich direkt auf das Attribut zugreifen und es als Fußnote ausgeben kann?

Vielen Dank schon für erste!

  1. Hallo,

    Hallo! Folgendes Problem. Ich möchte von einer xml-Datei aus auf einen bestimmten Punkt einer anderen xml-Datei verweisen (es geht um Fußnoten (fn.xml)). Das habe ich in meiner xsl-Datei folgendermaßen gelöst:

    <xsl:template match="fn"> <!--Fußnoten-->

    <a style="color:#000; vertical-align:super; font-size:7pt;text-decoration:none;" target="unten">
    <xsl:attribute name="href">xsl:textfn.xml#</xsl:text><xsl:value-of select="." /></xsl:attribute>
    <xsl:value-of select="." /></a>
    </xsl:template>

    Wenn eine Fußnote bei dir wirklich so: <fn id="M1">Fußnotentext</fn> aussieht, wäre es besser das XSL so zu schreiben:

    <xsl:attribute name="href">xsl:textfn.xml#</xsl:text><xsl:value-of select="@id" /></xsl:attribute>

    oder kürzer

    <a href="fn.xml#{@id}"><xsl:value-of select="." /></a>

    ergibt mit dem Beispiel:
    <a href="fn.xml#M1">Fußnotentext</a>

    So kann ich den Inhalt der Fußnote an den Link anhängen und auf den Ankerpunkt verweisen

    <xsl:template match="fnm">    <!--Ankerpunkt i d and. xml-Datei-->
    <p>
    <a id="M1">
    <xsl:value-of select="." />
    </a></p>
    </xsl:template>

    In der xml steht:
    <text>
    <seite>
    blabla...wie in sp&auml;teren Jahren<fn id="M1">M1</fn> ist Island von Naturforschern nicht selten besucht worden...
    </seite>
    </text>

    Jetzt kommt das Problem. Ich werde sehr viele Fußnoten haben und möchte nicht für jeden einzelnen mit eigener id einen neuen Abschnitt in der xsl schreiben, sondern das ganze automatisieren - vielleicht mit einer Variablen? Nur wie?

    Ich verstehe nicht ganz was du meinst.
    Wie sieht denn das Element <fnm> wirklich aus?

    Wenn zu einer Fußnote auch immer ein <fnm>-Elementen in der anderen XML-Datei mit derselben ID gibt:
    <xsl:template match="fnm">
     <p>
       <a id="{@id}">
          <xsl:value-of select="." />
       </a>
      </p>
    </xsl:template>

    Und als zweite Frage: Kann ich nicht auch die id von <fn> ausgeben, ohne <fn id="M1">M1</fn> schreiben zu müssen, also daß ich direkt auf das Attribut zugreifen und es als Fußnote ausgeben kann?

    Die Frage verstehe ich überhaupt nicht. Ein "<fn id="M1">M1</fn>" steht in deinem XML. Eine Fußnote wirst du in deinem XML immer selbst schreiben müssen.
    Wie du im XSL auf die ID zufreiffen kannst, habe ich weiter oben beschrieben.

    Grüße
    Thomas

    1. Hallo,

      vielen Dank! Es funktioniert und Du hast das Problem vollkommen richtig verstanden! Das spart mir als blutigem Anfänger viel Zeit.

      Und als zweite Frage: Kann ich nicht auch die id von <fn> ausgeben, ohne <fn id="M1">M1</fn> schreiben zu müssen, also daß ich direkt auf das Attribut zugreifen und es als Fußnote ausgeben kann?

      Die Frage verstehe ich überhaupt nicht. Ein "<fn id="M1">M1</fn>" steht in deinem XML. Eine Fußnote wirst du in deinem XML immer selbst schreiben müssen.
      Wie du im XSL auf die ID zufreiffen kannst, habe ich weiter oben beschrieben.

      Da geht es nur darum, ob es auch eine kürzere Schreibweise gibt:
      Also statt <fn id="M1">M1</fn> z.B. <fn id="M1"/> und daß ich dann eben die id als Fußnotentext ausgeben kann statt des Inhalts des Elements. Ich habs aber selbst rausbekommen:

      <xsl:template match="fn"> <!--Fußnoten-->

      <a href="fn.xml#{@id}"><xsl:value-of select="@id" /></a>

      </xsl:template>

      Also nochmal vielen Dank!!!