title: Group XML using xsl1.0 based on header value and lineItems
body: <p>I have an Orders XML input file where based on the Matching 'ref' XML tag and 'Shipto' XML tag, the order should be split with multiple batch orders.</p>
  
  <p><strong>Input xml:</strong></p>
  
  <pre><code>&lt;Purchase&gt;
      &lt;Order&gt;
          &lt;Header&gt;
          &lt;Ref&gt;13400&lt;/Ref&gt;
              &lt;ShipToDetails&gt;
                  &lt;ShipTo&gt;AAA&lt;/ShipTo&gt;                
              &lt;/ShipToDetails&gt;
          &lt;/Header&gt;
          &lt;Items&gt;
              &lt;LineItem&gt;800100&lt;/LineItem&gt;
          &lt;/Items&gt;
      &lt;/Order&gt;
      &lt;Order&gt;
          &lt;Header&gt;
          &lt;Ref&gt;13400&lt;/Ref&gt;
              &lt;ShipToDetails&gt;
                  &lt;ShipTo&gt;BBB&lt;/ShipTo&gt;
              &lt;/ShipToDetails&gt;            
          &lt;/Header&gt;
          &lt;Items&gt;
              &lt;LineItem&gt;800100&lt;/LineItem&gt;
          &lt;/Items&gt;
      &lt;/Order&gt;
      &lt;Order&gt;
          &lt;Header&gt;
          &lt;Ref&gt;13401&lt;/Ref&gt;
              &lt;ShipToDetails&gt;
                  &lt;ShipTo&gt;CCC&lt;/ShipTo&gt;
              &lt;/ShipToDetails&gt;            
          &lt;/Header&gt;
          &lt;Items&gt;
              &lt;LineItem&gt;800100&lt;/LineItem&gt;
          &lt;/Items&gt;
      &lt;/Order&gt;
          &lt;Order&gt;
          &lt;Header&gt;
          &lt;Ref&gt;13401&lt;/Ref&gt;
              &lt;ShipToDetails&gt;
                  &lt;ShipTo&gt;CCC&lt;/ShipTo&gt;
              &lt;/ShipToDetails&gt;            
          &lt;/Header&gt;
          &lt;Items&gt;
              &lt;LineItem&gt;800101&lt;/LineItem&gt;
          &lt;/Items&gt;
      &lt;/Order&gt;
  &lt;/Purchase&gt;
  </code></pre>
  
  <p><strong>Expected output:</strong></p>
  
  <pre><code>        &lt;Header&gt;
          &lt;Ref&gt;13400&lt;/Ref&gt;
              &lt;ShipToDetails&gt;
                  &lt;ShipTo&gt;AAA&lt;/ShipTo&gt;                
              &lt;/ShipToDetails&gt;
          &lt;/Header&gt;
          &lt;Items&gt;
              &lt;LineItem&gt;800100&lt;/LineItem&gt;
          &lt;/Items&gt;
  &lt;/Batchorder&gt;
  &lt;Batchorder&gt;
          &lt;Header&gt;
          &lt;Ref&gt;13400&lt;/Ref&gt;
              &lt;ShipToDetails&gt;
                  &lt;ShipTo&gt;BBB&lt;/ShipTo&gt;                
              &lt;/ShipToDetails&gt;
          &lt;/Header&gt;
          &lt;Items&gt;
              &lt;LineItem&gt;800100&lt;/LineItem&gt;
          &lt;/Items&gt;
  &lt;/Batchorder&gt;
  &lt;Batchorder&gt;
          &lt;Header&gt;
          &lt;Ref&gt;13401&lt;/Ref&gt;
              &lt;ShipToDetails&gt;
                  &lt;ShipTo&gt;CCC&lt;/ShipTo&gt;                
              &lt;/ShipToDetails&gt;
          &lt;/Header&gt;
          &lt;Items&gt;
              &lt;LineItem&gt;800100&lt;/LineItem&gt;
          &lt;/Items&gt;
          &lt;Items&gt;
              &lt;LineItem&gt;800101&lt;/LineItem&gt;
          &lt;/Items&gt;
  &lt;/Batchorder&gt;
  </code></pre>
  
  <p>I have tried with below <strong>XSL1.0</strong>, but I get only the Partial output</p>
  
  <pre><code>&lt;xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;
      &lt;xsl:output method="xml" indent="yes"/&gt;
      &lt;xsl:key name="Orders" match="Header" use="Ref"/&gt;
      &lt;xsl:template match="Purchase"&gt;
              &lt;xsl:for-each select="/Purchase/Order/Header[generate-id() = generate-id(key('Orders',Ref)[1])]"&gt;
                      &lt;Batchorder&gt;
                          &lt;header&gt;
                                  &lt;OrderType&gt;
                                      &lt;xsl:value-of select="../Ref"/&gt;
                                  &lt;/OrderType&gt;                                
                                  &lt;ShipToDetails&gt;                                 
                                      &lt;ShipTo&gt;
                                          &lt;xsl:value-of select="ShipTo"/&gt;
                                      &lt;/ShipTo&gt;                               
                                  &lt;/ShipToDetails&gt;                                
                              &lt;/header&gt;
                              &lt;Items&gt;
                                  &lt;LineItem&gt;
                                      &lt;xsl:value-of select="../../Items/LineItem"/&gt;
                                  &lt;/LineItem&gt;
                              &lt;/Items&gt;
                      &lt;/Batchorder&gt;
              &lt;/xsl:for-each&gt;
      &lt;/xsl:template&gt;
  &lt;/xsl:stylesheet&gt;
  </code></pre>
  
  <p>I am looking for an <strong>xsl1.0</strong> solution, any help will be appreciated. Thanks!</p>