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>