tag:forum.selfhtml.org,2005:/self
XSLT 1.0 File-Erstellung stoppen – SELFHTML-Forum
2019-01-16T12:14:37Z
https://forum.selfhtml.org/self/2019/jan/16/xslt-1-punkt-0-file-erstellung-stoppen/1740787#m1740787
Julian P.
2019-01-16T08:24:39Z
2019-01-16T08:24:39Z
XSLT 1.0 File-Erstellung stoppen
<p>Hi,</p>
<p>ist es möglich, dass man im XSLT festlegt, wenn bestimmte Kriterien erfüllt sind, es gar kein File erstellt.</p>
<p>In meinem Fall z.B. sollte, wenn der InvoiceType = CreditNote kein XML erstellt werden.
-> Nur wenn InvoiceType = INVOIC soll das entsprechende XML erstellt werden.</p>
<p>Ist das grundsätzlich möglich?</p>
<p>Vielen Dank</p>
<p>LG Julian</p>
https://forum.selfhtml.org/self/2019/jan/16/xslt-1-punkt-0-file-erstellung-stoppen/1740791#m1740791
ThomasM
2019-01-16T09:38:48Z
2019-01-16T09:38:48Z
XSLT 1.0 File-Erstellung stoppen
<p>Hallo Julian,</p>
<blockquote>
<p>ist es möglich, dass man im XSLT festlegt, wenn bestimmte Kriterien erfüllt sind, es gar kein File erstellt.</p>
<p>In meinem Fall z.B. sollte, wenn der InvoiceType = CreditNote kein XML erstellt werden.
-> Nur wenn InvoiceType = INVOIC soll das entsprechende XML erstellt werden.</p>
<p>Ist das grundsätzlich möglich?</p>
</blockquote>
<p>Sehe ich für XSLT 1.0 innerhalb des Stylesheets nicht, ggf. durch die Vorverarbeitung mit einer anderen Hostsprache möglich. Etwa via PHP prüfen, ob das gesuchte Element vorkommt und erst dann mit den PHP-XSLT-Techniken transformieren (die können auch nur 1.0).</p>
<p>Ab XSLT 2.0 lässt sich dafür xsl:result-document verwenden:</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>/<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>...<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>result-document</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>output.xml<span class="token punctuation">"</span></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 punctuation">></span></span>
<span class="token comment"><!-- ... --></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>result-document</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>template</span><span class="token punctuation">></span></span>
</code></pre>
<p>Bei der Nutzung von Saxon gibt man in solchen Fällen keinen Output-Parameter (-o:output.xml) an und das Stylesheet entscheidet selbst über die Ausgabe. Darüber hinaus lassen sich mit xsl:result-document n Ausgabedateien in einer Transformation erzeugen (sinnvoll für Multidokument-Strukturen wie CHM, DOCX, EPUB usw.).</p>
<p>java -jar saxon9he.jar -s:input.xml -xsl:transform.xsl</p>
<p>Grüße,<br>
Thomas</p>
https://forum.selfhtml.org/self/2019/jan/16/xslt-1-punkt-0-file-erstellung-stoppen/1740792#m1740792
Julian P.
2019-01-16T10:13:34Z
2019-01-16T10:13:34Z
XSLT 1.0 File-Erstellung stoppen
<p>danke für die ausführliche info. leider verwenden wir nur 1.0.
Mit der von dir angesprochenen PHP-Lösung kenn ich mich leider nicht aus und kann daher nicht sagen, ob das funktionieren würde.</p>
<p>Gibt es so etwas wie if und abort in kombination?
-> Sprich: if invoicetype = creditnote -> abort (also es soll quasi ein leeres XML erstellt 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>SALESINVOICE</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>Interchange</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>Recipient</span><span class="token punctuation">></span></span>1234<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>Recipient</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>Sender</span><span class="token punctuation">></span></span>5678<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>Sender</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>CreationDate</span><span class="token punctuation">></span></span>2019-01-11:09:16:43<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>CreationDate</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>Test</span><span class="token punctuation">></span></span>No<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>Test</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>Interchange_Control_Number</span><span class="token punctuation">></span></span>123584<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>Interchange_Control_Number</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>HeaderInformation</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>OrigInvoiceNumber</span><span class="token punctuation">></span></span>1<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>OrigInvoiceNumber</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>InvoiceType</span><span class="token punctuation">></span></span>CreditNote<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>InvoiceType</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>HeaderInformation</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>Interchange</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>SALESINVOICE</span><span class="token punctuation">></span></span>
</code></pre>
<p>LG Julian</p>
https://forum.selfhtml.org/self/2019/jan/16/xslt-1-punkt-0-file-erstellung-stoppen/1740793#m1740793
MudGuard
http://www.andreas-waechter.de/
2019-01-16T10:43:26Z
2019-01-16T10:43:26Z
XSLT 1.0 File-Erstellung stoppen
<p>Hi,</p>
<blockquote>
<p>Gibt es so etwas wie if und abort in kombination?
-> Sprich: if invoicetype = creditnote -> abort (also es soll quasi ein leeres XML erstellt werden)</p>
</blockquote>
<p>Wie stellst Du Dir das leere XML vor?</p>
<p>So?</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>SALESINVOICE</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>SALESINVOICE</span><span class="token punctuation">></span></span>
</code></pre>
<p>Dann im Top-Level-xsl-Template die Bedingung prüfen und nur bei creditnote die anderen Templates aufrufen.</p>
<p>cu,<br>
Andreas a/k/a MudGuard</p>
https://forum.selfhtml.org/self/2019/jan/16/xslt-1-punkt-0-file-erstellung-stoppen/1740803#m1740803
ThomasM
2019-01-16T12:14:37Z
2019-01-17T08:39:17Z
XSLT 1.0 File-Erstellung stoppen
<p>Hallo Julian,</p>
<blockquote>
<p>Gibt es so etwas wie if und abort in kombination?
-> Sprich: if invoicetype = creditnote -> abort (also es soll quasi ein leeres XML erstellt werden)</p>
</blockquote>
<p>So würde beim Vorhandensein ein leeres Dokument erzeugt und anderenfalls die entsprechende Ausgabe:</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>/<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>SALESINVOICE/Interchange/HeaderInformation/InvoiceType != 'CreditNote'<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
<span class="token comment"><!-- Ausgaben ... --></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>template</span><span class="token punctuation">></span></span>
</code></pre>
<p>Grüße,<br>
Thomas</p>
https://forum.selfhtml.org/self/2019/jan/16/xslt-1-punkt-0-file-erstellung-stoppen/1740801#m1740801
Julian P.
2019-01-16T12:12:45Z
2019-01-16T12:13:02Z
XSLT 1.0 File-Erstellung stoppen
<p>hi, danke hab folg. lösung gefunden:</p>
<pre><code class="block language-html"><span class="token comment"><!-- Delete Content of Message, if InvoiceType = CREDITNOTE --></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>/<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 attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>SALESINVOICE[not(Interchange/HeaderInformation/InvoiceType='CREDITNOTE')]<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>