Home
Über mich
Veröffentlichungen

XML XML-Schema XPath XSL-T XSL-FO XQuery XProc SVG

XProc / XProc: Mehrere Auswertungen

XProc: Mehrere Auswertungen

XProc: Mehrere Auswertungen

➪ In XProc ist es möglich, eine Sequenz zu generieren und wiederholt auf sie zuzugreifen.

Auf dieser Seite:

Beispiel

In init_doc wird die Sequenz generiert, sie wird nicht gespeichert. Die folgenden Auswertungen greifen wiederholt darauf zu. Zusätzlich greift Auswertung3 auf Auswertung1 zu. Das Ergebnis des folgenden Beispiels sind 4 unterschiedliche Dateien.


<?xml version="1.0" encoding="UTF-8"?>
<p:declare-step xmlns:p="http://www.w3.org/ns/xproc"
  xmlns:c="http://www.w3.org/ns/xproc-step" version="1.0">
  <p:input port="source">
    <p:inline>
      <doc>Hello world!</doc>      
    </p:inline>
  </p:input>
  <p:input port="parameters" kind="parameter"/>
  <p:output port="result" sequence="true">
    <p:empty/>
  </p:output>
  <p:xslt name="init_doc">
    <p:input port="stylesheet">
      <p:inline>
        <xsl:stylesheet 
             xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
             exclude-result-prefixes="c" version="3.0">
          <xsl:template match="/">
            <ergebnisse>
              <xsl:for-each select="1 to 20">
                <wert>
                  <xsl:value-of select="."/>
                </wert>
              </xsl:for-each>
            </ergebnisse>
          </xsl:template>
        </xsl:stylesheet>
      </p:inline>
    </p:input>
  </p:xslt>
  <p:xslt name="Auswertung1">
    <p:input port="stylesheet">
      <p:inline>
        <xsl:stylesheet 
             xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
             exclude-result-prefixes="c" version="3.0">
          <xsl:template match="/">
            <result>
              <xsl:for-each select="/ergebnisse/wert[. mod 3 = 0]">
                <value>
                  <xsl:value-of select="."/>
                </value>
              </xsl:for-each>
            </result>
          </xsl:template>
        </xsl:stylesheet>
      </p:inline>
    </p:input>
    <p:input port="source">
      <p:pipe port="result" step="init_doc"/>
    </p:input>
  </p:xslt>
  <p:store method="xml" omit-xml-declaration="false" 
           indent="true" encoding="ISO-8859-1">
    <p:with-option name="href"
      select="'output/Auswertung1.xml'"/>
  </p:store>
  <p:xslt name="Auswertung2">
    <p:input port="stylesheet">
      <p:inline>
        <xsl:stylesheet 
             xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
             exclude-result-prefixes="c" version="3.0">
          <xsl:template match="/">
            <result>
              <xsl:for-each select="/ergebnisse/wert[. mod 2 = 1]">
                <value>
                  <xsl:value-of select="."/>
                </value>
              </xsl:for-each>
            </result>
          </xsl:template>
        </xsl:stylesheet>
      </p:inline>
    </p:input>
    <p:input port="source">
      <p:pipe port="result" step="init_doc"/>
    </p:input>
  </p:xslt>
  <p:store method="xml" omit-xml-declaration="false" 
           indent="true" encoding="ISO-8859-1">
    <p:with-option name="href"
      select="'output/Auswertung2.xml'"/>
  </p:store>
  <p:xslt name="Auswertung3">
    <p:input port="stylesheet">
      <p:inline>
        <xsl:stylesheet 
             xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
             exclude-result-prefixes="c" version="3.0">
          <xsl:template match="/">
            <result>
              <xsl:for-each select="/result/value[. mod 9 = 0]">
                <value>
                  <xsl:value-of select="."/>
                </value>
              </xsl:for-each>
            </result>
          </xsl:template>
        </xsl:stylesheet>
      </p:inline>
    </p:input>
    <p:input port="source">
      <p:pipe port="result" step="Auswertung1"/>
    </p:input>
  </p:xslt>
  <p:store method="xml" omit-xml-declaration="false" 
           indent="true" encoding="ISO-8859-1">
    <p:with-option name="href"
      select="'output/Auswertung3.xml'"/>
  </p:store>
  <p:xslt name="Auswertung4">
    <p:input port="stylesheet">
      <p:inline>
        <xsl:stylesheet 
             xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
             exclude-result-prefixes="c" version="3.0">
          <xsl:template match="/">
            <result summe="{/ergebnisse/wert[. &lt; 10] => sum()}">
              <xsl:for-each select="/ergebnisse/wert[. &lt; 10]">
                <value>
                  <xsl:value-of select="."/>
                </value>
              </xsl:for-each>
            </result>
          </xsl:template>
        </xsl:stylesheet>
      </p:inline>
    </p:input>
    <p:input port="source">
      <p:pipe port="result" step="init_doc"/>
    </p:input>
  </p:xslt>
  <p:store method="xml" omit-xml-declaration="false" 
           indent="true" encoding="ISO-8859-1">
    <p:with-option name="href"
      select="'output/Auswertung4.xml'"/>
  </p:store>
</p:declare-step>

wg / 10. August 2021



Fragen? Anmerkungen? Tipps?

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/xproc_mehrereAuswertungen.html