tag:forum.selfhtml.org,2005:/self Frage zum Wiki-Artikel XML/XSL/XPath/Funktionen: geschweifte Klammern – SELFHTML-Forum 2021-05-05T19:09:29Z https://forum.selfhtml.org/self/2021/may/05/frage-zum-wiki-artikel-xml-xsl-xpath-funktionen-geschweifte-klammern/1788124#m1788124 guest 2021-05-05T16:14:07Z 2021-05-05T16:14:07Z Frage zum Wiki-Artikel XML/XSL/XPath/Funktionen: geschweifte Klammern <p>Im allerletzten Absatz (unparsed-entity-uri()) wird bzgl. der geschweiften Klammern auf XPath-Syntax verwiesen, dort ist aber nichts bzgl. geschweifter Klammern zu finden, fehlt hier etwas?</p> https://forum.selfhtml.org/self/2021/may/05/frage-zum-wiki-artikel-xml-xsl-xpath-funktionen-geschweifte-klammern/1788126#m1788126 Rolf B 2021-05-05T17:00:03Z 2021-05-05T17:18:07Z Frage zum Wiki-Artikel XML/XSL/XPath/Funktionen: geschweifte Klammern <p>Hallo guest,</p> <p>was der Artikel nicht verrät: der Link führt zu XPath, also das, was in den geschweiften Klammern steht.</p> <p>Was er auch nirgends verrät: die geschweiften Klammern sind Teil von XSLT, nicht von XPath. Leider führt der XSL-Bereich des Wikis nicht auf, was diese geschweiften Klammern sollen. Das aufzuschreiben, ist dem Autor durchgegangen: Wenn Du in einem Template einen XPath-Ausdruck einsetzen willst, um einen Wert abzurufen, dann schreibst Du den in geschweifte Klammern.</p> <p>Man nennt das Attributwert-Templates, die verwendest Du, wenn Du das Ergebnis eines XPath-Ausdrucks direkt in die Ausgabe übernehmen willst. Das ist einfacher als Attribute mit xsl:attribute hinzuzufügen (wobei ich nicht wirklich Ahnung von XSL habe und mir das gerade selbst anlese). Ich traue mir auch nicht zu, das qualifiziert ins Wiki einzuarbeiten.</p> <p>Der Text im Wiki ist über 20 Jahre alt; ich habe ihn in einem SelfHTML 8.0 Mirror der Humboldt-Uni in Berlin von 2001 gefunden. Dieser Text wurde nie überarbeitet, und von denen, die sich ums Wiki kümmern, vermutlich auch nie wirklich erfasst. Matthias hat ihn 2015 einfach aus dem alten SelfHTML ins Wiki übernommen.</p> <p>Der Umstand, dass dieser Text eigentlich nie überarbeitet wurde, also sozusagen write-only ist, dürfte eine Menge über seine Relevanz besagen .</p> <p>Aber ich mag da auch einfach nur ein Ignorant sein und es gibt eine lebendige XSL-Community (die sich hier im Forum aber zwei Personen beschränkt: eine, die Fragen stellt und eine, die darauf Antworten weiß).</p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - obstruxi </div> https://forum.selfhtml.org/self/2021/may/05/frage-zum-wiki-artikel-xml-xsl-xpath-funktionen-geschweifte-klammern/1788128#m1788128 Rolf B 2021-05-05T17:27:38Z 2021-05-05T17:28:04Z Frage an alle - XSLT und Attributwert-Templates <p>Hallo an alle XSLT Kenner,</p> <p>sind die folgenden XSLT-Konstrukte gleichwertig? Oder gibt es da Bedeutungsunterschiede - abgesehen von möglichem Unfug, den ich in meiner XML Unkenntnis verzapft haben könnte...</p> <p>Ich möchte im Wiki gern etwas hinzufügen, um die Frage des TO zu klären . aber keinen Unsinn schreiben.</p> <p>(1) src Attribut explizit hinzufügen, mit explizitem value-of</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>bild<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>img</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>src<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>@quelle<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 punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>img</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>(2) src Attribut explizit hinzufügen, mit Wert via select-Attribut</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>bild<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>img</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>src<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>@quelle<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>img</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>(3) src Attribut inline hinzufügen, mit Wert via Attributwert-Template</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>bild<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>img</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>{@quelle}<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 punctuation">></span></span> </code></pre> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - obstruxi </div> https://forum.selfhtml.org/self/2021/may/05/frage-zum-wiki-artikel-xml-xsl-xpath-funktionen-geschweifte-klammern/1788135#m1788135 Rolf B 2021-05-05T19:09:29Z 2021-05-05T19:09:29Z Frage zum Wiki-Artikel XML/XSL/XPath/Funktionen: geschweifte Klammern <p>Hallo Rolf,</p> <p>so - ich habe im Wiki fleißig editiert und das Thema Attributwert-Templates näher beleuchtet.</p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - obstruxi </div> https://forum.selfhtml.org/self/2021/may/05/frage-zum-wiki-artikel-xml-xsl-xpath-funktionen-geschweifte-klammern/1788129#m1788129 Robert B. 2021-05-05T17:42:17Z 2021-05-05T17:42:17Z Frage an alle - XSLT und Attributwert-Templates <p>Hallo Rolf,</p> <blockquote> <p>sind die folgenden XSLT-Konstrukte gleichwertig?</p> </blockquote> <p>Nein:</p> <blockquote> <p>Oder gibt es da Bedeutungsunterschiede - abgesehen von möglichem Unfug, den ich in meiner XML Unkenntnis verzapft haben könnte …</p> </blockquote> <p>„Unfug“ würde ich das jetzt nicht nennen wollen …</p> <blockquote> <p>(2) src Attribut explizit hinzufügen, mit Wert via select-Attribut</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>bild<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>img</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>src<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>@quelle<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>img</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> </blockquote> <p><a href="https://wiki.selfhtml.org/wiki/XML/XSL/XSLT/Sprachelemente#xsl:attribute_.28Attribut_im_Ergebnisbaum_erzeugen.29" rel="nofollow noopener noreferrer"><code>xsl:attribute</code></a> besitzt kein <code>select</code>-Attribut.</p> <p>Ich habe die drei Beispiele für dich gerade einmal ausprobiert:</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">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 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>bild<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>img</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>src<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>@quelle<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 punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>img</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>img</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>src<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>@quelle<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>img</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>img</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>{@quelle}<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 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>angewendet auf</p> <pre><code class="block language-xml"><span class="token prolog"><?xml version="1.0"?></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>bild</span> <span class="token attr-name">quelle</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>test<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> </code></pre> <p>ergibt</p> <pre><code class="block language-xml"><span class="token prolog"><?xml version="1.0"?></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>img</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>test<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>img</span> <span class="token attr-name">src</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>img</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>test<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> </code></pre> <p>Viele Grüße<br> Robert</p> https://forum.selfhtml.org/self/2021/may/05/frage-zum-wiki-artikel-xml-xsl-xpath-funktionen-geschweifte-klammern/1788131#m1788131 Rolf B 2021-05-05T18:09:24Z 2021-05-05T18:18:11Z Frage an alle - XSLT und Attributwert-Templates <p>Hallo Robert,</p> <blockquote> <p>xsl:attribute besitzt kein select-Attribut.</p> </blockquote> <p><a href="https://www.w3.org/TR/xslt20/#creating-attributes" rel="nofollow noopener noreferrer">Doch</a> - ich habe nur keine Ahnung, wie weit XSLT 2 unterstützt wird.</p> <p>In XSLT 1 gibt's das nicht, da hast Du recht.</p> <p>Ich probiere gerade mit dem XSLTProcessor Objekt rum das in Chrome eingebaut ist - und jetzt, wo ich deine Antwort sehe, komme ich da an den gleichen Punkt: geht nicht.</p> <p>Scheinbar implementieren die nur XSLT 1.</p> <p>Wer XSLT 2 will, scheint um Saxon-JS nicht herumzukommen. Immerhin gratis, solange man keinen Supportvertrag will. Aber das Ding bau ich jetzt nicht an...</p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - obstruxi </div>