Orlanski: Links separieren

Beitrag lesen

Guten Morgen,

ich habe ein Problem, welches in Gedanken gelöst ist, ich aber nicht die richtigen Funktionen bzw. wie ich diese anwenden kann, noch nicht gefunden.

Folgende Datei ist gegeben:

<Sect>
<Standard>Hallo
<Link>1 </Link>
</Standard>

<Standard>Hallo
<Link>mail@irgendwas.de</Link>
</Standard>

<Standard>Hallo
<Link>www.yahoo.de </Link>
</Standard>

<Standard>Hallo
<Link>2 </Link>
</Standard>

<!-- Weiter unten stehen dann Fußnoten:-->

<Footnote>
<Fußnotentext>1 erste </Fußnotentext>
<Fußnotentext>2 zweite </Fußnotentext>
</Footnote>

<Sect>

Das Fußnotenzeichen wird dabei als <Link> gespeichert. Ich muss also untersuchen, ob der Link ein 'www' oder '@' oder 'http://' enthält. Bei den anderen Linkelementen muss es sich ja dann um eine Fußnote handeln. Dabei soll der Fußnotentext in den entsprechenden Link in Klammern gesetzt werden - die Fußnotenzahl entfällt.Dies hab ich auch realisiert:

...
<xsl:template match="Standard/Link">
  xsl:choose
    <xsl:when test="contains(current(),'@')">
     <xsl:element name="a">
      <xsl:attribute name="href">mailto:<xsl:value-of select="."/></xsl:attribute>
        <xsl:value-of select="."/>
     </xsl:element>
    </xsl:when>
    <xsl:when test="contains(current(),'www') or contains(current(),'http://')">
      <xsl:element name="a">
       <xsl:attribute name="href"><xsl:value-of select="."/></xsl:attribute>
        <xsl:value-of select="."/>
      </xsl:element>
     </xsl:when>
     xsl:otherwise
<!-- IF- Bedingung -->
      <xsl:element name="span">
       <xsl:attribute name="class">Footnote</xsl:attribute>
     xsl:text( </xsl:text>
     <xsl:copy-of select="substring-after(//Sect/Footnote/Fußnotentext,' ')"/>
     xsl:text) </xsl:text>
      </xsl:element>
     </xsl:otherwise>
  </xsl:choose>
</xsl:template>

<xsl:template match="Footnote"/>
<xsl:template match="Fußnotentext"/>

  • Standard als <p>Tag

Das ergibt dann folgende Ausgabe:

<p>Hallo <span class="Footnote">(erste)</span></p>
<p>Hallo <a href="mailto:mail@irgendwas.de">mail@irgendwas.de</a></p>
<p>Hallo <a href="www.yahoo.de">www.yahoo.dey</a></p>
!!<p>Hallo <span class="Footnote">(erste)</span></p>!!

Die Fallunterscheidung zwischen Links,Webadresse und Fußnote funktioniert.
Das Problem: er erkennt die folgenden Fußnotentexte nicht. So sollte er bei der letzten eigentlich ausgeben:
<p>Hallo <span class="Footnote">(zweite)</span></p>

Dann dachte ich mir, ich zähle die Position aller Links, die nicht www, http:// oder @ enthalten und vergleiche den Wert mit der Position der Fußnotentexte. Wenn diese übereinstimmt, dann handelt es sich um den richtigen Fußnotentext für den entsprechenden Link. Dies wollte ich als if- bedingung einbauen -siehe oben. Allerdings bekomme ich keine richtige Syntax hin. Es müsste ja so in der Form von count(nur die Links, welche not contains (.,'www') and not contains(.... usw.) =Position(Footnote/Fußnotentexte).

nur kriege ich das nich hin. Hat jemand ne Idee? Ist das überhaupt richtig, mit count und position ranzugehen?