XSLT 1.0 when – SELFHTML-Forum Forum als Ergänzung zum SELFHTML-Wiki und zur Dokumentation SELFHTML https://forum.selfhtml.org/self XSLT 1.0 when Thu, 14 Oct 21 19:20:14 Z https://forum.selfhtml.org/self/2021/oct/14/xslt-1-0-when/1792504#m1792504 https://forum.selfhtml.org/self/2021/oct/14/xslt-1-0-when/1792504#m1792504 <p>Hi,</p> <p>ich würde gerne mittels XSLT ein leeres XML erstellen, falls ein bestimmter Wert (ADD_002/IDENTIFIER) ungleich test1 oder ungleich test2 ist. -> Also, wenn ADD_002/IDENTIFIER = test 1 oder test 2 dann ist alles ok -> Wenn ADD_002/IDENTIFIER = test3, dann soll das XML leer sein. (alle Knoten sollen entfernt werden)</p> <p>XML:</p> <pre><code class="block"><?xml version="1.0" encoding="ISO-8859-1"?> <SEEDESADV> <CNT> <GRP> <MSG> <ASN> <ADD_002> <IDENTIFIER>test3</IDENTIFIER> </ADD_002> <ITEM> <ITEM_POS> <LINE_ITEM_NUMBER>1</LINE_ITEM_NUMBER> </ITEM_POS> </ITEM> </ASN> </MSG> </GRP> </CNT> </SEEDESADV> </code></pre> <p>XSLT:</p> <pre><code class="block"> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" indent="yes" encoding="UTF-8"/> <xsl:strip-space elements="*" /> <xsl:template match="/"> <xsl:choose> <xsl:when test="//ADD_002[IDENTIFIER != 'test1' or != 'test2']"></xsl:when> <xsl:otherwise> <xsl:apply-templates select="@* | node()"/></xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet> </code></pre> <p>Vielen Dank</p> <p>LG Julian</p> XSLT 1.0 when Thu, 14 Oct 21 19:36:48 Z https://forum.selfhtml.org/self/2021/oct/14/xslt-1-0-when/1792506#m1792506 https://forum.selfhtml.org/self/2021/oct/14/xslt-1-0-when/1792506#m1792506 <p>Hi,</p> <blockquote> <p>ich würde gerne mittels XSLT ein leeres XML erstellen, falls ein bestimmter Wert (ADD_002/IDENTIFIER) ungleich test1 oder ungleich test2 ist.</p> </blockquote> <p>Also immer?</p> <p>Denn wenn identifier == test1 ist, ist es ungleich test2, wenn identifier gleich test2 ist, ist es ungleich test1, und als letzter Fall bleibt noch, daß identifier zu beiden ungleich ist.</p> <p>Du willst:</p> <p>nicht(identifier == 'test1' oder identifier == 'test2')</p> <blockquote> <p>XSLT:</p> <pre><code class="block"> <xsl:when test="//ADD_002[IDENTIFIER != 'test1' or != 'test2']"></xsl:when> </code></pre> </blockquote> <p>nach dem or fehlt der Wert, den Du mit != 'test2' vergleichen willst. Wenn das wieder //ADD_002/IDENTIFIER ist, dann muß das nochmal dastehen.</p> <p>Und mit / statt [</p> <p>Aber wie oben schon gesagt, die Bedingung ist so eh nicht richtig.</p> <p>cu,<br> Andreas a/k/a MudGuard</p> XSLT 1.0 when Thu, 14 Oct 21 19:50:05 Z https://forum.selfhtml.org/self/2021/oct/14/xslt-1-0-when/1792507#m1792507 https://forum.selfhtml.org/self/2021/oct/14/xslt-1-0-when/1792507#m1792507 <p>also: <code><xsl:when test="not(//ADD_002/IDENTIFIER = 'test1' or //ADD_002/IDENTIFIER = 'test2')"></xsl:when></code>?</p> XSLT 1.0 when Thu, 14 Oct 21 20:34:58 Z https://forum.selfhtml.org/self/2021/oct/14/xslt-1-0-when/1792508#m1792508 https://forum.selfhtml.org/self/2021/oct/14/xslt-1-0-when/1792508#m1792508 <p>Hallo MudGuard,</p> <blockquote> <p>die Bedingung ist so eh nicht richtig.</p> </blockquote> <p>"ungleich diesem oder ungleich jenem" ist umgangssprachlich ein "weder noch", und beim Programmieren fällt man darauf rein.</p> <p>Genauer formuliert ist es das, was Du schriebst: NICHT(dies ODER jenes). Und die beiden Logikregeln von De Morgan sagen:</p> <pre><code class="block">NICHT(A ODER B)   ⇔   (NICHT A) UND (NICHT B) NICHT(A UND B)   ⇔   (NICHT A) ODER (NICHT B) </code></pre> <p>Der Vorschlag von Juls wird wohl gehen, aber im XSLT könnte auch stehen:</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>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>//ADD_002[IDENTIFIER != 'test1' and != 'test2']<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>when</span><span class="token punctuation">></span></span> ^^^ </code></pre> <p>Das setzt jetzt voraus, dass der Rest der Syntax stimmte. Eine Abkürzungsschreibweise<br> <code>X != A and != B</code> an Stelle von <code>X != A and X != B</code> ist mir bisher nur in der so genannten „Programmiersprache“ COBOL<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup> zugestoßen.</p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - obstruxi </div> <hr class="footnotes-sep"> <section class="footnotes"> <ol class="footnotes-list"> <li id="fn1" class="footnote-item"><p>In Wahrheit ist es eine Kunstsprache, in der man den Literatur-Nobelpreis gewinnen kann <a href="#fnref1" class="footnote-backref">↩︎</a></p> </li> </ol> </section> XSLT 1.0 when Fri, 15 Oct 21 03:10:16 Z https://forum.selfhtml.org/self/2021/oct/14/xslt-1-0-when/1792513#m1792513 https://forum.selfhtml.org/self/2021/oct/14/xslt-1-0-when/1792513#m1792513 <p>@@Rolf B</p> <blockquote> <p>Eine Abkürzungsschreibweise <code>X != A and != B</code> an Stelle von <code>X != A and X != B</code> ist mir bisher nur in der so genannten „Programmiersprache“ COBOL zugestoßen.</p> </blockquote> <p>JavaScript: <code class="language-js"><span class="token operator">!</span><span class="token punctuation">[</span><span class="token constant">A</span><span class="token punctuation">,</span> <span class="token constant">B</span><span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">includes</span><span class="token punctuation">(</span><span class="token constant">X</span><span class="token punctuation">)</span></code></p> <p>PHP: <code class="language-php"><span class="token operator">!</span><span class="token function">in_array</span><span class="token punctuation">(</span><span class="token variable">$X</span><span class="token punctuation">,</span> <span class="token punctuation">[</span><span class="token variable">$A</span><span class="token punctuation">,</span> <span class="token variable">$B</span><span class="token punctuation">]</span><span class="token punctuation">)</span></code></p> <p> LLAP</p> <div class="signature">-- <br> <em>„Dann ist ja auch schrecklich, dass wir in einem Land leben, in dem nicht nur Bildungswillige leben, sondern auch hinreichende Zahlen von Bekloppten. Das darf ich so locker formulieren, ich bin ja jetzt Rentner und muss nicht mehr auf jedes Wort achten.“</em><br> — Joachim Gauck über Impfgegner </div>