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?