<p:declare-stepxmlns:p="http://www.w3.org/ns/xproc"xmlns:px="http://www.daisy.org/ns/pipeline/xproc"xmlns:pf="http://www.daisy.org/ns/pipeline/functions"xmlns:d="http://www.daisy.org/ns/pipeline/data"xmlns:c="http://www.w3.org/ns/xproc-step"xmlns:cx="http://xmlcalabash.com/ns/extensions"xmlns:xs="http://www.w3.org/2001/XMLSchema"version="1.0"type="px:dtbook-to-html.script"name="main"px:input-filesets="dtbook"px:output-filesets="html"exclude-inline-prefixes="#all">
<p:documentationxmlns="http://www.w3.org/1999/xhtml">
<h1px:role="name">DTBook to HTML</h1><ppx:role="desc">Transforms DTBook XML into HTML.</p>
<apx:role="homepage"href="http://daisy.github.io/pipeline/Get-Help/User-Guide/Scripts/dtbook-to-html/">
Online documentation
</a>
</p:documentation>
<p:inputport="source"primary="true"sequence="true"px:media-type="application/x-dtbook+xml">
<p:documentationxmlns="http://www.w3.org/1999/xhtml">
<h2px:role="name">DTBook file(s)</h2><ppx:role="desc">One or more DTBook files to be transformed. In the case of multiple
files, a merge will be performed.</p>
</p:documentation>
</p:input><p:optionname="language"select="''"required="false"px:type="string"><p:documentationxmlns="http://www.w3.org/1999/xhtml">
<h2px:role="name">Language code</h2><ppx:role="desc">Language code of the input document.</p>
</p:documentation>
</p:option><p:optionname="nimas"select="'false'"required="false"px:type="boolean"><p:documentationxmlns="http://www.w3.org/1999/xhtml">
<h2px:role="name">NIMAS input</h2><ppx:role="desc">Whether the input DTBook is a NIMAS 1.1-conformant XML content file.</p>
</p:documentation>
</p:option><p:optionname="validation"select="'abort'"required="false"><p:pipeinfo><px:type>
<choicexmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">
<value>off</value>
<a:documentationxml:lang="en">No validation</a:documentation>
<value>report</value>
<a:documentationxml:lang="en">Report validation issues</a:documentation>
<value>abort</value>
<a:documentationxml:lang="en">Abort on validation issues</a:documentation>
</choice>
</px:type></p:pipeinfo><p:documentationxmlns="http://www.w3.org/1999/xhtml">
<h2px:role="name">Validation</h2><ppx:role="desc">Whether to abort on validation issues.</p>
</p:documentation>
</p:option><p:outputport="validation-report"sequence="true"px:media-type="application/vnd.pipeline.report+xml"><p:documentationxmlns="http://www.w3.org/1999/xhtml">
<h2px:role="name">Validation reports</h2>
</p:documentation>
<p:pipestep="load"port="validation-report"/>
</p:output><p:outputport="status"px:media-type="application/vnd.pipeline.status+xml">
<p:pipestep="result"port="status"/>
</p:output><p:optionname="result"required="true"px:output="result"px:type="anyDirURI"px:media-type="text">
<p:documentationxmlns="http://www.w3.org/1999/xhtml">
<h2px:role="name">HTML</h2><ppx:role="desc">The resulting HTML document.</p>
</p:documentation>
</p:option><p:optionxmlns:_="dtbook"name="_:chunk-size"select="'-1'"required="false"px:type="integer"><p:documentationxmlns="http://www.w3.org/1999/xhtml">
<h2px:role="name">Chunk size</h2><ppx:role="desc"xml:space="preserve">The maximum size of HTML files in kB. Specify "-1" for no maximum.
Top-level sections in the DTBook become separate HTML files in the resulting EPUB, and are further
split up if they exceed the given maximum size.</p>
</p:documentation>
</p:option>
<p:importhref="http://www.daisy.org/pipeline/modules/dtbook-utils/library.xpl">
<p:documentation>
px:dtbook-load
</p:documentation>
</p:import>
<p:importhref="http://www.daisy.org/pipeline/modules/fileset-utils/library.xpl">
<p:documentation>
px:fileset-add-entries
px:fileset-store
</p:documentation>
</p:import>
<p:importhref="convert.xpl">
<p:documentation>
px:dtbook-to-html
</p:documentation>
</p:import>
<cx:importhref="http://www.daisy.org/pipeline/modules/file-utils/library.xsl"type="application/xslt+xml">
<p:documentation>
pf:normalize-uri
</p:documentation>
</cx:import>
<p:sink/>
<px:fileset-add-entriesmedia-type="application/x-dtbook+xml"name="dtbook">
<p:inputport="entries">
<p:pipestep="main"port="source"/>
</p:input>
</px:fileset-add-entries>
<px:dtbook-loadname="load"px:progress=".1"px:message="Loading DTBook">
<p:inputport="source.in-memory">
<p:pipestep="dtbook"port="result.in-memory"/>
</p:input>
<p:with-optionname="validation"select="not($validation='off')"/>
<p:with-optionname="nimas"select="$nimas='true'"/>
</px:dtbook-load>
<p:sink/>
<p:identity>
<p:inputport="source">
<p:pipestep="load"port="validation-status"/>
</p:input>
</p:identity>
<p:choose>
<p:whentest="/d:validation-status[@result='error']">
<p:choose>
<p:whentest="$validation='abort'">
<p:identitypx:message="The input contains an invalid DTBook file. See validation report for more info."px:message-severity="ERROR"/>
</p:when>
<p:otherwise>
<p:identitypx:message="The input contains an invalid DTBook file. See validation report for more info."px:message-severity="WARN"/>
</p:otherwise>
</p:choose>
</p:when>
<p:otherwise>
<p:identity/>
</p:otherwise>
</p:choose>
<p:choosename="result"px:progress=".9">
<p:whentest="/d:validation-status[@result='error'] and $validation='abort'">
<p:outputport="status"/>
<p:identity/>
</p:when>
<p:otherwise>
<p:outputport="status"/>
<p:variablename="dtbook-is-valid"cx:as="xs:boolean"select="not($validation='off') and exists(/d:validation-status[@result='ok'])"/>
<p:sink/>
<p:split-sequencetest="position()=1"initial-only="true">
<p:inputport="source">
<p:pipestep="main"port="source"/>
</p:input>
</p:split-sequence>
<p:grouppx:progress="1">
<p:variablename="encoded-title"select="replace(replace(base-uri(/),'^.*/([^/]+)$','$1'),'\.[^\.]*$','')"/>
<p:variablename="output-dir-uri"select="pf:normalize-uri(concat($result,'/'))"/>
<p:variablename="html-file-uri"select="concat($output-dir-uri,$encoded-title,'.epub')"/>
<p:sink/>
<px:dtbook-to-htmlname="convert"px:progress="8/9">
<p:inputport="source.fileset">
<p:pipestep="load"port="result.fileset"/>
</p:input>
<p:inputport="source.in-memory">
<p:pipestep="load"port="result.in-memory"/>
</p:input>
<p:with-optionname="language"select="$language"/>
<p:with-optionname="validation"select="$validation"/>
<p:with-optionname="dtbook-is-valid"select="$dtbook-is-valid"/>
<p:with-optionname="nimas"select="$nimas='true'"/>
<p:with-optionxmlns:_="dtbook"name="chunk-size"select="$_:chunk-size"/>
<p:with-optionname="output-dir"select="$output-dir-uri"/>
<p:with-optionname="temp-dir"select="pf:normalize-uri(concat($temp-dir,'/'))"/>
<p:with-optionname="filename"select="$encoded-title"/>
</px:dtbook-to-html>
<px:fileset-storename="store"px:progress="1/9"px:message="Storing HTML">
<p:inputport="in-memory.in">
<p:pipestep="convert"port="result.in-memory"/>
</p:input>
</px:fileset-store>
<p:identitycx:depends-on="store">
<p:inputport="source">
<p:inline><d:validation-statusresult="ok"/></p:inline>
</p:input>
</p:identity>
</p:group>
</p:otherwise>
</p:choose>
</p:declare-step>