Hallo Janine,
Jetzt dachte ich, ich zerlege zuerst mit regex meinen descr-String in einzelne Begriffe und prüfe dann mit einer Schleife, ob diese Bestandteil von def/term sind. Das klappt auch soweit ganz gut, nur mit dem Bindestrich zwischen Routine-Instandhaltung kommt mein Code nicht so gut klar. Habt ihr eine Ahnung, was ich falsch gemacht habe? Oder gibt es einfachere/bessere Lösungen, die mich zum Ziel führen werden?
Probiere es zunächst so:
<xsl:template match="definitions">
<xsl:variable name="term" select="def/term"/>
<xsl:variable name="actdef" select="def[1]"/>
<xsl:variable name="actdefdescr" select="fn:tokenize($actdef/descr, ' ')"/>
<def>
<link>
<xsl:for-each select="$actdefdescr">
<txt><xsl:value-of select="."/></txt>
</xsl:for-each>
</link>
</def>
</xsl:template>
mit diesem Ergebnis:
<?xml version="1.0" encoding="UTF-8"?>
<def>
<link>
<txt>Routine-Instandhaltung</txt>
<txt>oder</txt>
<txt>Wartung</txt>
<txt>eines</txt>
<txt>Gerätes</txt>
<txt>etc.</txt>
</link>
</def>
Falls auch die Teilbegriffe aus Routine-Instandhaltung benötigt werden, kann man wiederum mit der tokenize-Funktion über den Bindestrich gehen.
Grüße,
Thomas