Ich muss ein Wort und seinen Kontext in einer Xml-Datei suchen. Zum Beispiel
<line>hello world, my name is farhad and i'm having trouble with xslt</line>
Suche nach "und", Kontext von 3 Wörtern:
<line>hello world, my <span class="context">name is farhad <span class="word">and</span> i'm having</span> trouble with xslt</line>
Was kann ich tun? Ich schrieb einige xslt, um das Wort zu finden, aber ich kann nicht gehen zurück 3 Wörter zu setzen span. Dies ist meine xslt:
<xsl:variable name="delimiters">[,.;!?\s"()]+</xsl:variable>
<xsl:template match="/">
<xsl:apply-templates select="//line"/>
</xsl:template>
<xsl:template match="line">
<line>
<xsl:for-each select="tokenize(.,'\s')">
<xsl:choose>
<!-- se l'ultimo carattere è di punteggiatura, prendo la sottostringa senza la punteggiatura -->
<xsl:when test="compare(replace(.,$delimiters,'$1'),'red') = 0">
<span class="word">
<xsl:value-of select="."/>
</span>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="."/>
<xsl:choose>
<xsl:when test="position()=last()">
<xsl:text></xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text> </xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</line><xsl:text>
</xsl:text>
</xsl:template>
Dies ist ein Beispiel für xml: http://pastebin.com/eAVM9CDQ .
Ich muss zum Beispiel auch bei vorhergehenden Tags nach dem Kontext suchen:
<line>hello world,</line>
<line>my name</line>
<line>is farhad </line>
<line>and i'm having</line>
<line>trouble with xslt</line>
also, auf der Suche nach 'und', Kontext von 3 Wörtern:
<line>hello world,</line>
<line>my <span class="context">name</line>
<line>is farhad </line>
<line><span class="word">and</span> i'm having</span></line>
<line>trouble with xslt</line>
mit Überschneidungsproblemen, aber jetzt ist das kein Problem mehr (ich glaube, ich weiß, wie ich es hinbekomme). Wie kann ich ein Wort und seinen Kontext suchen? Ich danke Ihnen vielmals.