XSL | Satz in einzelne Wörter zerlegen – SELFHTML-Forum Forum als Ergänzung zum SELFHTML-Wiki und zur Dokumentation SELFHTML https://forum.selfhtml.org/self?srt=yes XSL | Satz in einzelne Wörter zerlegen Sun, 15 Mar 20 09:10:18 Z https://forum.selfhtml.org/self/2020/mar/15/xsl-satz-in-einzelne-worter-zerlegen/1767088?srt=yes#m1767088 https://forum.selfhtml.org/self/2020/mar/15/xsl-satz-in-einzelne-worter-zerlegen/1767088?srt=yes#m1767088 <p>Hallo zusammen,</p> <p>ich habe ein Glossar mit verschiedenen Begriffen und Beschreibungen. Innerhalb der Beschreibungen kommen wieder einige definierte Begriffe vor, die ich gerne verlinken möchte. Dazu muss ich aber erstmal herausfinden, welche Begriffe aus den Beschreibungen als Begriff im Glossar definiert sind.</p> <p>Ich habe also beispielsweise die folgende Quelldatei:</p> <pre><code class="block language-html"><span class="token prolog"><?xml version="1.0" encoding="ISO-8859-1"?></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>definitions</span> <span class="token attr-name"><span class="token namespace">xmlns:</span>xsl</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.w3.org/1999/XSL/Transform<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>term</span><span class="token punctuation">></span></span>Abhilfemaßnahme (FDA)<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>term</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>descr</span><span class="token punctuation">></span></span>Routine-Instandhaltung oder Wartung eines Gerätes etc.<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>descr</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>term</span><span class="token punctuation">></span></span>Routine<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>term</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>descr</span><span class="token punctuation">></span></span>Hier taucht der Begriff Abhilfemaßnahme (FDA) auf.<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>descr</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>term</span><span class="token punctuation">></span></span>Gerät<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>term</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>descr</span><span class="token punctuation">></span></span>Dies ist ein Test für Routine und Abhilfemaßnahme (FDA).<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>descr</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>definitions</span><span class="token punctuation">></span></span> </code></pre> <p>Ich möchte nun also zunächst (die Schleife bastel ich später drumrum) innerhalb der ersten Beschreibung die Begriffe "Routine-Instandhaltung" und "Gerätes" erkennen, da "Routine" und "Gerät" definierte Begriffe sind.</p> <p>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?</p> <pre><code class="block language-html"><span class="token prolog"><?xml version="1.0" encoding="UTF-8"?></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>stylesheet</span> <span class="token attr-name"><span class="token namespace">xmlns:</span>xsl</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.w3.org/1999/XSL/Transform<span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">xmlns:</span>fn</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.w3.org/2005/xpath-functions<span class="token punctuation">"</span></span> <span class="token attr-name">version</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>2.0<span class="token punctuation">"</span></span> <span class="token attr-name">exclude-result-prefixes</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>#all<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>output</span> <span class="token attr-name">method</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>xml<span class="token punctuation">"</span></span> <span class="token attr-name">encoding</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>UTF-8<span class="token punctuation">"</span></span> <span class="token attr-name">indent</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>yes<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>template</span> <span class="token attr-name">match</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>definitions<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>variable</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>term<span class="token punctuation">"</span></span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>def/term<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>variable</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>actdef<span class="token punctuation">"</span></span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>def[1]<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>variable</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>actdefdescr<span class="token punctuation">"</span></span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>fn:concat(' ', $actdef/descr, ' ')<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>variable</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>actdescr<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>analyze-string</span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>$actdefdescr<span class="token punctuation">"</span></span> <span class="token attr-name">regex</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>( )?([A-ZÄÖÜ]*[a-zäöü]*[0-9]*[-,.;]*)( )<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>matching-substring</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>txt</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>value-of</span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>regex-group(2)<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>txt</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>matching-substring</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>non-matching-substring</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>value-of</span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>$actdef/descr<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>non-matching-substring</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>analyze-string</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>variable</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>attribute</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>actterm<span class="token punctuation">"</span></span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>$actdef/term<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>attribute</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>actdescr<span class="token punctuation">"</span></span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>$actdef/descr<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>link</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>for-each</span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>$actdescr/txt<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>txt</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>value-of</span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>.<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>txt</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>for-each</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>link</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>template</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>stylesheet</span><span class="token punctuation">></span></span> </code></pre> <p>Meine bisherige Ausgabe sieht so aus. Ich habe unter @actterm und @actdescr noch einmal die Quelle angegeben, damit ich mein Ergebnis leichter überprüfen kann. Darunter sollten alle einzelnen Wörter gelistet werden. Diese Liste würde ich dann in einem späteren Schritt abgleichen mit der Liste meiner Glossarbegriffe, die ich einfach in einer Variable speichere.</p> <pre><code class="block language-html"><span class="token prolog"><?xml version="1.0" encoding="UTF-8"?></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>def</span> <span class="token attr-name">actterm</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Abhilfemaßnahme (FDA)<span class="token punctuation">"</span></span> <span class="token attr-name">actdescr</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Routine-Instandhaltung oder Wartung eines Gerätes etc.<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>link</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>txt</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>txt</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>txt</span><span class="token punctuation">></span></span>Instandhaltung<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>txt</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>txt</span><span class="token punctuation">></span></span>oder<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>txt</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>txt</span><span class="token punctuation">></span></span>Wartung<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>txt</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>txt</span><span class="token punctuation">></span></span>eines<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>txt</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>txt</span><span class="token punctuation">></span></span>Gerätes<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>txt</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>txt</span><span class="token punctuation">></span></span>etc.<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>txt</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>link</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>def</span><span class="token punctuation">></span></span> </code></pre> <p>Viele Grüße und danke schonmal, Janine</p> XSL | Satz in einzelne Wörter zerlegen Sun, 15 Mar 20 16:41:28 Z https://forum.selfhtml.org/self/2020/mar/15/xsl-satz-in-einzelne-worter-zerlegen/1767164?srt=yes#m1767164 https://forum.selfhtml.org/self/2020/mar/15/xsl-satz-in-einzelne-worter-zerlegen/1767164?srt=yes#m1767164 <p>Hallo Janine,</p> <blockquote> <p>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?</p> </blockquote> <p>Probiere es zunächst so:</p> <pre><code class="block language-xml"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>template</span> <span class="token attr-name">match</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>definitions<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>variable</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>term<span class="token punctuation">"</span></span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>def/term<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>variable</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>actdef<span class="token punctuation">"</span></span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>def[1]<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>variable</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>actdefdescr<span class="token punctuation">"</span></span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>fn:tokenize($actdef/descr, ' ')<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>link</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>for-each</span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>$actdefdescr<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>txt</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>value-of</span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>.<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>txt</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>for-each</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>link</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>template</span><span class="token punctuation">></span></span> </code></pre> <p>mit diesem Ergebnis:</p> <pre><code class="block language-xml"><span class="token prolog"><?xml version="1.0" encoding="UTF-8"?></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>link</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>txt</span><span class="token punctuation">></span></span>Routine-Instandhaltung<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>txt</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>txt</span><span class="token punctuation">></span></span>oder<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>txt</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>txt</span><span class="token punctuation">></span></span>Wartung<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>txt</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>txt</span><span class="token punctuation">></span></span>eines<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>txt</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>txt</span><span class="token punctuation">></span></span>Gerätes<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>txt</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>txt</span><span class="token punctuation">></span></span>etc.<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>txt</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>link</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>def</span><span class="token punctuation">></span></span> </code></pre> <p>Falls auch die Teilbegriffe aus Routine-Instandhaltung benötigt werden, kann man wiederum mit der tokenize-Funktion über den Bindestrich gehen.</p> <p>Grüße,<br> Thomas</p> XSL | Satz in einzelne Wörter zerlegen Sun, 15 Mar 20 16:56:51 Z https://forum.selfhtml.org/self/2020/mar/15/xsl-satz-in-einzelne-worter-zerlegen/1767167?srt=yes#m1767167 https://forum.selfhtml.org/self/2020/mar/15/xsl-satz-in-einzelne-worter-zerlegen/1767167?srt=yes#m1767167 <p>Nachtrag:</p> <blockquote> <p>Falls auch die Teilbegriffe aus Routine-Instandhaltung benötigt werden, kann man wiederum mit der tokenize-Funktion über den Bindestrich gehen.</p> </blockquote> <p><code>fn:tokenize($actdef/descr, ' |-')</code> oder ggf. zur Behandlung von weiterem Leerraum <code>fn:tokenize($actdef/descr, '\s|-')</code></p> <p>erzeugt:</p> <pre><code class="block language-xml"><span class="token prolog"><?xml version="1.0" encoding="UTF-8"?></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>link</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>txt</span><span class="token punctuation">></span></span>Routine<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>txt</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>txt</span><span class="token punctuation">></span></span>Instandhaltung<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>txt</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>txt</span><span class="token punctuation">></span></span>oder<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>txt</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>txt</span><span class="token punctuation">></span></span>Wartung<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>txt</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>txt</span><span class="token punctuation">></span></span>eines<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>txt</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>txt</span><span class="token punctuation">></span></span>Gerätes<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>txt</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>txt</span><span class="token punctuation">></span></span>etc.<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>txt</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>link</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>def</span><span class="token punctuation">></span></span> </code></pre> <blockquote> <p>Grüße,<br> Thomas</p> </blockquote> XSL | Satz in einzelne Wörter zerlegen Sun, 15 Mar 20 18:53:02 Z https://forum.selfhtml.org/self/2020/mar/15/xsl-satz-in-einzelne-worter-zerlegen/1767181?srt=yes#m1767181 https://forum.selfhtml.org/self/2020/mar/15/xsl-satz-in-einzelne-worter-zerlegen/1767181?srt=yes#m1767181 <p>Hallo Thomas,</p> <p>vielen Dank für deine schnelle Hilfe! Der Code funktioniert wunderbar und ich habe mal wieder ein neues XSL-Element gelernt. Ich werde sehen, wie weit ich mit meinem Glossar komme. Notfalls melde ich mich wieder </p> <p>Viele Grüße und bleibt gesund! Janine</p> XSL | Satz in einzelne Wörter zerlegen Sun, 15 Mar 20 19:28:15 Z https://forum.selfhtml.org/self/2020/mar/15/xsl-satz-in-einzelne-worter-zerlegen/1767182?srt=yes#m1767182 https://forum.selfhtml.org/self/2020/mar/15/xsl-satz-in-einzelne-worter-zerlegen/1767182?srt=yes#m1767182 <blockquote> <p>Notfalls melde ich mich wieder </p> </blockquote> <p>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:</p> <pre><code class="block language-html"><span class="token prolog"><?xml version="1.0" encoding="UTF-8"?></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>stylesheet</span> <span class="token attr-name"><span class="token namespace">xmlns:</span>xsl</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.w3.org/1999/XSL/Transform<span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">xmlns:</span>fn</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.w3.org/2005/xpath-functions<span class="token punctuation">"</span></span> <span class="token attr-name">version</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>2.0<span class="token punctuation">"</span></span> <span class="token attr-name">exclude-result-prefixes</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>#all<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>output</span> <span class="token attr-name">method</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>xml<span class="token punctuation">"</span></span> <span class="token attr-name">encoding</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>UTF-8<span class="token punctuation">"</span></span> <span class="token attr-name">indent</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>yes<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>template</span> <span class="token attr-name">match</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>definitions<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>variable</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>term<span class="token punctuation">"</span></span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>def/term<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>all</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>for-each</span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>//def<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>variable</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>actdef<span class="token punctuation">"</span></span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>.<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>for-each</span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>$term<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>variable</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>actterm<span class="token punctuation">"</span></span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>$actdef/term<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>if</span> <span class="token attr-name">test</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>fn:contains($actdef/descr, .)<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>link</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>value-of</span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>fn:substring-before($actdef/descr, .)<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>value-of</span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>.<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>value-of</span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>fn:substring-after($actdef/descr, .)<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>link</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>if</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>for-each</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>for-each</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>all</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>template</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>stylesheet</span><span class="token punctuation">></span></span> </code></pre> <p>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?</p> <p>Ich freue mich über jeden Hinweis! Janine</p> XSL | Satz in einzelne Wörter zerlegen Sun, 15 Mar 20 23:56:58 Z https://forum.selfhtml.org/self/2020/mar/15/xsl-satz-in-einzelne-worter-zerlegen/1767194?srt=yes#m1767194 https://forum.selfhtml.org/self/2020/mar/15/xsl-satz-in-einzelne-worter-zerlegen/1767194?srt=yes#m1767194 <p>Hallo Janine,</p> <blockquote> <p>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?</p> </blockquote> <p>Gib nochmal das konkret gesuchte Ergebnis an. Das erspart evtl. unnötige Aktionen. Ich verstehe noch nicht die gewünschte Zuordnung von term- zu den jeweiligen descr-Inhalten.</p> <p>Grüße,<br> Thomas</p> XSL | Satz in einzelne Wörter zerlegen Mon, 16 Mar 20 19:50:24 Z https://forum.selfhtml.org/self/2020/mar/15/xsl-satz-in-einzelne-worter-zerlegen/1767230?srt=yes#m1767230 https://forum.selfhtml.org/self/2020/mar/15/xsl-satz-in-einzelne-worter-zerlegen/1767230?srt=yes#m1767230 <blockquote> <p>Gib nochmal das konkret gesuchte Ergebnis an. Das erspart evtl. unnötige Aktionen. Ich verstehe noch nicht die gewünschte Zuordnung von term- zu den jeweiligen descr-Inhalten.</p> </blockquote> <p>Hallo Thomas,</p> <p>hier noch einmal meine Quelldatei:</p> <pre><code class="block language-html"><span class="token prolog"><?xml version="1.0" encoding="ISO-8859-1"?></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>definitions</span> <span class="token attr-name"><span class="token namespace">xmlns:</span>xsl</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.w3.org/1999/XSL/Transform<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>term</span><span class="token punctuation">></span></span>Abhilfemaßnahme (FDA)<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>term</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>descr</span><span class="token punctuation">></span></span>Routine-Instandhaltung oder Wartung eines Gerätes etc.<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>descr</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>term</span><span class="token punctuation">></span></span>Routine<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>term</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>descr</span><span class="token punctuation">></span></span>Hier taucht der Begriff Abhilfemaßnahme (FDA) auf.<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>descr</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>term</span><span class="token punctuation">></span></span>Gerät<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>term</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>descr</span><span class="token punctuation">></span></span>Dies ist ein Test für Routine und Abhilfemaßnahme (FDA).<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>descr</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>definitions</span><span class="token punctuation">></span></span> </code></pre> <p>und meine gewünschte Zieldatei in der finalen Ausgabe:</p> <pre><code class="block language-html"><span class="token prolog"><?xml version="1.0" encoding="ISO-8859-1"?></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>definitions</span> <span class="token attr-name"><span class="token namespace">xmlns:</span>xsl</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.w3.org/1999/XSL/Transform<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>term</span><span class="token punctuation">></span></span>Abhilfemaßnahme (FDA)<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>term</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>descr</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Routine<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Routine<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span>-Instandhaltung oder Wartung eines <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Gerät<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Gerätes<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> etc.<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>descr</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>term</span><span class="token punctuation">></span></span>Routine<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>term</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>descr</span><span class="token punctuation">></span></span>Hier taucht der Begriff <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Abhilfemaßnahme (FDA)<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Abhilfemaßnahme (FDA)<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> auf.<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>descr</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>term</span><span class="token punctuation">></span></span>Gerät<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>term</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>descr</span><span class="token punctuation">></span></span>Dies ist ein Test für <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Routine<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Routine<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> und <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Abhilfemaßnahme (FDA)<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Abhilfemaßnahme (FDA)<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span>.<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>descr</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>definitions</span><span class="token punctuation">></span></span> </code></pre> <p>Viele Grüße, Janine</p> XSL | Satz in einzelne Wörter zerlegen Tue, 17 Mar 20 14:50:48 Z https://forum.selfhtml.org/self/2020/mar/15/xsl-satz-in-einzelne-worter-zerlegen/1767271?srt=yes#m1767271 https://forum.selfhtml.org/self/2020/mar/15/xsl-satz-in-einzelne-worter-zerlegen/1767271?srt=yes#m1767271 <p>Hallo Janine,</p> <p>hier ein Ansatz, der noch nicht ganz perfekt funktioniert und auf einzelne Textknoten fokussiert. Insofern wird "Abhilfemaßnahme (FDA)" (= zwei Textknoten) nicht verlinkt. Also ggf. noch weiter modifizieren.</p> <pre><code class="block language-xml"><span class="token prolog"><?xml version="1.0" encoding="UTF-8"?></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>stylesheet</span> <span class="token attr-name"><span class="token namespace">xmlns:</span>xsl</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.w3.org/1999/XSL/Transform<span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">xmlns:</span>fn</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.w3.org/2005/xpath-functions<span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">xmlns:</span>xs</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.w3.org/2001/XMLSchema<span class="token punctuation">"</span></span> <span class="token attr-name">exclude-result-prefixes</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>#all<span class="token punctuation">"</span></span> <span class="token attr-name">version</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>2.0<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>output</span> <span class="token attr-name">method</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>xml<span class="token punctuation">"</span></span> <span class="token attr-name">encoding</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>UTF-8<span class="token punctuation">"</span></span> <span class="token attr-name">indent</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>yes<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>variable</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>terms<span class="token punctuation">"</span></span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>//def/term<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>template</span> <span class="token attr-name">match</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>definitions<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>definitions</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>apply-templates</span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>def<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>definitions</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>template</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>template</span> <span class="token attr-name">match</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>def<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>term</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>value-of</span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>term<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>term</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>descr</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>apply-templates</span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>descr<span class="token punctuation">"</span></span> <span class="token attr-name">mode</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>term<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>with-param</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>terms<span class="token punctuation">"</span></span> <span class="token attr-name">as</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>xs:string+<span class="token punctuation">"</span></span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>$terms<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>apply-templates</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>descr</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>template</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>template</span> <span class="token attr-name">match</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>text()<span class="token punctuation">"</span></span> <span class="token attr-name">mode</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>term<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>param</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>terms<span class="token punctuation">"</span></span> <span class="token attr-name">as</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>xs:string+<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>analyze-string</span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>.<span class="token punctuation">"</span></span> <span class="token attr-name">regex</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>{fn:string-join($terms, '|')}<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>matching-substring</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>{.}<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>value-of</span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>.<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>matching-substring</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>non-matching-substring</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>value-of</span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>.<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>non-matching-substring</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>analyze-string</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>template</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>stylesheet</span><span class="token punctuation">></span></span> </code></pre> <p>Ergebnis:</p> <pre><code class="block language-xml"><span class="token prolog"><?xml version="1.0" encoding="UTF-8"?></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>definitions</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>term</span><span class="token punctuation">></span></span>Abhilfemaßnahme (FDA)<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>term</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>descr</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Routine<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Routine<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span>-Instandhaltung oder Wartung eines <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Gerät<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Gerät<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span>es etc.<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>descr</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>term</span><span class="token punctuation">></span></span>Routine<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>term</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>descr</span><span class="token punctuation">></span></span>Hier taucht der Begriff Abhilfemaßnahme (FDA) auf.<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>descr</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>term</span><span class="token punctuation">></span></span>Gerät<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>term</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>descr</span><span class="token punctuation">></span></span>Dies ist ein Test für <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Routine<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Routine<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> und Abhilfemaßnahme (FDA).<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>descr</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>definitions</span><span class="token punctuation">></span></span> </code></pre> <p>Grüße,<br> Thomas</p> XSL | Satz in einzelne Wörter zerlegen Tue, 17 Mar 20 19:57:00 Z https://forum.selfhtml.org/self/2020/mar/15/xsl-satz-in-einzelne-worter-zerlegen/1767283?srt=yes#m1767283 https://forum.selfhtml.org/self/2020/mar/15/xsl-satz-in-einzelne-worter-zerlegen/1767283?srt=yes#m1767283 <p>Hallo Thomas,</p> <p>besten Dank für deinen Entwurf. Ich verstehe dabei aber nicht ganz, welchen Unterschied xs:string+ zu xs:string hat und warum ich bei fn:string-join keinen anderen Operator nutzen kann (habe es auch mit Leerzeichen, Komma und Schrägstrich statt dem Union-Operator | probiert). Warum trennt er $terms durch den Union Operator nach Wörtern und nicht nach gespeicherten Elementen? Wenn ich die Elemente unter $terms zählen lasse, sind es genau 3 (also "Abhilfemaßnahme (FDA)" als ein Element).</p> <p>Ich habe ein wenig mit deiner Lösung herumgespielt und versucht, eine Schleife um $terms bzw. um xsl:analyze-string zu legen, aber so richtig ist mir nichts geglückt.</p> <p>Mein Quellcode ist etwas komplexer als ich ihn hier dargestellt habe (u.a. mit mehreren Kindelemente, zweisprachig und v.a. viele Wortgruppen innerhalb von <term>. Deshalb muss ich mir noch etwas anderes einfallen lassen...</p> <p>Dennoch vielen lieben Dank für deine Hilfe und guten Ideen! Janine</p> XSL | Satz in einzelne Wörter zerlegen Tue, 17 Mar 20 20:11:40 Z https://forum.selfhtml.org/self/2020/mar/15/xsl-satz-in-einzelne-worter-zerlegen/1767284?srt=yes#m1767284 https://forum.selfhtml.org/self/2020/mar/15/xsl-satz-in-einzelne-worter-zerlegen/1767284?srt=yes#m1767284 <p>Hallo Janine,</p> <blockquote> <p>besten Dank für deinen Entwurf. Ich verstehe dabei aber nicht ganz, welchen Unterschied xs:string+ zu xs:string hat und warum ich bei fn:string-join keinen anderen Operator nutzen kann (habe es auch mit Leerzeichen, Komma und Schrägstrich statt dem Union-Operator | probiert). Warum trennt er $terms durch den Union Operator nach Wörtern und nicht nach gespeicherten Elementen? Wenn ich die Elemente unter $terms zählen lasse, sind es genau 3 (also "Abhilfemaßnahme (FDA)" als ein Element).</p> </blockquote> <p>xs:string ist genau ein String. xs:string+ steht für 1 bis n Strings in einer Sequenz wie ('a', 'b', 'c'). Das + entspricht dem in der DTD- oder Regex-Syntax.</p> <p>Der | bildet den ODER-Operator für den regulären Ausdruck mit den einzelnen Begriffen.</p> <p>Klar, 3, denn "Abhilfemaßnahme (FDA)" war doch offenbar auch als ein Begriff gedacht, siehe die erwartete Ausgabestruktur.</p> <blockquote> <p>Ich habe ein wenig mit deiner Lösung herumgespielt und versucht, eine Schleife um $terms bzw. um xsl:analyze-string zu legen, aber so richtig ist mir nichts geglückt.</p> </blockquote> <p>Ja, ist ziemlich vertrackt. Mit separaten Begriffen funktioniert es gut, mit Wortkombinationen wird es komplexer.</p> <p>Grüße,<br> Thomas</p> XSL | Satz in einzelne Wörter zerlegen Wed, 18 Mar 20 09:18:27 Z https://forum.selfhtml.org/self/2020/mar/15/xsl-satz-in-einzelne-worter-zerlegen/1767292?srt=yes#m1767292 https://forum.selfhtml.org/self/2020/mar/15/xsl-satz-in-einzelne-worter-zerlegen/1767292?srt=yes#m1767292 <p>So, jetzt habe ich nochmal weitergebastelt.</p> <p>Folgender Quellcode:</p> <pre><code class="block language-html"><span class="token prolog"><?xml version="1.0" encoding="ISO-8859-1"?></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>definitions</span> <span class="token attr-name"><span class="token namespace">xmlns:</span>xsl</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.w3.org/1999/XSL/Transform<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>term</span><span class="token punctuation">></span></span>Abhilfemaßnahme (FDA)<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>term</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>descr</span><span class="token punctuation">></span></span>Routine-Instandhaltung oder Wartung eines Gerätes etc.<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>descr</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>term</span><span class="token punctuation">></span></span>Routine<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>term</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>descr</span><span class="token punctuation">></span></span>Hier taucht der Begriff Abhilfemaßnahme (FDA) auf.<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>descr</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>term</span><span class="token punctuation">></span></span>Gerät<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>term</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>descr</span><span class="token punctuation">></span></span>Dies ist ein Test für Routine und Abhilfemaßnahme (FDA).<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>descr</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>definitions</span><span class="token punctuation">></span></span> </code></pre> <p>Mit diesem ersten Stylesheet:</p> <pre><code class="block language-html"><span class="token prolog"><?xml version="1.0" encoding="UTF-8"?></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>stylesheet</span> <span class="token attr-name"><span class="token namespace">xmlns:</span>xsl</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.w3.org/1999/XSL/Transform<span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">xmlns:</span>fn</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.w3.org/2005/xpath-functions<span class="token punctuation">"</span></span> <span class="token attr-name">version</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>2.0<span class="token punctuation">"</span></span> <span class="token attr-name">exclude-result-prefixes</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>#all<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>output</span> <span class="token attr-name">method</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>xml<span class="token punctuation">"</span></span> <span class="token attr-name">encoding</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>UTF-8<span class="token punctuation">"</span></span> <span class="token attr-name">indent</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>yes<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>template</span> <span class="token attr-name">match</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>definitions<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>variable</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>term<span class="token punctuation">"</span></span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>def/term<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>all</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>for-each</span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>//def<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>variable</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>actdef<span class="token punctuation">"</span></span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>.<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>attribute</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>actterm<span class="token punctuation">"</span></span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>$actdef/term<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>attribute</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>actdescr<span class="token punctuation">"</span></span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>$actdef/descr<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>terms</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>for-each</span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>$term<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>variable</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>actterm<span class="token punctuation">"</span></span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>$actdef/term<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>if</span> <span class="token attr-name">test</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>fn:contains($actdef/descr, .)<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>term</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>value-of</span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>fn:substring-before($actdef/descr, .)<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>text</span><span class="token punctuation">></span></span><span class="token entity named-entity" title="<">&lt;</span>a<span class="token entity named-entity" title=">">&gt;</span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>text</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>value-of</span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>.<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>text</span><span class="token punctuation">></span></span><span class="token entity named-entity" title="<">&lt;</span>/a<span class="token entity named-entity" title=">">&gt;</span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>text</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>value-of</span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>fn:substring-after($actdef/descr, .)<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>term</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>if</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>for-each</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>terms</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>for-each</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>all</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>template</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>stylesheet</span><span class="token punctuation">></span></span> </code></pre> <p>Erhalte ich die folgende Ausgabe (hier werden die Begriffe noch doppelt geschrieben):</p> <pre><code class="block language-html"><span class="token prolog"><?xml version="1.0" encoding="UTF-8"?></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>all</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>def</span> <span class="token attr-name">actterm</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Abhilfemaßnahme (FDA)<span class="token punctuation">"</span></span> <span class="token attr-name">actdescr</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Routine-Instandhaltung oder Wartung eines Gerätes etc.<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>terms</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>term</span><span class="token punctuation">></span></span><span class="token entity named-entity" title="<">&lt;</span>a<span class="token entity named-entity" title=">">&gt;</span>Routine<span class="token entity named-entity" title="<">&lt;</span>/a<span class="token entity named-entity" title=">">&gt;</span>-Instandhaltung oder Wartung eines Gerätes etc.<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>term</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>term</span><span class="token punctuation">></span></span>Routine-Instandhaltung oder Wartung eines <span class="token entity named-entity" title="<">&lt;</span>a<span class="token entity named-entity" title=">">&gt;</span>Gerät<span class="token entity named-entity" title="<">&lt;</span>/a<span class="token entity named-entity" title=">">&gt;</span>es etc.<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>term</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>terms</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>def</span> <span class="token attr-name">actterm</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Routine<span class="token punctuation">"</span></span> <span class="token attr-name">actdescr</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Hier taucht der Begriff Abhilfemaßnahme (FDA) auf.<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>terms</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>term</span><span class="token punctuation">></span></span>Hier taucht der Begriff <span class="token entity named-entity" title="<">&lt;</span>a<span class="token entity named-entity" title=">">&gt;</span>Abhilfemaßnahme (FDA)<span class="token entity named-entity" title="<">&lt;</span>/a<span class="token entity named-entity" title=">">&gt;</span> auf.<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>term</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>terms</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>def</span> <span class="token attr-name">actterm</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Gerät<span class="token punctuation">"</span></span> <span class="token attr-name">actdescr</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Dies ist ein Test für Routine und Abhilfemaßnahme (FDA).<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>terms</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>term</span><span class="token punctuation">></span></span>Dies ist ein Test für Routine und <span class="token entity named-entity" title="<">&lt;</span>a<span class="token entity named-entity" title=">">&gt;</span>Abhilfemaßnahme (FDA)<span class="token entity named-entity" title="<">&lt;</span>/a<span class="token entity named-entity" title=">">&gt;</span>.<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>term</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>term</span><span class="token punctuation">></span></span>Dies ist ein Test für <span class="token entity named-entity" title="<">&lt;</span>a<span class="token entity named-entity" title=">">&gt;</span>Routine<span class="token entity named-entity" title="<">&lt;</span>/a<span class="token entity named-entity" title=">">&gt;</span> und Abhilfemaßnahme (FDA).<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>term</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>terms</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>all</span><span class="token punctuation">></span></span> </code></pre> <p>Und auf diese Ausgabe wende ich nun das 2. Stylesheet an (geht das auch in einem Schritt?):</p> <pre><code class="block language-html"><span class="token prolog"><?xml version="1.0" encoding="UTF-8"?></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>stylesheet</span> <span class="token attr-name"><span class="token namespace">xmlns:</span>xsl</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.w3.org/1999/XSL/Transform<span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">xmlns:</span>fn</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.w3.org/2005/xpath-functions<span class="token punctuation">"</span></span> <span class="token attr-name">version</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>2.0<span class="token punctuation">"</span></span> <span class="token attr-name">exclude-result-prefixes</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>#all<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>output</span> <span class="token attr-name">method</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>xml<span class="token punctuation">"</span></span> <span class="token attr-name">encoding</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>UTF-8<span class="token punctuation">"</span></span> <span class="token attr-name">indent</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>yes<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>template</span> <span class="token attr-name">match</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>all<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>all</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>for-each</span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>def<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>attribute</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>actterm<span class="token punctuation">"</span></span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>@actterm<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>attribute</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>actdescr<span class="token punctuation">"</span></span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>@actdescr<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>descr</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>choose</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>when</span> <span class="token attr-name">test</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>fn:count(terms/term) > 1<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token comment"><!--Für alle Elemente mit mehr als einer Beschreibung...--></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>variable</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>text<span class="token punctuation">"</span></span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token punctuation">"</span></span><span class="token punctuation">/></span></span><span class="token comment"><!--... soll zunächst eine leere Variable angelegt werden.--></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>for-each</span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>terms/term<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>variable</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>text<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>value-of</span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>$text<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span><span class="token comment"><!--Die leere Variable wird hier aufgerufen und der neue Wert in die gleiche Variable gespeichert.--></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>copy-of</span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>fn:substring-before(., '<span class="token entity named-entity" title="<">&lt;</span>/a<span class="token entity named-entity" title=">">&gt;</span>')<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>text</span><span class="token punctuation">></span></span><span class="token entity named-entity" title="<">&lt;</span>/a<span class="token entity named-entity" title=">">&gt;</span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>text</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>variable</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>for-each</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>value-of</span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>$text<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span><span class="token comment"><!--Hier wird meine zusammengesetzte Variable ausgegeben.--></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>when</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>otherwise</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>copy-of</span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>terms/term<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>otherwise</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>choose</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>descr</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>for-each</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>all</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>template</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>stylesheet</span><span class="token punctuation">></span></span> </code></pre> <p>Leider funktioniert das hier noch nicht so wie es soll. Ohne <xsl:for-each select="terms/term"> klappt es: also nur durch Ausgabe von <xsl:copy-of select="fn:substring-before(terms/term[1], '&lt;/a&gt;')"/> Es ist auch noch ein Fehler bei der Definition der leeren Variablen, den ich nicht verstehe.</p> <p>Siehst du hier meinen Fehler?</p> <p>Ziel sollte etwas in dieser Art sein:</p> <pre><code class="block language-html"><span class="token prolog"><?xml version="1.0" encoding="UTF-8"?></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>all</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>def</span> <span class="token attr-name">actterm</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Abhilfemaßnahme (FDA)<span class="token punctuation">"</span></span> <span class="token attr-name">actdescr</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Routine-Instandhaltung oder Wartung eines Gerätes etc.<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>descr</span><span class="token punctuation">></span></span><span class="token entity named-entity" title="<">&lt;</span>a<span class="token entity named-entity" title=">">&gt;</span>Routine<span class="token entity named-entity" title="<">&lt;</span>/a<span class="token entity named-entity" title=">">&gt;</span>-Instandhaltung oder Wartung eines <span class="token entity named-entity" title="<">&lt;</span>a<span class="token entity named-entity" title=">">&gt;</span>Gerät<span class="token entity named-entity" title="<">&lt;</span>/a<span class="token entity named-entity" title=">">&gt;</span>es etc.<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>descr</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>def</span> <span class="token attr-name">actterm</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Routine<span class="token punctuation">"</span></span> <span class="token attr-name">actdescr</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Hier taucht der Begriff Abhilfemaßnahme (FDA) auf.<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>descr</span><span class="token punctuation">></span></span>Hier taucht der Begriff <span class="token entity named-entity" title="<">&lt;</span>a<span class="token entity named-entity" title=">">&gt;</span>Abhilfemaßnahme (FDA)<span class="token entity named-entity" title="<">&lt;</span>/a<span class="token entity named-entity" title=">">&gt;</span> auf.<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>descr</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>def</span> <span class="token attr-name">actterm</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Gerät<span class="token punctuation">"</span></span> <span class="token attr-name">actdescr</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Dies ist ein Test für Routine und Abhilfemaßnahme (FDA).<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>descr</span><span class="token punctuation">></span></span>Dies ist ein Test für <span class="token entity named-entity" title="<">&lt;</span>a<span class="token entity named-entity" title=">">&gt;</span>Routine<span class="token entity named-entity" title="<">&lt;</span>/a<span class="token entity named-entity" title=">">&gt;</span> und <span class="token entity named-entity" title="<">&lt;</span>a<span class="token entity named-entity" title=">">&gt;</span>Abhilfemaßnahme (FDA)<span class="token entity named-entity" title="<">&lt;</span>/a<span class="token entity named-entity" title=">">&gt;</span>.<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>descr</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>all</span><span class="token punctuation">></span></span> </code></pre> <p>Viele Grüße, Janine</p> XSL | Satz in einzelne Wörter zerlegen Wed, 18 Mar 20 12:45:49 Z https://forum.selfhtml.org/self/2020/mar/15/xsl-satz-in-einzelne-worter-zerlegen/1767294?srt=yes#m1767294 https://forum.selfhtml.org/self/2020/mar/15/xsl-satz-in-einzelne-worter-zerlegen/1767294?srt=yes#m1767294 <p>Hallo Janine,</p> <blockquote> <p>Ziel sollte etwas in dieser Art sein:</p> <pre><code class="block language-html"><span class="token prolog"><?xml version="1.0" encoding="UTF-8"?></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>all</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>def</span> <span class="token attr-name">actterm</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Abhilfemaßnahme (FDA)<span class="token punctuation">"</span></span> <span class="token attr-name">actdescr</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Routine-Instandhaltung oder Wartung eines Gerätes etc.<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>descr</span><span class="token punctuation">></span></span><span class="token entity named-entity" title="<">&lt;</span>a<span class="token entity named-entity" title=">">&gt;</span>Routine<span class="token entity named-entity" title="<">&lt;</span>/a<span class="token entity named-entity" title=">">&gt;</span>-Instandhaltung oder Wartung eines <span class="token entity named-entity" title="<">&lt;</span>a<span class="token entity named-entity" title=">">&gt;</span>Gerät<span class="token entity named-entity" title="<">&lt;</span>/a<span class="token entity named-entity" title=">">&gt;</span>es etc.<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>descr</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>def</span> <span class="token attr-name">actterm</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Routine<span class="token punctuation">"</span></span> <span class="token attr-name">actdescr</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Hier taucht der Begriff Abhilfemaßnahme (FDA) auf.<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>descr</span><span class="token punctuation">></span></span>Hier taucht der Begriff <span class="token entity named-entity" title="<">&lt;</span>a<span class="token entity named-entity" title=">">&gt;</span>Abhilfemaßnahme (FDA)<span class="token entity named-entity" title="<">&lt;</span>/a<span class="token entity named-entity" title=">">&gt;</span> auf.<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>descr</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>def</span> <span class="token attr-name">actterm</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Gerät<span class="token punctuation">"</span></span> <span class="token attr-name">actdescr</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Dies ist ein Test für Routine und Abhilfemaßnahme (FDA).<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>descr</span><span class="token punctuation">></span></span>Dies ist ein Test für <span class="token entity named-entity" title="<">&lt;</span>a<span class="token entity named-entity" title=">">&gt;</span>Routine<span class="token entity named-entity" title="<">&lt;</span>/a<span class="token entity named-entity" title=">">&gt;</span> und <span class="token entity named-entity" title="<">&lt;</span>a<span class="token entity named-entity" title=">">&gt;</span>Abhilfemaßnahme (FDA)<span class="token entity named-entity" title="<">&lt;</span>/a<span class="token entity named-entity" title=">">&gt;</span>.<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>descr</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>all</span><span class="token punctuation">></span></span> </code></pre> </blockquote> <p>Das habe ich unter Rückgriff auf zwei Funktionen von <a href="http://www.xsltfunctions.com/" rel="nofollow noopener noreferrer">FunctX</a> erreicht [<a href="http://www.xsltfunctions.com/xsl/functx_replace-multi.html" rel="nofollow noopener noreferrer">functx:replace-multi</a> und <a href="http://www.xsltfunctions.com/xsl/functx_if-absent.html" rel="nofollow noopener noreferrer">functx:if-absent</a>]. Ist schon eine ziemlich wilde Konstruktion geworden, vor allem um den Part mit (FDA) richtig einzubeziehen, dafür die replace-Aktionen. Die runden Klammern sind ja selbst Teile von regulären Ausdrücken zur Gruppierung.</p> <pre><code class="block language-xml"><span class="token prolog"><?xml version="1.0" encoding="UTF-8"?></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>stylesheet</span> <span class="token attr-name">version</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>2.0<span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">xmlns:</span>xsl</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.w3.org/1999/XSL/Transform<span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">xmlns:</span>xs</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.w3.org/2001/XMLSchema<span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">xmlns:</span>fn</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.w3.org/2005/xpath-functions<span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">xmlns:</span>functx</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.functx.com<span class="token punctuation">"</span></span> <span class="token attr-name">exclude-result-prefixes</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>#all<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>output</span> <span class="token attr-name">method</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>xml<span class="token punctuation">"</span></span> <span class="token attr-name">version</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>1.0<span class="token punctuation">"</span></span> <span class="token attr-name">encoding</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>UTF-8<span class="token punctuation">"</span></span> <span class="token attr-name">indent</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>yes<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>function</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>functx:replace-multi<span class="token punctuation">"</span></span> <span class="token attr-name">as</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>xs:string?<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>param</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>arg<span class="token punctuation">"</span></span> <span class="token attr-name">as</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>xs:string?<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>param</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>changeFrom<span class="token punctuation">"</span></span> <span class="token attr-name">as</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>xs:string*<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>param</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>changeTo<span class="token punctuation">"</span></span> <span class="token attr-name">as</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>xs:string*<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>sequence</span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>if(fn:count($changeFrom) > 0) then functx:replace-multi(replace($arg, $changeFrom[1], functx:if-absent($changeTo[1], '')), $changeFrom[fn:position() > 1], $changeTo[fn:position() > 1]) else $arg<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>function</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>function</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>functx:if-absent<span class="token punctuation">"</span></span> <span class="token attr-name">as</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>item()*<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>param</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>arg<span class="token punctuation">"</span></span> <span class="token attr-name">as</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>item()*<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>param</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>value<span class="token punctuation">"</span></span> <span class="token attr-name">as</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>item()*<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>sequence</span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>if(fn:exists($arg)) then $arg else $value<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>function</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>template</span> <span class="token attr-name">match</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>definitions<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>variable</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>from<span class="token punctuation">"</span></span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>for $s in //def/term return fn:replace(fn:replace($s, ' \(', '_'), '\)', '~')<span class="token punctuation">"</span></span> <span class="token attr-name">as</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>xs:string*<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>variable</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>to<span class="token punctuation">"</span></span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>for $s in $from return fn:concat('<span class="token entity named-entity" title="<">&lt;</span>a<span class="token entity named-entity" title=">">&gt;</span>', fn:replace(fn:replace($s, ' \(', '_'), '\)', '~'), '<span class="token entity named-entity" title="<">&lt;</span>/a<span class="token entity named-entity" title=">">&gt;</span>')<span class="token punctuation">"</span></span> <span class="token attr-name">as</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>xs:string*<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>all</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>for-each</span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>def<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>def</span> <span class="token attr-name">actterm</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>{term}<span class="token punctuation">"</span></span> <span class="token attr-name">actdescr</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>{descr}<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>descr</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>value-of</span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>fn:replace(fn:replace( functx:replace-multi(fn:replace(fn:replace(descr, ' \(', '_'), '\)', '~'), $from, $to), '_', ' ('), '~', ')')<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>descr</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>def</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>for-each</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>all</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>template</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>stylesheet</span><span class="token punctuation">></span></span> </code></pre> <p>Viel Spaß damit. </p> <p>Grüße,<br> Thomas</p>