title: Generate SOAP XML using SQL Server
body: <p>Has anyone generated XML files using SQL Server in a SOAP format? I am trying to generate the following structure from SQL, but I cannot figure it out if the <code>FOR XML</code> clause is the best approach for this. Can anyone give some suggestions? Maybe another approach for this kind of files? Thanks</p>
  
  <p><strong>SOAP XML structure</strong></p>
  
  <pre><code>&lt;soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"&gt;
     &lt;s:Header xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"&gt;
        &lt;To s:mustUnderstand="1" xmlns=""&gt;&lt;/To&gt;
        &lt;Action s:mustUnderstand="1" xmlns=""&gt;&lt;/Action&gt;
     &lt;/s:Header&gt;
     &lt;soapenv:Body&gt;
        &lt;tns:StoreDocument xmlns:tns=""&gt;
           &lt;tns:StoreDocumentMessage&gt;
              &lt;q1:SystemCode xmlns:q1=""&gt;&lt;/q1:SystemCode&gt;
              &lt;q1:TransmissionUID xmlns:q1=""&gt;d2032705-5478-4694-98f9-d2eafa3933b2&lt;/q1:TransmissionUID&gt;
              &lt;q1:DocumentSection xmlns:q1=""&gt;
                 &lt;q17:DocumentType xmlns:q17=""&gt;1&lt;/q17:DocumentType&gt;
                 &lt;q17:DocumentNumber xmlns:q17=""&gt;0000006965&lt;/q17:DocumentNumber&gt;
                 &lt;q17:DocumentUID xsi:nil="true" xmlns:q17="" xmlns:xsi=""/&gt;
                 &lt;q17:CreationDateTimeUTC xmlns:q17=""&gt;2017-08-04 09:09:29 -03:00&lt;/q17:CreationDateTimeUTC&gt;
                 &lt;q17:DocumentStatus xmlns:q17=""&gt;2&lt;/q17:DocumentStatus&gt;
                 &lt;q17:LatestGoodIssueDate xmlns:q17=""&gt;2017-08-04 13:35:16 -03:00&lt;/q17:LatestGoodIssueDate&gt;
                 &lt;q17:Reference xmlns:q17=""&gt;0000013254&lt;/q17:Reference&gt;
                 &lt;q17:TotalOrderedProducts xsi:nil="true" xmlns:q17="" xmlns:xsi=""/&gt;
                 &lt;q17:OrderedProducts xmlns:q17=""&gt;
                    &lt;q17:OrderedProductSection&gt;
                       &lt;q17:ProductCode&gt;2152157&lt;/q17:ProductCode&gt;
                       &lt;q17:OrderedQuantity&gt;500000&lt;/q17:OrderedQuantity&gt;
                 &lt;/q17:OrderedProducts&gt;
                 &lt;q17:RelatedDocumentSection xsi:nil="true" xmlns:q17="" xmlns:xsi=""/&gt;
                 &lt;q17:StockOwnerSection xmlns:q17=""&gt;
                    &lt;q17:StockOwnerCode&gt;&lt;/q17:StockOwnerCode&gt;
                    &lt;q17:StockOwnerName&gt;&lt;/q17:StockOwnerName&gt;
                    &lt;q17:StockOwnerAddress1&gt;&lt;/q17:StockOwnerAddress1&gt;
                    &lt;q17:StockOwnerAddress2/&gt;
                    &lt;q17:StockOwnerZIP&gt;1407&lt;/q17:StockOwnerZIP&gt;
                    &lt;q17:StockOwnerCity&gt;&lt;/q17:StockOwnerCity&gt;
                    &lt;q17:StockOwnerNameRomanized&gt;&lt;/q17:StockOwnerNameRomanized&gt;
                    &lt;q17:StockOwnerAddress1Romanized&gt;&lt;/q17:StockOwnerAddress1Romanized&gt;
                    &lt;q17:StockOwnerAddress2Romanized/&gt;
                    &lt;q17:StockOwnerZIPRomanized&gt;&lt;/q17:StockOwnerZIPRomanized&gt;
                    &lt;q17:StockOwnerCityRomanized&gt;&lt;/q17:StockOwnerCityRomanized&gt;
                    &lt;q17:StockOwnerCountry&gt;&lt;/q17:StockOwnerCountry&gt;
                    &lt;q17:StockOwnerGLN xsi:nil="true" xmlns:xsi=""/&gt;
                 &lt;/q17:StockOwnerSection&gt;
           &lt;/tns:StoreDocumentMessage&gt;
        &lt;/tns:StoreDocument&gt;
     &lt;/soapenv:Body&gt;
  &lt;/soapenv:Envelope&gt;
  </code></pre>