rudd_eric@hotmail.com Posted October 14, 2009 Author Share Posted October 14, 2009 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 More sharing options...
Martin Honnen Posted October 14, 2009 Share Posted October 14, 2009 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. Link to comment Share on other sites More sharing options...
rudd_eric@hotmail.com Posted October 15, 2009 Author Share Posted October 15, 2009 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 More sharing options...
Martin Honnen Posted October 15, 2009 Share Posted October 15, 2009 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? Link to comment Share on other sites More sharing options...
rudd_eric@hotmail.com Posted October 19, 2009 Author Share Posted October 19, 2009 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 More sharing options...
Martin Honnen Posted October 19, 2009 Share Posted October 19, 2009 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 More sharing options...
rudd_eric@hotmail.com Posted October 19, 2009 Author Share Posted October 19, 2009 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 More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.