juls_pro_37: XSLT 1.0 zwei Abfragen kombinieren

Hallo,

hätte mit folg. Part versucht die Duplikate unter "ItemDeliveryInformation" zu entfernen.

  <xsl:key name="packing_slip" match="ItemDeliveryInformation" use="concat(LineNumDeliveryNote, '|', PackingSlipId, '|', DeliveryDate, '|', DeliveredQuantity, '|', RecId_InventTrans)"/>

  <xsl:template match="ItemDeliveryInformation[generate-id() != generate-id(key('packing_slip', concat(LineNumDeliveryNote, '|', PackingSlipId, '|', DeliveryDate, '|', DeliveredQuantity, '|', RecId_InventTrans))[1])]" />

Jedoch muss ich weiters, das daraus entstandene Ergebnis zusammenzählen.

Dies wurde wie folgt gelöst:

<xsl:key name="group" match="ItemDeliveryInformation" use="concat(LineNumDeliveryNote, PackingSlipId, DeliveryDate)"/>

   <xsl:template match="ItemDeliveryInformation">
    <xsl:for-each select="current()[generate-id() = generate-id(key('group', concat(LineNumDeliveryNote, PackingSlipId, DeliveryDate))[1])]">
      <ItemDeliveryInformation>
        <xsl:copy-of select="LineNumDeliveryNote"/>
        <xsl:copy-of select="PackingSlipId"/>
        <xsl:copy-of select="DeliveryDate"/>
        <DeliveredQuantity>
          <xsl:value-of select="format-number(sum(key('group', concat(LineNumDeliveryNote, PackingSlipId, DeliveryDate))/DeliveredQuantity), '#.00')"/>
        </DeliveredQuantity>
      </ItemDeliveryInformation>
    </xsl:for-each>
  </xsl:template>

XML:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<SALESINVOICE>
  <Interchange>
    <Interchange_Control_Number>5637372751</Interchange_Control_Number>
  </Interchange>
  <HeaderInformation>
    <OrigInvoiceNumber>1</OrigInvoiceNumber>
  </HeaderInformation>
  <LineInformation>
    <Item>
      <LineNum>10</LineNum>
      <GTIN>1234</GTIN>
      <ItemDeliveryInformation>
        <LineNumDeliveryNote>10</LineNumDeliveryNote>
        <PackingSlipId>LS-0000224</PackingSlipId>
        <DeliveryDate>2021-02-01</DeliveryDate>
        <DeliveredQuantity>18.00</DeliveredQuantity>
        <RecId_InventTrans>5644378733</RecId_InventTrans>
        <ShipFromAddressInformation />
      </ItemDeliveryInformation>
      <ItemDeliveryInformation>
        <LineNumDeliveryNote>10</LineNumDeliveryNote>
        <PackingSlipId>LS-0000224</PackingSlipId>
        <DeliveryDate>2021-02-01</DeliveryDate>
        <DeliveredQuantity>18.00</DeliveredQuantity>
        <RecId_InventTrans>5644378716</RecId_InventTrans>
      </ItemDeliveryInformation>
      <ItemDeliveryInformation>
        <LineNumDeliveryNote>10</LineNumDeliveryNote>
        <PackingSlipId>LS-0000224</PackingSlipId>
        <DeliveryDate>2021-02-01</DeliveryDate>
        <DeliveredQuantity>18.00</DeliveredQuantity>
        <RecId_InventTrans>5644378733</RecId_InventTrans>
      </ItemDeliveryInformation>
      <ItemDeliveryInformation>
        <LineNumDeliveryNote>10</LineNumDeliveryNote>
        <PackingSlipId>LS-0000224</PackingSlipId>
        <DeliveryDate>2021-02-01</DeliveryDate>
        <DeliveredQuantity>18.00</DeliveredQuantity>
        <RecId_InventTrans>5644378716</RecId_InventTrans>
      </ItemDeliveryInformation>
      <ItemDeliveryInformation>
        <LineNumDeliveryNote>10</LineNumDeliveryNote>
        <PackingSlipId>LS-0000224</PackingSlipId>
        <DeliveryDate>2021-02-01</DeliveryDate>
        <DeliveredQuantity>18.00</DeliveredQuantity>
        <RecId_InventTrans>5644378733</RecId_InventTrans>
      </ItemDeliveryInformation>
      <ItemDeliveryInformation>
        <LineNumDeliveryNote>10</LineNumDeliveryNote>
        <PackingSlipId>LS-0000224</PackingSlipId>
        <DeliveryDate>2021-02-01</DeliveryDate>
        <DeliveredQuantity>18.00</DeliveredQuantity>
        <RecId_InventTrans>5644378716</RecId_InventTrans>
      </ItemDeliveryInformation>
      <ItemDeliveryInformation>
        <LineNumDeliveryNote>10</LineNumDeliveryNote>
        <PackingSlipId>LS-0000224</PackingSlipId>
        <DeliveryDate>2021-02-01</DeliveryDate>
        <DeliveredQuantity>18.00</DeliveredQuantity>
        <RecId_InventTrans>5644378733</RecId_InventTrans>
      </ItemDeliveryInformation>
      <ItemDeliveryInformation>
        <LineNumDeliveryNote>10</LineNumDeliveryNote>
        <PackingSlipId>LS-0000224</PackingSlipId>
        <DeliveryDate>2021-02-01</DeliveryDate>
        <DeliveredQuantity>18.00</DeliveredQuantity>
        <RecId_InventTrans>5644378716</RecId_InventTrans>
      </ItemDeliveryInformation>
    </Item>
  </LineInformation>
