Notfalls melde ich mich wieder 😉
So schnell kann es gehen und ich bin wieder da... Ich merke nämlich gerade, dass mein eigentliches Problem immer noch nicht gelöst wurde. Hier mein erster Versuch, der ein ähnliches (wenn auch nicht so gutes) Ergebnis eingebracht hat:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fn="http://www.w3.org/2005/xpath-functions" version="2.0" exclude-result-prefixes="#all">
<xsl:output method="xml" encoding="UTF-8" indent="yes"/>
<xsl:template match="definitions">
<xsl:variable name="term" select="def/term"/>
<all>
<xsl:for-each select="//def">
<xsl:variable name="actdef" select="."/>
<def>
<xsl:for-each select="$term">
<xsl:variable name="actterm" select="$actdef/term"/>
<xsl:if test="fn:contains($actdef/descr, .)">
<link>
<xsl:value-of select="fn:substring-before($actdef/descr, .)"/><a><xsl:value-of select="."/></a><xsl:value-of select="fn:substring-after($actdef/descr, .)"/>
</link>
</xsl:if>
</xsl:for-each>
</def>
</xsl:for-each>
</all>
</xsl:template>
</xsl:stylesheet>
Alles, was ich will, ist, den Eingabestring "descr" auf Begriffe aus "term" zu prüfen und diese mit einem HTML-Link (<a>) zu markieren, damit ich von einem Glossarbegriff zum nächsten springen kann. Doch diese verflixten Schleifen schreiben mir nur jeweils einen Begriff um. Brauche ich dazu zwei Templates und muss den Code so oft durchführen und immer wieder die Ausgabe als neuen Eingabestring verwenden, bis ich keine offenen Begriffe mehr habe? Wie könnte das aussehen?
Ich freue mich über jeden Hinweis! Janine