XSL-Übersicht / xsl:result-document

xsl:result-document

xsl:result-document

➪ Ab XSLT 2.0 erlaubt xsl:result-document die Generierung mehrerer Zieldokumente.

Der komfortable Einsatzbereich liegt in der Generierung mehrerer Zieldokumente, z.B. für jeden Ort ein eigenes XML-Dokument, in das der gesamte Teilbaum hineinkopiert wird.


<xsl:template name="outputdokumente">
  <xsl:for-each select="/Orte/Ort">
    <xsl:result-document 
         href="../output/{name}.xml" 
         exclude-result-prefixes="xs fn" 
         encoding="ISO-8859-1" 
         indent="no">
      <ERGEBNIS>
       <xsl:copy-of select="."/>
      </ERGEBNIS>
    </xsl:result-document>
  </xsl:for-each>
</xsl:template>

Vgl. .

In Verbindung mit können gruppierte Sequenzen in jeweils einzelne Ausgabedokumente geschrieben werden.


<xsl:stylesheet 
   version="2.0" 
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns:xs="http://www.w3.org/2001/XMLSchema" 
   xmlns:fn="http://www.w3.org/2005/xpath-functions"
   exclude-result-prefixes="xs fn">
   <xsl:template match="/">
     <xsl:for-each-group select="/Orte/Ort/Mensch/Kauf" 
       group-by="concat(../../name, '_', bez)">      
       <xsl:result-document 
         href="../output2/{current-grouping-key()}.xml" 
         encoding="ISO-8859-1"
         indent="no" method="xml">
         <Umsatz 
          artikel="{bez}"
          ort="{../../name}">
          <xsl:for-each-group 
             select="current-group()" 
             group-by="../id">
             <Kunde NN="{../name}" VN="{../vorname}">
              <anzahl>
                <xsl:value-of 
                   select="sum(current-group()/anzahl)"/>
              </anzahl>
             </Kunde>
          </xsl:for-each-group>
        </Umsatz>
       </xsl:result-document>
     </xsl:for-each-group>
  </xsl:template>
</xsl:stylesheet>

Bei Vorliegen eines entsprechenden XML-Inputs werden damit mehrere XML-Dateien generiert, zum Beispiel:


<Umsatz artikel="Schuhe" ort="Kapstadt">
   <Kunde NN="Ruhelos" VN="Rita">
      <anzahl>1</anzahl>
   </Kunde>
   <Kunde NN="Schlaflos" VN="Susi">
      <anzahl>5</anzahl>
   </Kunde>
   <Kunde NN="Rielos" VN="Lotte">
      <anzahl>9</anzahl>
   </Kunde>
   <Kunde NN="Leinenlos" VN="Liane">
      <anzahl>5</anzahl>
   </Kunde>
</Umsatz>

oder


<Umsatz artikel="Hemd" ort="Neustadt">
   <Kunde NN="Holzflos" VN="Hugo">
      <anzahl>20</anzahl>
   </Kunde>
   <Kunde NN="Sprachlos" VN="Stefan">
      <anzahl>66</anzahl>
   </Kunde>
   <Kunde NN="Sagblos" VN="Stefan">
      <anzahl>7</anzahl>
   </Kunde>
   <Kunde NN="Sorglos" VN="Siggi">
      <anzahl>14</anzahl>
   </Kunde>
   <Kunde NN="Herzlos" VN="Heini">
      <anzahl>16</anzahl>
   </Kunde>
</Umsatz>

Die gemeinsame Auswertung dieser mehrfachen XML-Dokumente ist mit möglich.

wg / 24. Juni 2018



Fragen? Anmerkungen? Tips?

Bitte nehmen Sie Kontakt zu mir auf.






Vielen Dank für Ihr Interesse an meiner Arbeit.


V.i.S.d.P.: Wilfried Grupe * Klus 6 * 37643 Negenborn

☎ 0151. 750 360 61 * eMail: info10@wilfried-grupe.de

www.wilfried-grupe.de/XSL_result_document.html