</SALESINVOICE>

XSLT:

  <xsl:stylesheet version="1.0"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 <xsl:output method="xml" indent="yes" encoding="UTF-8"/>
 
  <xsl:strip-space elements="*" />

  
  <xsl:key name="packing_slip" match="ItemDeliveryInformation" use="concat(LineNumDeliveryNote, '|', PackingSlipId, '|', DeliveryDate, '|', DeliveredQuantity, '|', RecId_InventTrans)"/>
  
  <xsl:key name="group" match="ItemDeliveryInformation" use="concat(LineNumDeliveryNote, PackingSlipId, DeliveryDate)"/>

  <!-- Identity-Template für die nicht explizit benannten Elemente -->
  <xsl:template match="@* | node()">
    <xsl:copy>
      <xsl:apply-templates select="@* | node()"/>
    </xsl:copy>
  </xsl:template>
 
  <xsl:template match="ItemDeliveryInformation[generate-id() != generate-id(key('packing_slip', concat(LineNumDeliveryNote, '|', PackingSlipId, '|', DeliveryDate, '|', DeliveredQuantity, '|', RecId_InventTrans))[1])]" />
  
   <xsl:template match="ItemDeliveryInformation">
    <xsl:for-each select="current()[generate-id() = generate-id(key('group', concat(LineNumDeliveryNote, PackingSlipId, DeliveryDate))[1])]">
      <ItemDeliveryInformation>
        <xsl:copy-of select="LineNumDeliveryNote"/>
        <xsl:copy-of select="PackingSlipId"/>
        <xsl:copy-of select="DeliveryDate"/>
        <DeliveredQuantity>
          <xsl:value-of select="format-number(sum(key('group', concat(LineNumDeliveryNote, PackingSlipId, DeliveryDate))/DeliveredQuantity), '#.00')"/>
        </DeliveredQuantity>
      </ItemDeliveryInformation>
    </xsl:for-each>
  </xsl:template>
  
<!-- delete empty nodes -->
 <xsl:template match="node()|@*">
     <xsl:copy>
       <xsl:apply-templates select="node()|@*"/>
     </xsl:copy>
 </xsl:template>

<xsl:template match="ItemDeliveryInformation/RecId_InventTrans"/>

 <xsl:template match="*[not(@*|*|comment()|processing-instruction()) and normalize-space()='']"/>

</xsl:stylesheet>

