ThomasM: XSL | Satz in einzelne Wörter zerlegen

Beitrag lesen

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