Dependency-based Pipeline
<p:library xmlns:p="http://www.w3.org/ns/xproc"
xmlns:c="http://www.w3.org/ns/xproc-step"
xmlns:cx="http://xmlcalabash.com/ns/extensions"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:pl="http://www.w3.org/XML/XProc/docs/library">
<p:import href="http://xmlcalabash.com/extension/steps/library-1.0.xpl"/>
<p:import href="/home/ndw/xmlcalabash.com/library/depends.xpl"/>
<p:pipeinfo xml:id="langspec">
<cx:depends>
<cx:target>langspec.html</cx:target>
<cx:source>langspec.xml</cx:source>
<cx:source>parallel.xml</cx:source>
<cx:source>schemas/xproc.rnc</cx:source>
<cx:source>schemas/xproc.rng</cx:source>
<cx:source>standard-components.xml</cx:source>
<cx:source>references.xml</cx:source>
<cx:source>error-vocabulary.xml</cx:source>
<cx:source>conformance.xml</cx:source>
<cx:source>namespace-fixup.xml</cx:source>
<cx:source>language-summary.xml</cx:source>
<cx:source>error-codes.xml</cx:source>
<cx:source>../style/docbook.xsl</cx:source>
<cx:source>../style/dbspec.xsl</cx:source>
<cx:source>../style/xprocns.xsl</cx:source>
<cx:source>../style/rngsyntax.xsl</cx:source>
</cx:depends>
</p:pipeinfo>
<p:declare-step name="main" type="pl:main-spec">
<p:input port="parameters" kind="parameter"/>
<cx:out-of-date>
<p:input port="source" select="id('langspec')/cx:depends">
<p:document href="#"/>
</p:input>
</cx:out-of-date>
<p:choose>
<p:when test="/c:result = 'true'">
<pl:format-spec name="fmat">
<p:input port="source">
<p:document href="langspec.xml"/>
</p:input>
</pl:format-spec>
<pl:tidy href="langspec.html"/>
<pl:ancillary-files>
<p:input port="source">
<p:pipe step="fmat" port="xincluded"/>
</p:input>
</pl:ancillary-files>
</p:when>
<p:otherwise>
<cx:message message="langspec.html is up-to-date."/>
<p:sink/>
</p:otherwise>
</p:choose>
<pl:main-ns/>
</p:declare-step>
<p:declare-step name="main" type="pl:format-spec">
<p:input port="source"/>
<p:input port="parameters" kind="parameter"/>
<p:output port="result" primary="true"/>
<p:output port="xincluded">
<p:pipe step="xinclude" port="result"/>
</p:output>
<p:sink/>
<p:xslt name="make-glossary">
<p:input port="source">
<p:pipe step="main" port="source"/>
</p:input>
<p:input port="stylesheet">
<p:document href="../style/makeglossary.xsl"/>
</p:input>
</p:xslt>
<p:store href="glossary.xml"/>
<p:xinclude name="xinclude" cx:depends-on="make-glossary">
<p:input port="source">
<p:pipe step="main" port="source"/>
</p:input>
<p:log port="result" href="/tmp/out.xml"/>
</p:xinclude>
<p:validate-with-relax-ng>
<p:input port="schema">
<p:document href="../schema/dbspec.rng"/>
</p:input>
</p:validate-with-relax-ng>
<p:xslt name="style">
<p:input port="stylesheet">
<p:document href="../style/dbspec.xsl"/>
</p:input>
</p:xslt>
</p:declare-step>
<p:declare-step name="main" type="pl:main-req">
<p:input port="parameters" kind="parameter"/>
<p:option name="document" select="'langreq.xml'"/>
<p:option name="href" select="'langreq.html'"/>
<p:load dtd-validate="true">
<p:with-option name="href" select="$document">
<p:empty/>
</p:with-option>
</p:load>
<pl:format-req/>
<pl:tidy>
<p:with-option name="href" select="$href"/>
</pl:tidy>
</p:declare-step>
<p:declare-step name="main" type="pl:format-req">
<p:input port="source"/>
<p:input port="parameters" kind="parameter"/>
<p:output port="result"/>
<p:xslt name="style">
<p:input port="stylesheet">
<p:document href="../style/langreq.xsl"/>
</p:input>
</p:xslt>
</p:declare-step>
<p:pipeinfo xml:id="ns-xproc">
<cx:depends>
<cx:target>ns-xproc.html</cx:target>
<cx:source>ns-xproc.xml</cx:source>
<cx:source>../style/docbook.xsl</cx:source>
<cx:source>../style/dbspec.xsl</cx:source>
<cx:source>../style/xprocns.xsl</cx:source>
<cx:source>../style/elemsyntax.xsl</cx:source>
</cx:depends>
</p:pipeinfo>
<p:pipeinfo xml:id="ns-xproc-step">
<cx:depends>
<cx:target>ns-xproc-step.html</cx:target>
<cx:source>ns-xproc-step.xml</cx:source>
<cx:source>../style/docbook.xsl</cx:source>
<cx:source>../style/dbspec.xsl</cx:source>
<cx:source>../style/xprocns.xsl</cx:source>
<cx:source>../style/elemsyntax.xsl</cx:source>
</cx:depends>
</p:pipeinfo>
<p:pipeinfo xml:id="ns-xproc-error">
<cx:depends>
<cx:target>ns-xproc-error.html</cx:target>
<cx:source>ns-xproc-error.xml</cx:source>
<cx:source>../style/docbook.xsl</cx:source>
<cx:source>../style/dbspec.xsl</cx:source>
<cx:source>../style/xprocns.xsl</cx:source>
<cx:source>../style/elemsyntax.xsl</cx:source>
</cx:depends>
</p:pipeinfo>
<p:declare-step name="main" type="pl:main-ns">
<p:input port="parameters" kind="parameter"/>
<cx:out-of-date>
<p:input port="source" select="id('ns-xproc')/cx:depends">
<p:document href="#"/>
</p:input>
</cx:out-of-date>
<p:choose>
<p:when test="/c:result = 'true'">
<pl:format-ns>
<p:input port="source">
<p:document href="ns-xproc.xml"/>
</p:input>
</pl:format-ns>
<pl:tidy href="ns-xproc-step.html"/>
</p:when>
<p:otherwise>
<cx:message message="ns-xproc.html is up-to-date."/>
<p:sink/>
</p:otherwise>
</p:choose>
<cx:out-of-date>
<p:input port="source" select="id('ns-xproc-step')/cx:depends">
<p:document href="#"/>
</p:input>
</cx:out-of-date>
<p:choose>
<p:when test="/c:result = 'true'">
<pl:format-ns>
<p:input port="source">
<p:document href="ns-xproc-step.xml"/>
</p:input>
</pl:format-ns>
<pl:tidy href="ns-xproc-step.html"/>
</p:when>
<p:otherwise>
<cx:message message="ns-xproc-step.html is up-to-date."/>
<p:sink/>
</p:otherwise>
</p:choose>
<cx:out-of-date>
<p:input port="source" select="id('ns-xproc-error')/cx:depends">
<p:document href="#"/>
</p:input>
</cx:out-of-date>
<p:choose>
<p:when test="/c:result = 'true'">
<pl:format-ns>
<p:input port="source">
<p:document href="ns-xproc-error.xml"/>
</p:input>
</pl:format-ns>
<pl:tidy href="ns-xproc-error.html"/>
</p:when>
<p:otherwise>
<cx:message message="ns-xproc-error.html is up-to-date."/>
<p:sink/>
</p:otherwise>
</p:choose>
</p:declare-step>
<p:declare-step name="main" type="pl:format-ns">
<p:input port="source"/>
<p:input port="parameters" kind="parameter"/>
<p:output port="result"/>
<p:xinclude/>
<p:validate-with-relax-ng>
<p:input port="schema">
<p:document href="../schema/dbspec.rng"/>
</p:input>
</p:validate-with-relax-ng>
<p:xslt name="style">
<p:input port="stylesheet">
<p:document href="../style/dbspec.xsl"/>
</p:input>
</p:xslt>
</p:declare-step>
<p:declare-step type="pl:tidy">
<p:input port="source"/>
<p:option name="href" required="true"/>
<p:store name="store">
<p:with-option name="href" select="$href"/>
</p:store>
<p:exec name="exec" result-is-xml="false" source-is-xml="false"
command="/Users/ndw/bin/tidy" args="langspec.html"
cx:depends-on="store">
<p:input port="source"><p:empty/></p:input>
</p:exec>
<p:sink/>
</p:declare-step>
<p:declare-step name="main" type="pl:ancillary-files">
<p:input port="source"/>
<p:input port="parameters" kind="parameter"/>
<p:xslt>
<p:input port="source">
<p:pipe step="main" port="source"/>
</p:input>
<p:input port="stylesheet">
<p:document href="../style/pipeline-library.xsl"/>
</p:input>
</p:xslt>
<p:store href="pipeline-library.xml"/>
<p:xslt>
<p:input port="source">
<p:pipe step="main" port="source"/>
</p:input>
<p:input port="stylesheet">
<p:document href="../style/typed-pipeline-library.xsl"/>
</p:input>
</p:xslt>
<p:store href="typed-pipeline-library.xml"/>
<p:xslt>
<p:input port="source">
<p:pipe step="main" port="source"/>
</p:input>
<p:input port="stylesheet">
<p:document href="../style/error-list.xsl"/>
</p:input>
</p:xslt>
<p:store href="error-list.xml"/>
</p:declare-step>
<p:declare-step name="main" type="pl:main-diff">
<p:option name="previous" required="true"/>
<p:option name="current" select="'langspec.html'"/>
<p:option name="href" select="'diff.html'"/>
<pl:diff>
<p:with-option name="previous" select="$previous">
<p:empty/>
</p:with-option>
<p:with-option name="current" select="$current">
<p:empty/>
</p:with-option>
</pl:diff>
<p:store>
<p:with-option name="href" select="$href"/>
</p:store>
</p:declare-step>
<p:declare-step name="main" type="pl:diff">
<p:option name="previous" required="true"/>
<p:option name="current" required="true"/>
<p:output port="result"/>
<p:load name="previous">
<p:with-option name="href" select="$previous">
<p:empty/>
</p:with-option>
</p:load>
<p:load name="current">
<p:with-option name="href" select="$current">
<p:empty/>
</p:with-option>
</p:load>
<cx:delta-xml>
<p:input port="source">
<p:pipe step="previous" port="result"/>
</p:input>
<p:input port="alternate">
<p:pipe step="current" port="result"/>
</p:input>
<p:input port="dxp">
<p:document href="/usr/local/DeltaXMLCore-5_1/samples/dxp/compare-xhtml.dxp"/>
</p:input>
</cx:delta-xml>
</p:declare-step>
</p:library>