Ergebnis sollte sein: -> DeliveredQuantity mit Menge 36

<?xml version="1.0" encoding="UTF-8"?>
<SALESINVOICE>
   <Interchange>
      <Interchange_Control_Number>5637372751</Interchange_Control_Number>
   </Interchange>
   <HeaderInformation>
      <OrigInvoiceNumber>1</OrigInvoiceNumber>
   </HeaderInformation>
   <LineInformation>
      <Item>
         <LineNum>10</LineNum>
         <GTIN>1234</GTIN>
         <ItemDeliveryInformation>
            <LineNumDeliveryNote>10</LineNumDeliveryNote>
            <PackingSlipId>LS-0000224</PackingSlipId>
            <DeliveryDate>2021-02-01</DeliveryDate>
            <DeliveredQuantity>36.00</DeliveredQuantity>
         </ItemDeliveryInformation>
      </Item>
   </LineInformation>
</SALESINVOICE>

Derzeit jedoch: -> Falsche Menge DeliveredQuantity 144

<?xml version="1.0" encoding="UTF-8"?>
<SALESINVOICE>
   <Interchange>
      <Interchange_Control_Number>5637372751</Interchange_Control_Number>
   </Interchange>
   <HeaderInformation>
      <OrigInvoiceNumber>1</OrigInvoiceNumber>
   </HeaderInformation>
   <LineInformation>
      <Item>
         <LineNum>10</LineNum>
         <GTIN>1234</GTIN>
         <ItemDeliveryInformation>
            <LineNumDeliveryNote>10</LineNumDeliveryNote>
            <PackingSlipId>LS-0000224</PackingSlipId>
            <DeliveryDate>2021-02-01</DeliveryDate>
            <DeliveredQuantity>144.00</DeliveredQuantity>
         </ItemDeliveryInformation>
      </Item>
   </LineInformation>
</SALESINVOICE>

Danke & LG Julian

