tag:forum.selfhtml.org,2005:/self
kein korrekter output eines speziellen tags xslt 1.0 – SELFHTML-Forum
2019-06-14T06:43:48Z
https://forum.selfhtml.org/self/2019/jun/14/kein-korrekter-output-eines-speziellen-tags-xslt-1-punkt-0/1750414#m1750414
juls_pro_37
2019-06-14T06:04:03Z
2019-06-14T06:07:36Z
kein korrekter output eines speziellen tags xslt 1.0
<p>Hi,</p>
<p>wie kann ich mein XSLT richtigstellen, damit ich nur den wert des tags "NUMBER" unter folg. Vorraussetzungen erhalten: "GRP"/"ADD"/"QUALIFIER"(ST) und anschließend prüfen ob unter "contact" der "QUALIFIER" = "EM" vorhanden ist und den wert von "NUMBER" ausgeben:</p>
<p>so sollte es aussehen: <CONTACT_EMAIL>test@test.de</CONTACT_EMAIL></p>
<pre><code class="block language-html"><span class="token prolog"><?xml version="1.0"?></span>
<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>CNT</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>GRP</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>ADD</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>QUALIFIER</span><span class="token punctuation">></span></span>DP<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>QUALIFIER</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>PARTY_NAME_1</span><span class="token punctuation">></span></span>Vorname Nachname<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>PARTY_NAME_1</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>STREET_1</span><span class="token punctuation">></span></span>Strasse 1<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>STREET_1</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>CITY</span><span class="token punctuation">></span></span>Ort<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>CITY</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>POSTAL_CODE</span><span class="token punctuation">></span></span>12345<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>POSTAL_CODE</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>COUNTRY_CODE</span><span class="token punctuation">></span></span>DE<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>COUNTRY_CODE</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>CONTACT</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>QUALIFIER</span><span class="token punctuation">></span></span>TE<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>QUALIFIER</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>NUMBER</span><span class="token punctuation">></span></span>4657<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>NUMBER</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>CONTACT</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>CONTACT</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>QUALIFIER</span><span class="token punctuation">></span></span>EM<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>QUALIFIER</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>NUMBER</span><span class="token punctuation">></span></span>test2@test.de<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>NUMBER</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>CONTACT</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>ADD</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>ADD</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>QUALIFIER</span><span class="token punctuation">></span></span>ST<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>QUALIFIER</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>PARTY_NAME_1</span><span class="token punctuation">></span></span>Vorname Nachname<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>PARTY_NAME_1</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>STREET_1</span><span class="token punctuation">></span></span>Strasse 1<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>STREET_1</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>CITY</span><span class="token punctuation">></span></span>Ort<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>CITY</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>POSTAL_CODE</span><span class="token punctuation">></span></span>12345<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>POSTAL_CODE</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>COUNTRY_CODE</span><span class="token punctuation">></span></span>DE<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>COUNTRY_CODE</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>CONTACT</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>QUALIFIER</span><span class="token punctuation">></span></span>TE<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>QUALIFIER</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>NUMBER</span><span class="token punctuation">></span></span>12345<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>NUMBER</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>CONTACT</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>CONTACT</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>QUALIFIER</span><span class="token punctuation">></span></span>EM<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>QUALIFIER</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>NUMBER</span><span class="token punctuation">></span></span>test@test.de<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>NUMBER</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>CONTACT</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>ADD</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>GRP</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>CNT</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>
</code></pre>
<p>Meine Idee (was jedoch nicht funktioniert):</p>
<pre><code class="block language-html"> <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>GRP<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>copy</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>./ADD/CONTACT[QUALIFIER='ST']<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>./QUALIFIER='EM'<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>CONTACT_EMAIL</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>NUMBER<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>CONTACT_EMAIL</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 comment"><!--copy all other nodes --></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>@* | node()<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>copy</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>edit:
ohne [QUALIFIER = 'ST'] unter for-each select erhalte ich leider beide werte (auch wo der qualifier unter add "DP" ist)</p>
<pre><code class="block language-html"> <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>GRP<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>copy</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>./ADD/CONTACT<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>./QUALIFIER='EM'<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>CONTACT_EMAIL</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>NUMBER<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>CONTACT_EMAIL</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 comment"><!--copy all other nodes --></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>@* | node()<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>copy</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><CONTACT_EMAIL>test2@test.de</CONTACT_EMAIL>
<CONTACT_EMAIL>test@test.de</CONTACT_EMAIL></p>
<p>Vielen Dank</p>
<p>LG Julian</p>
https://forum.selfhtml.org/self/2019/jun/14/kein-korrekter-output-eines-speziellen-tags-xslt-1-punkt-0/1750417#m1750417
dedlfix
2019-06-14T06:36:54Z
2019-06-14T06:36:54Z
kein korrekter output eines speziellen tags xslt 1.0
<p>Tach!</p>
<blockquote>
<p>wie kann ich mein XSLT richtigstellen, damit ich nur den wert des tags "NUMBER" unter folg. Vorraussetzungen erhalten: "GRP"/"ADD"/"QUALIFIER"(ST) [...]</p>
</blockquote>
<p>Wenn das ADD ein bestimmtes Kindelement haben muss, musst der XPath das auch so angeben.</p>
<blockquote>
<pre><code> <xsl:for-each select ="./ADD/CONTACT[QUALIFIER='ST']">
</code></pre>
</blockquote>
<p>Hier prüfst du auf Kinder von CONTACT nicht von ADD.</p>
<blockquote>
<p>und anschließend prüfen ob unter "contact" der "QUALIFIER" = "EM" vorhanden ist und den wert von "NUMBER" ausgeben:</p>
</blockquote>
<blockquote>
<p>so sollte es aussehen: <CONTACT_EMAIL>test@test.de</CONTACT_EMAIL></p>
</blockquote>
<p>Ja, wenn man den XPath korrekt ausgehend von ADD wählt.</p>
<p>Also, für jedes <code>./ADD[QUALIFIER='ST']</code> testen ob <code>./CONTACT/QUALIFIER='EM'</code> (wobei der Test wegfallen kann, wenn immer solch ein Element vorhanden ist) und dann den Wert von <code>CONTACT[QUALIFIER='EM']/NUMBER</code> wählen.</p>
<p>dedlfix.</p>
https://forum.selfhtml.org/self/2019/jun/14/kein-korrekter-output-eines-speziellen-tags-xslt-1-punkt-0/1750419#m1750419
juls_pro_37
2019-06-14T06:43:48Z
2019-06-14T06:43:48Z
kein korrekter output eines speziellen tags xslt 1.0
<p>danke danke danke für die hilfe und ausführliche erklärung!! </p>