Jump to content

Get Info From One Node To Apply To All Sub-nodes


rudd_eric@hotmail.com

Recommended Posts

You could try
[not(FIELD[@name = 'Art nr'][not(normalize-space())])]

to ignore 'FIELD' elements with 'name' attribute being 'Art nr' but containing nothing but white space or no contents at all.

I've tried many variations of this: [not(FIELD[@name = 'Art nr'][not(normalize-space())])] but it does not leave out the Art nr with no content.I've also tried [not(FIELD[@fieldName = 'Art nr'])] but this just leads to the output being onlythe Art nr. fields that are empty. Am I just missing a ( or ' or ] or something ?Everything else works perfectly ! :-)
Link to comment
Share on other sites

I am not sure where the problem is. Please show a minimal but complete XML input document and stylesheet you currently have that demonstrates the problem. Then we can use that to try to reproduce the problem and then hopelfully finally fix it.
<?xml version="1.0" encoding="UTF-8"?><GROUPS projectId="12"><FIELD name="kategori">12</FIELD>  <GROUP name="Rigg och Däck">    <CARDS><CARD prodCardID="14901" orgCardID="14900" langID="4" language="Norwegian" productNo=""        cardName="Ing. BLOCKDATA BISCAY">        <FIELDS>          <FIELD name="Rubrik">BLOKKDATA BISCAY</FIELD>          <FIELD name="Beskrivning"/>          <FIELD name="Bild/extratext"/>          <FIELD name="Katalogbild">Original:RutgersonLogo.eps</FIELD>          <FIELD name="Nyhetsbild"/>          <FIELD name="Beskrivning web"/>          <FIELD name="Sökord">BLOKKDATA BISCAY, BISCAY, BLOKK</FIELD>          <FIELD name="Art nr ref"/>          <FIELD name="Leverantör"/>          <FIELD name="PC"/>          <FIELD name="Sidnummer">04 144</FIELD>          <FIELD name="Nyhet/år"/>          <FIELD name="Webbild liten"/>          <FIELD name="Webbild stor"/>          <FIELD name="webSubGroup">noweb</FIELD>          <FIELD name="Web länk 1 rubrik"/>          <FIELD name="Web länk 1"/>          <FIELD name="Web länk 2 rubrik"/>          <FIELD name="Web länk 2"/>          <FIELD name="Web länk 3 rubrik"/>          <FIELD name="Web länk 3"/>          <FIELD name="Katalogbild 2"/>          <FIELD name="Katalogbild 3"/>          <FIELD name="Katalogbild 4"/>          <FIELD name="Katalogbild 5"/>          <FIELD name="Katalogbild 6"/>          <FIELD name="Katalogbild 7"/>          <FIELD name="Extra fält"/>          <FIELD name="noweb">noweb</FIELD>        </FIELDS>        <ARTICLES>          <ARTICLE articleID="12549" cardID="14901" orgCardID="14900" tableID="1005">            <FIELD fieldName="Serie" rowID="3059" langID="4">300 SERIEN</FIELD>            <FIELD fieldName="Serie" rowID="3059" langID="4">300 SERIEN</FIELD>            <FIELD fieldName="stl." rowID="3059" langID="4">-</FIELD>          </ARTICLE>          <ARTICLE articleID="12553" cardID="14901" orgCardID="14900" tableID="1005">            <FIELD fieldName="Serie" rowID="3060" langID="4">Trissdiameter:</FIELD>            <FIELD fieldName="Serie" rowID="3060" langID="4">Trinsediameter:</FIELD>            <FIELD fieldName="stl." rowID="3060" langID="4">35 mm</FIELD>          </ARTICLE>          <ARTICLE articleID="12557" cardID="14901" orgCardID="14900" tableID="1005">            <FIELD fieldName="Serie" rowID="3061" langID="4">Repdiameter:</FIELD>            <FIELD fieldName="Serie" rowID="3061" langID="4">Tau diameter:</FIELD>            <FIELD fieldName="stl." rowID="3061" langID="4">3-8 mm</FIELD>          </ARTICLE>                </ARTICLES>      </CARD><CARD prodCardID="32882" orgCardID="32880" langID="3" language="Danish" productNo=""        cardName="15003-25 Enkelblock">        <FIELDS>          <FIELD name="Rubrik">ENKELTBLOK</FIELD>          <FIELD name="Beskrivning">Rustfri.</FIELD>          <FIELD name="Bild/extratext"/>          <FIELD name="Katalogbild">Original:F15003-25.eps</FIELD>          <FIELD name="Nyhetsbild"/>          <FIELD name="Beskrivning web">Rustfri.</FIELD>          <FIELD name="Sökord">blok, enkeltblok</FIELD>          <FIELD name="Art nr ref">15003-25, 15003-32, 15003-40, 15003-50</FIELD>          <FIELD name="Leverantör">CIM</FIELD>          <FIELD name="PC">PS</FIELD>          <FIELD name="Sidnummer"/>          <FIELD name="Nyhet/år">06</FIELD>          <FIELD name="Webbild liten">Websmall/F15003-25.jpg</FIELD>          <FIELD name="Webbild stor">Weblarge/F15003-25.jpg</FIELD>          <FIELD name="webSubGroup">100500</FIELD>          <FIELD name="Web länk 1 rubrik"/>          <FIELD name="Web länk 1"/>          <FIELD name="Web länk 2 rubrik"/>          <FIELD name="Web länk 2"/>          <FIELD name="Web länk 3 rubrik"/>          <FIELD name="Web länk 3"/>          <FIELD name="Katalogbild 2"/>          <FIELD name="Katalogbild 3"/>          <FIELD name="Katalogbild 4"/>          <FIELD name="Katalogbild 5"/>          <FIELD name="Katalogbild 6"/>          <FIELD name="Katalogbild 7"/>          <FIELD name="Extra fält"/>          <FIELD name="noweb"/>        </FIELDS>        <ARTICLES>          <ARTICLE articleID="77199" cardID="32882" orgCardID="32880" tableID="5401">            <FIELD fieldName="Art nr" rowID="19894" langID="3">Art nr</FIELD>            <FIELD fieldName="art nr katalog" rowID="19894" langID="3">Art nr</FIELD>            <FIELD fieldName="Längd mm" rowID="19894" langID="3">Længde mm</FIELD>            <FIELD fieldName="Bredd mm" rowID="19894" langID="3">Bredde mm</FIELD>            <FIELD fieldName="Storlek" rowID="19894" langID="3">Str. mm</FIELD>            <FIELD fieldName="Pris" rowID="19894" langID="3">Pris</FIELD>          </ARTICLE>          <ARTICLE articleID="77203" cardID="32882" orgCardID="32880" tableID="5401">            <FIELD fieldName="Art nr" rowID="19895" langID="3">15003-0025</FIELD>            <FIELD fieldName="art nr katalog" rowID="19895" langID="3">15003-25</FIELD>            <FIELD fieldName="Längd mm" rowID="19895" langID="3">85</FIELD>            <FIELD fieldName="Bredd mm" rowID="19895" langID="3">30</FIELD>            <FIELD fieldName="Storlek" rowID="19895" langID="3">25</FIELD>            <FIELD fieldName="Pris" rowID="19895" langID="3">113,-</FIELD>          </ARTICLE>               </ARTICLES>      </CARD></CARDS>  </GROUP></GROUPS>

XSL:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">    <xsl:output method="text"/>    <xsl:param name="sep" select="'|'"/>    <xsl:param name="lf" select="'+'"/>    <xsl:param name="default" select="'null'" />    <xsl:template match="/">          <xsl:apply-templates select="GROUPS/GROUP/CARDS/CARD[@langID = 4 ]/ARTICLES/ARTICLE[not(FIELD[@fieldName = 'Art nr'][. = 'Art nr'])][not(FIELD[@fieldName = 'Art nr'][. = 'art nr'])][not(FIELD[@fieldName = 'Art nr'][not(normalize-space())])]"/>    </xsl:template>    <xsl:template match="ARTICLE">        <xsl:value-of select="concat(string-join((FIELD[@fieldName = 'Art nr' or @fieldName = 'art nr' or @fieldName = 'Pris']/normalize-space(.), ../../FIELDS/FIELD[@name = 'Rubrik' or @name = 'Beskrivning' or @name = 'Beskrivning' or @name = 'webSubGroup' or @name = 'Webbild stor' ]/normalize-space(.),/GROUPS/FIELD[local-name()]), $sep), $lf)"/>    </xsl:template>        </xsl:stylesheet>

Also tried:

[not(FIELD[@fieldName = 'Art nr'])][not(FIELD[@fieldName = 'Pris'])]

Instead of:

[not(FIELD[@fieldName = 'Art nr'][not(normalize-space())])]

Still get all the <ARTICLES> with empty Art nr or Art nr not existing/empty Pris or Pris not existing.

Link to comment
Share on other sites

I sorry, but the input sample you posted does not seem to contain any FIELD with that condition? How is that supposed to demonstrate the problem?
Hi again ..One product is missing the Art nr but is still included when I run the script ; <ARTICLE articleID="12553" cardID="14901" orgCardID="14900" tableID="1005"> <FIELD fieldName="Serie" rowID="3060" langID="4">Trissdiameter:</FIELD> <FIELD fieldName="Serie" rowID="3060" langID="4">Trinsediameter:</FIELD> <FIELD fieldName="stl." rowID="3060" langID="4">35 mm</FIELD> </ARTICLE>The other article has the Art nr, but is left out when I run the script with [not(FIELD[@fieldName = 'Art nr'])]and / or with [not(FIELD[@fieldName = 'Pris'])]Eric
Link to comment
Share on other sites

Your stylesheet posted last has

<xsl:apply-templates select="GROUPS/GROUP/CARDS/CARD[@langID = 4 ]/ARTICLES/ARTICLE[not(FIELD[@fieldName = 'Art nr'][. = 'Art nr'])][not(FIELD[@fieldName = 'Art nr'][. = 'art nr'])][not(FIELD[@fieldName = 'Art nr'][not(normalize-space())])]"/>

So based on CARD[@langID = 4] we only look at the following part of your XML input posted last:

	  <CARD prodCardID="14901" orgCardID="14900" langID="4" language="Norwegian" productNo=""		  cardName="Ing. BLOCKDATA BISCAY">		<FIELDS>		  <FIELD name="Rubrik">BLOKKDATA BISCAY</FIELD>		  <FIELD name="Beskrivning"/>		  <FIELD name="Bild/extratext"/>		  <FIELD name="Katalogbild">Original:RutgersonLogo.eps</FIELD>		  <FIELD name="Nyhetsbild"/>		  <FIELD name="Beskrivning web"/>		  <FIELD name="Sökord">BLOKKDATA BISCAY, BISCAY, BLOKK</FIELD>		  <FIELD name="Art nr ref"/>		  <FIELD name="Leverantör"/>		  <FIELD name="PC"/>		  <FIELD name="Sidnummer">04 144</FIELD>		  <FIELD name="Nyhet/år"/>		  <FIELD name="Webbild liten"/>		  <FIELD name="Webbild stor"/>		  <FIELD name="webSubGroup">noweb</FIELD>		  <FIELD name="Web länk 1 rubrik"/>		  <FIELD name="Web länk 1"/>		  <FIELD name="Web länk 2 rubrik"/>		  <FIELD name="Web länk 2"/>		  <FIELD name="Web länk 3 rubrik"/>		  <FIELD name="Web länk 3"/>		  <FIELD name="Katalogbild 2"/>		  <FIELD name="Katalogbild 3"/>		  <FIELD name="Katalogbild 4"/>		  <FIELD name="Katalogbild 5"/>		  <FIELD name="Katalogbild 6"/>		  <FIELD name="Katalogbild 7"/>		  <FIELD name="Extra fält"/>		  <FIELD name="noweb">noweb</FIELD>		</FIELDS>		<ARTICLES>		  <ARTICLE articleID="12549" cardID="14901" orgCardID="14900" tableID="1005">			<FIELD fieldName="Serie" rowID="3059" langID="4">300 SERIEN</FIELD>			<FIELD fieldName="Serie" rowID="3059" langID="4">300 SERIEN</FIELD>			<FIELD fieldName="stl." rowID="3059" langID="4">-</FIELD>		  </ARTICLE>		  <ARTICLE articleID="12553" cardID="14901" orgCardID="14900" tableID="1005">			<FIELD fieldName="Serie" rowID="3060" langID="4">Trissdiameter:</FIELD>			<FIELD fieldName="Serie" rowID="3060" langID="4">Trinsediameter:</FIELD>			<FIELD fieldName="stl." rowID="3060" langID="4">35 mm</FIELD>		  </ARTICLE>		  <ARTICLE articleID="12557" cardID="14901" orgCardID="14900" tableID="1005">			<FIELD fieldName="Serie" rowID="3061" langID="4">Repdiameter:</FIELD>			<FIELD fieldName="Serie" rowID="3061" langID="4">Tau diameter:</FIELD>			<FIELD fieldName="stl." rowID="3061" langID="4">3-8 mm</FIELD>		  </ARTICLE>		</ARTICLES>	  </CARD>

Those three ARTICLE elements do not have any FIELD[@fieldName = 'Art nr'] so I don't see how any of those conditions in

ARTICLE[not(FIELD[@fieldName = 'Art nr'][. = 'Art nr'])][not(FIELD[@fieldName = 'Art nr'][. = 'art nr'])][not(FIELD[@fieldName = 'Art nr'][not(normalize-space())])]

applies. That way all three ARTICLE elements are processed.

Link to comment
Share on other sites

Your stylesheet posted last has
<xsl:apply-templates select="GROUPS/GROUP/CARDS/CARD[@langID = 4 ]/ARTICLES/ARTICLE[not(FIELD[@fieldName = 'Art nr'][. = 'Art nr'])][not(FIELD[@fieldName = 'Art nr'][. = 'art nr'])][not(FIELD[@fieldName = 'Art nr'][not(normalize-space())])]"/>

So based on CARD[@langID = 4] we only look at the following part of your XML input posted last:

	  <CARD prodCardID="14901" orgCardID="14900" langID="4" language="Norwegian" productNo=""		  cardName="Ing. BLOCKDATA BISCAY">		<FIELDS>		  <FIELD name="Rubrik">BLOKKDATA BISCAY</FIELD>		  <FIELD name="Beskrivning"/>		  <FIELD name="Bild/extratext"/>		  <FIELD name="Katalogbild">Original:RutgersonLogo.eps</FIELD>		  <FIELD name="Nyhetsbild"/>		  <FIELD name="Beskrivning web"/>		  <FIELD name="Sökord">BLOKKDATA BISCAY, BISCAY, BLOKK</FIELD>		  <FIELD name="Art nr ref"/>		  <FIELD name="Leverantör"/>		  <FIELD name="PC"/>		  <FIELD name="Sidnummer">04 144</FIELD>		  <FIELD name="Nyhet/år"/>		  <FIELD name="Webbild liten"/>		  <FIELD name="Webbild stor"/>		  <FIELD name="webSubGroup">noweb</FIELD>		  <FIELD name="Web länk 1 rubrik"/>		  <FIELD name="Web länk 1"/>		  <FIELD name="Web länk 2 rubrik"/>		  <FIELD name="Web länk 2"/>		  <FIELD name="Web länk 3 rubrik"/>		  <FIELD name="Web länk 3"/>		  <FIELD name="Katalogbild 2"/>		  <FIELD name="Katalogbild 3"/>		  <FIELD name="Katalogbild 4"/>		  <FIELD name="Katalogbild 5"/>		  <FIELD name="Katalogbild 6"/>		  <FIELD name="Katalogbild 7"/>		  <FIELD name="Extra fält"/>		  <FIELD name="noweb">noweb</FIELD>		</FIELDS>		<ARTICLES>		  <ARTICLE articleID="12549" cardID="14901" orgCardID="14900" tableID="1005">			<FIELD fieldName="Serie" rowID="3059" langID="4">300 SERIEN</FIELD>			<FIELD fieldName="Serie" rowID="3059" langID="4">300 SERIEN</FIELD>			<FIELD fieldName="stl." rowID="3059" langID="4">-</FIELD>		  </ARTICLE>		  <ARTICLE articleID="12553" cardID="14901" orgCardID="14900" tableID="1005">			<FIELD fieldName="Serie" rowID="3060" langID="4">Trissdiameter:</FIELD>			<FIELD fieldName="Serie" rowID="3060" langID="4">Trinsediameter:</FIELD>			<FIELD fieldName="stl." rowID="3060" langID="4">35 mm</FIELD>		  </ARTICLE>		  <ARTICLE articleID="12557" cardID="14901" orgCardID="14900" tableID="1005">			<FIELD fieldName="Serie" rowID="3061" langID="4">Repdiameter:</FIELD>			<FIELD fieldName="Serie" rowID="3061" langID="4">Tau diameter:</FIELD>			<FIELD fieldName="stl." rowID="3061" langID="4">3-8 mm</FIELD>		  </ARTICLE>		</ARTICLES>	  </CARD>

Those three ARTICLE elements do not have any FIELD[@fieldName = 'Art nr'] so I don't see how any of those conditions in

ARTICLE[not(FIELD[@fieldName = 'Art nr'][. = 'Art nr'])][not(FIELD[@fieldName = 'Art nr'][. = 'art nr'])][not(FIELD[@fieldName = 'Art nr'][not(normalize-space())])]

applies. That way all three ARTICLE elements are processed.

Ahh. What I thougt was that [not(FIELD[@fieldName = 'Art nr'] it should leave out all those that do not have the field Art nrBut of course this turns it the other way around. My mistake of course ;-)I was looking to leave out the ARTICLE's that do not have the fieldName Art nr at all.
Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...