akzeptierte Antworten

  1. bitte um dringende Hilfe :S

  2. Hallo Julian,

    Hallo,

    hätte mit folg. Part versucht die Duplikate unter "ItemDeliveryInformation" zu entfernen. [...]

    Jedoch muss ich weiters, das daraus entstandene Ergebnis zusammenzählen. [...]

    Wie schon erwähnt, sehe ich keine native Lösung mit XSLT 1.0, aber mit einer Nodeset-Erweiterug kann es klappen, sofern der XSLT-Prozessor diese unterstützt. Habe das mal mit dem MSXML-Prozessor probiert (das M ist kein Schreibfehler). EXSLT wäre ein weiterer Ansatz.

    Ziemlich wilde Umsetzung:

    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
    
      <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
    
      <xsl:key name="packing_slip" match="ItemDeliveryInformation" use="concat(LineNumDeliveryNote, '|', PackingSlipId, '|', DeliveryDate, '|', DeliveredQuantity, '|', RecId_InventTrans)"/>
    
      <xsl:template match="@* | node()">
        <xsl:copy>
          <xsl:apply-templates select="@* | node()"/>
        </xsl:copy>
      </xsl:template>
    
      <xsl:template match="Item">
        <Item>
          <xsl:apply-templates/>
          <xsl:call-template name="process1"/>
        </Item>
      </xsl:template>
    
      <xsl:template match="ItemDeliveryInformation"/>
    
      <xsl:template name="process1">
        <xsl:variable name="tempdoc">
          <temproot>
            <xsl:for-each select="ItemDeliveryInformation[generate-id() = generate-id(key('packing_slip', concat(LineNumDeliveryNote, '|', PackingSlipId, '|', DeliveryDate, '|', DeliveredQuantity, '|', RecId_InventTrans))[1])]">
              <xsl:copy-of select="."/>
            </xsl:for-each>
          </temproot>
        </xsl:variable>
    
        <xsl:call-template name="process2">
          <xsl:with-param name="nodes" select="msxsl:node-set($tempdoc)"/>
        </xsl:call-template>
      </xsl:template>
    
      <xsl:template name="process2">
        <xsl:param name="nodes"/>
    
        <ItemDeliveryInformation>
          <LineNumDeliveryNote>
            <xsl:value-of select="$nodes//LineNumDeliveryNote[1]"/>
          </LineNumDeliveryNote>
          <PackingSlipId>
            <xsl:value-of select="$nodes//PackingSlipId[1]"/>
          </PackingSlipId>
          <DeliveryDate>
            <xsl:value-of select="$nodes//DeliveryDate[1]"/>
          </DeliveryDate>
          <DeliveredQuantity>
            <xsl:value-of select="format-number(sum($nodes//DeliveredQuantity), '#.00')"/>
          </DeliveredQuantity>
        </ItemDeliveryInformation>
      </xsl:template>
    
    </xsl:stylesheet>
    

    Mit diesem Ergebnis:

    <?xml version="1.0" encoding="UTF-8"?>
    <SALESINVOICE>
      <Interchange>
        <Interchange_Control_Number>5637372751</Interchange_Control_Number>
      </Interchange>
      <HeaderInformation>
        <OrigInvoiceNumber>1</OrigInvoiceNumber>
      </HeaderInformation>
      <LineInformation>
        <Item>
          <LineNum>10</LineNum>
          <GTIN>1234</GTIN>
          <ItemDeliveryInformation>
            <LineNumDeliveryNote>10</LineNumDeliveryNote>
            <PackingSlipId>LS-0000224</PackingSlipId>
            <DeliveryDate>2021-02-01</DeliveryDate>
            <DeliveredQuantity>36.00</DeliveredQuantity>
          </ItemDeliveryInformation>
        </Item>
      </LineInformation>
    </SALESINVOICE>
    

    Grüße,
    Thomas

    1. danke dir schon mal, konnte es ausführen aber jetzt hab ich grad andere technische Schwierigkeiten. Melde mich, sobald ich Zugriff auf mein XML habe.

      Irre, was du alles schaffst! :)

    2. dankeeeeeeeeeeeeeeeee hat wieder mal super funktioniert!!! :) :)

    3. Hi Thomas,

      hast du ein Online-Tool, wo dieser Code umsetzbar ist? Bzw. wo die Darstellung klappt?

      Verwende normal immer: http://xsltransform.net/jz1PuPz aber dort erhalte ich einen Fehler: Error at xsl:call-template on line -1 of : The URI urn:schemas-microsoft-com:xslt does not identify an external Java class

      LG Julian

      1. Hallo Julian,

        hast du ein Online-Tool, wo dieser Code umsetzbar ist? Bzw. wo die Darstellung klappt?

        Habe das bzgl. msxsl:node-set() lokal mit MSXSL probiert, nehme sonst meistens Saxon-HE an der Konsole oder in <oXygen/> integriert (für Spezialbedarfe wie Saxon-JS auch mal Saxon-EE).

        Verwende normal immer: http://xsltransform.net/jz1PuPz aber dort erhalte ich einen Fehler: Error at xsl:call-template on line -1 of : The URI urn:schemas-microsoft-com:xslt does not identify an external Java class

        Dort wird ja auch die genannte EXSLT-Erweiterung verwendet. Binde den exsl-Namenraum ein und verwende dann in diesem Template die alternative exsl:node-set()-Funktion:

        <xsl:call-template name="process2">
          <xsl:with-param name="nodes" select="exsl:node-set($tempdoc)"/>
        </xsl:call-template>
        

        Grüße,
        Thomas

        1. danke schon mal. wenn ich das von dir einspiele kommt: Error at xsl:with-param on line 119 column 66 XPST0081 XPath syntax error at char 0 on line 119 in {exsl:node-set($}: Undeclared namespace prefix {exsl}

          muss ich hier noch was anpassen? <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">

          lg Julian

          1. Hallo Julian,

            muss ich hier noch was anpassen? <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">

            xmlns:exsl="http://exslt.org/common" extension-element-prefixes="exsl"

            Grüße,
            Thomas

            1. Ist das so richtig?

              <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" extension-element-prefixes="exsl">

              und statt:

                  <xsl:call-template name="process2">
                    <xsl:with-param name="nodes" select="msxsl:node-set($tempdoc)"/>
                  </xsl:call-template>
                </xsl:template>Quelltext hier
              

              dies hier:

              
              <xsl:call-template name="process2">
                <xsl:with-param name="nodes" select="exsl:node-set($tempdoc)"/>
              </xsl:call-template>Quelltext hier
              

              da kommt der Fehler:

              Error on line 184 column 3 SXXP0003: Error reported by XML parser: The element type "xsl:template" must be terminated by the matching end-tag "</xsl:template>".

              1. Hallo Julian,

                da kommt der Fehler:

                Error on line 184 column 3 SXXP0003: Error reported by XML parser: The element type "xsl:template" must be terminated by the matching end-tag "</xsl:template>".

                Vom Entfernen des </xsl:template> stand bei mir nichts, nur zum Austausch des isolierten xsl:call-template-Blocks.

                Grüße,
                Thomas

                1. So richtig?

                  <xsl:stylesheet version="1.0" 
                  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
                  xmlns:exsl="http://exslt.org/common" extension-element-prefixes="exsl">
                  
                      <xsl:call-template name="process2">
                          <xsl:with-param name="nodes" select="exsl:node-set($tempdoc)"/>
                          </xsl:call-template>
                      </xsl:template>
                  
                  1. Hallo Julian,

                    So richtig?

                    Vermutlich, wenn der Rest passt.

                    Es ging doch nur um den Austausch einer Codezeile + dem neuen Namensraum-Präfix.

                    Grüße,
                    Thomas

                    1. ja, wenn ich auf Saxon 6.5.5 (http://xsltransform.net/jz1PuPz) stelle siehts gut aus danke!

                      Musste jetzt seit gestern einen Unterpunkt unter "ItemDeliveryInformation" einfügen und hätte das im Code ergänzt. Leider dürfte ich noch irgendwo einen Denkfehler haben.

                      Wieso erhalte ich unter ItemDeliveryInformation.ShipFromAddressInformation immer die Daten beider Artikel anstatt immer nur von einem? Wir haben doch unter

                       <xsl:key name="packing_slip" match="ItemDeliveryInformation" use="concat(LineNumDeliveryNote, '|', PackingSlipId, '|', DeliveryDate, '|', DeliveredQuantity, '|', RecId_InventTrans)"/>
                      

                      auf die unterschiedliche LineNum referenziert oder?

                      Order muss man auch die LineNum von "Item" mit einfließen lassen?

                      XML:

                      <?xml version="1.0" encoding="utf-8"?>
                      <SALESINVOICE>
                        <Interchange>    
                          <Interchange_Control_Number>5637411610</Interchange_Control_Number>
                        </Interchange>
                        <HeaderInformation>
                          <OrigInvoiceNumber>1</OrigInvoiceNumber>
                        </HeaderInformation>
                        <LineInformation>
                          <Item>
                            <LineNum>1</LineNum>
                            <GTIN>1</GTIN>
                            <ItemDeliveryInformation>
                              <LineNumDeliveryNote>1</LineNumDeliveryNote>
                              <PackingSlipId_Created>2021-02-17T09:33:11</PackingSlipId_Created>
                              <PackingSlipId>LS-0000069</PackingSlipId>
                              <DeliveryDate>2021-02-17</DeliveryDate>
                              <DeliveredQuantity>1.00</DeliveredQuantity>
                              <ShipFromAddressInformation>
                                <Name>Lagerort 1</Name>
                                <Street>Straße 1</Street>
                              </ShipFromAddressInformation>
                            </ItemDeliveryInformation>
                          </Item>
                          <Item>
                            <LineNum>2</LineNum>
                            <GTIN>2</GTIN>
                            <ItemDeliveryInformation>
                              <LineNumDeliveryNote>2</LineNumDeliveryNote>
                              <PackingSlipId_Created>2021-02-17T09:33:11</PackingSlipId_Created>
                              <PackingSlipId>LS-0000069</PackingSlipId>
                              <DeliveryDate>2021-02-17</DeliveryDate>
                              <DeliveredQuantity>1.00</DeliveredQuantity>
                              <ShipFromAddressInformation>
                                <Name>Lagerort 2</Name>
                                <Street>Straße 2</Street>
                              </ShipFromAddressInformation>
                            </ItemDeliveryInformation>
                          </Item> 
                        </LineInformation>
                      </SALESINVOICE>
                      

                      XSLT:

                      <xsl:stylesheet version="1.0" 
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
                      xmlns:exsl="http://exslt.org/common" extension-element-prefixes="exsl">
                      
                       <xsl:output method="xml" indent="yes" encoding="UTF-8"/>
                       
                         <xsl:key name="packing_slip" match="ItemDeliveryInformation" use="concat(LineNumDeliveryNote, '|', PackingSlipId, '|', DeliveryDate, '|', DeliveredQuantity, '|', RecId_InventTrans)"/>
                      
                        
                        <xsl:template match="Item">
                          <Item>
                            <xsl:apply-templates/>
                            <xsl:call-template name="process1"/>
                          </Item>
                        </xsl:template>
                      
                        <xsl:template match="ItemDeliveryInformation"/>
                      
                        <xsl:template name="process1">
                          <xsl:variable name="tempdoc">
                            <temproot>
                              <xsl:for-each select="ItemDeliveryInformation[generate-id() = generate-id(key('packing_slip', concat(LineNumDeliveryNote, '|', PackingSlipId, '|', DeliveryDate, '|', DeliveredQuantity, '|', RecId_InventTrans))[1])]">
                                <xsl:copy-of select="."/>
                              </xsl:for-each>
                            </temproot>
                          </xsl:variable>
                      
                          <xsl:call-template name="process2">
                           <xsl:with-param name="nodes" select="exsl:node-set($tempdoc)"/>
                              </xsl:call-template>
                          </xsl:template>
                      
                        <xsl:template name="process2">
                         
                          <xsl:param name="nodes"/>
                          <ItemDeliveryInformation>
                            <LineNumDeliveryNote>
                              <xsl:value-of select="$nodes//LineNumDeliveryNote[1]"/>
                            </LineNumDeliveryNote>
                            <PackingSlipId_Created>
                              <xsl:value-of select="$nodes//PackingSlipId_Created[1]"/>
                            </PackingSlipId_Created>
                            <PackingSlipId>
                              <xsl:value-of select="$nodes//PackingSlipId[1]"/>
                            </PackingSlipId>
                            <DeliveryDate>
                              <xsl:value-of select="$nodes//DeliveryDate[1]"/>
                            </DeliveryDate>
                            <DeliveredQuantity>
                              <xsl:value-of select="format-number(sum($nodes//DeliveredQuantity), '#.00')"/>
                            </DeliveredQuantity>
                          <ShipFromAddressInformation>    
                              <xsl:copy-of select="//ShipFromAddressInformation/GLN"/>
                              <xsl:copy-of select="//ShipFromAddressInformation/Name"/>      
                              <xsl:copy-of select="//ShipFromAddressInformation/Street"/>
                              <xsl:copy-of select="//ShipFromAddressInformation/ZipCode"/>
                              <xsl:copy-of select="//ShipFromAddressInformation/City"/>
                              <xsl:copy-of select="//ShipFromAddressInformation/Country"/>
                              <xsl:copy-of select="//ShipFromAddressInformation/State"/>
                              <xsl:copy-of select="//ShipFromAddressInformation/VATNum"/> 
                              <xsl:copy-of select="//ShipFromAddressInformation/InternalNumber"/>    
                          </ShipFromAddressInformation>
                          </ItemDeliveryInformation>
                        </xsl:template>
                      
                      
                        
                      <!-- delete empty nodes -->
                       <xsl:template match="node()|@*">
                           <xsl:copy>
                             <xsl:apply-templates select="node()|@*"/>
                           </xsl:copy>
                       </xsl:template>
                      
                      
                      
                       <xsl:template match="*[not(@*|*|comment()|processing-instruction()) and normalize-space()='']"/>
                      
                      </xsl:stylesheet>
                      

                      Richtig wäre:

                      <?xml version="1.0" encoding="UTF-8"?>
                      <SALESINVOICE>
                         <Interchange>    
                            <Interchange_Control_Number>5637411610</Interchange_Control_Number>
                         </Interchange>
                         <HeaderInformation>
                            <OrigInvoiceNumber>1</OrigInvoiceNumber>
                         </HeaderInformation>
                         <LineInformation>
                            <Item>
                               <LineNum>1</LineNum>
                               <GTIN>1</GTIN>
                               <ItemDeliveryInformation>
                                  <LineNumDeliveryNote>1</LineNumDeliveryNote>
                                  <PackingSlipId_Created>2021-02-17T09:33:11</PackingSlipId_Created>
                                  <PackingSlipId>LS-0000069</PackingSlipId>
                                  <DeliveryDate>2021-02-17</DeliveryDate>
                                  <DeliveredQuantity>1.00</DeliveredQuantity>
                                  <ShipFromAddressInformation>
                                     <Name>Lagerort 1</Name>        
                                     <Street>Straße 1</Street>
                                     <Street>Straße 2</Street>
                                  </ShipFromAddressInformation>
                               </ItemDeliveryInformation>
                            </Item>
                            <Item>
                               <LineNum>2</LineNum>
                               <GTIN>2</GTIN>  
                               <ItemDeliveryInformation>
                                  <LineNumDeliveryNote>2</LineNumDeliveryNote>
                                  <PackingSlipId_Created>2021-02-17T09:33:11</PackingSlipId_Created>
                                  <PackingSlipId>LS-0000069</PackingSlipId>
                                  <DeliveryDate>2021-02-17</DeliveryDate>
                                  <DeliveredQuantity>1.00</DeliveredQuantity>
                                  <ShipFromAddressInformation>
                                     <Street>Straße 1</Street>
                                     <Street>Straße 2</Street>
                                  </ShipFromAddressInformation>
                               </ItemDeliveryInformation>
                            </Item> 
                         </LineInformation>
                      </SALESINVOICE>
                      

                      Ist das jetzt problematisch mit der Erweiterung von ShipAddressInformation unter ItemDeliveryInformation oder lässt sich das schnell lösen?

                      Bzw. wäre dieser Aufbau richtig?:

                      <ShipFromAddressInformation>
                          <xsl:copy-of select="$nodes//ShipFromAddressInformation/GLN[1]"/>
                          <xsl:copy-of select="$nodes//ShipFromAddressInformation/Name[1]"/>      
                          <xsl:copy-of select="$nodes//ShipFromAddressInformation/Street[1]"/>
                          <xsl:copy-of select="$nodes//ShipFromAddressInformation/ZipCode[1]"/>
                          <xsl:copy-of select="$nodes//ShipFromAddressInformation/City[1]"/>
                          <xsl:copy-of select="$nodes//ShipFromAddressInformation/Country[1]"/>
                          <xsl:copy-of select="$nodes//ShipFromAddressInformation/State[1]"/>
                          <xsl:copy-of select="$nodes//ShipFromAddressInformation/VATNum[1]"/>
                          <xsl:copy-of select="$nodes//ShipFromAddressInformation/InternalNumber[1]"/>   
                      </ShipFromAddressInformation>
                      

                      LG Julian

                      1. Hallo Julian,

                        Ist das jetzt problematisch mit der Erweiterung von ShipAddressInformation unter ItemDeliveryInformation oder lässt sich das schnell lösen?

                        Sorry, aber diese Konfusion blicke ich nicht mehr.

                        Grüße,
                        Thomas

                        1. danke trotzdem vielmals!! :)