<p:declare-step xmlns:p="http://www.w3.org/ns/xproc" xmlns:px="http://www.daisy.org/ns/pipeline/xproc" xmlns:pxi="http://www.daisy.org/ns/pipeline/xproc/internal" xmlns:cx="http://xmlcalabash.com/ns/extensions" xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0" type="pxi:daisy202-to-epub3-resolve-links-create-mapping"> <p:documentation> <h1>Creates a reusable mapping for pxi:daisy202-to-epub3-resolve-links</h1> </p:documentation> <p:input port="daisy-smil" sequence="true" primary="true"> <p:documentation xmlns="http://www.w3.org/1999/xhtml"> <p>The DAISY 2.02 SMIL documents.</p> <pre><code class="example"> <smil xml:base="file:/home/user/daisy202/a.smil"> <head>...</head> <seq dur="10s"> <par endsync="last"> <text id="fragment" src="a.html#id"/> </par> </seq> </smil> <smil xml:base="file:/home/user/daisy202/b.smil">...</smil> <smil xml:base="file:/home/user/daisy202/c.smil">...</smil> </code></pre> </p:documentation> </p:input> <p:output port="result"> <p:documentation xmlns="http://www.w3.org/1999/xhtml"> <p>A map of all the links in the SMIL files.</p> <pre><code class="example"> <di:mapping xmlns:di="http://www.daisy.org/ns/pipeline/tmp"> <di:smil xml:base="file:/home/user/a.smil"> <di:text par-id="fragment1" text-id="frg1" src="a.html#txt1"/> <di:text par-id="fragment2" text-id="frg2" src="a.html#txt2"/> </di:smil> <di:smil xml:base="file:/home/user/b.smil"> <di:text par-id="fragment1" text-id="frg1" src="b.html#txt1"/> <di:text par-id="fragment2" text-id="frg2" src="b.html#txt2"/> </di:smil> </di:mapping> </code></pre> </p:documentation> </p:output> <p:import href="http://www.daisy.org/pipeline/modules/common-utils/library.xpl"/> <p:import href="http://www.daisy.org/pipeline/modules/file-utils/library.xpl"> <p:documentation> px:set-base-uri </p:documentation> </p:import> <p:for-each> <p:documentation xmlns="http://www.w3.org/1999/xhtml">For each SMIL</p:documentation> <p:variable name="smil-base" select="base-uri(/*)"/> <p:add-xml-base all="true" relative="false"/> <p:documentation xmlns="http://www.w3.org/1999/xhtml">For each text element where the a@fragment matches the text@id or text/parent@id</p:documentation> <p:for-each> <p:iteration-source select="//*[local-name()='par']"/> <p:variable name="par-id" cx:as="xs:string" select="/*/@id"/> <p:variable name="text-id" cx:as="xs:string" select="/*/*[local-name()='text']/@id"/> <p:variable name="text-src" cx:as="xs:string" select="/*/*[local-name()='text']/resolve-uri(@src,base-uri(.))"/> <p:identity name="current-smil"/> <p:in-scope-names name="vars"/> <p:template> <p:input port="template"> <p:inline exclude-inline-prefixes="#all"> <di:text xmlns:di="http://www.daisy.org/ns/pipeline/tmp" par-id="{$par-id}" text-id="{$text-id}" src="{$text-src}"/> </p:inline> </p:input> <p:input port="source"> <p:pipe port="result" step="current-smil"/> </p:input> <p:input port="parameters"> <p:pipe step="vars" port="result"/> </p:input> </p:template> </p:for-each> <p:wrap-sequence xmlns:di="http://www.daisy.org/ns/pipeline/tmp" wrapper="di:smil"/> <px:set-base-uri> <p:with-option name="base-uri" select="$smil-base"/> </px:set-base-uri> <p:add-xml-base/> <px:message> <p:with-option name="message" select="concat('created a map of links from the SMIL file ',$smil-base)"/> </px:message> </p:for-each> <p:wrap-sequence xmlns:di="http://www.daisy.org/ns/pipeline/tmp" wrapper="di:mapping"/> <px:message message="created a map of links from all the SMIL files"/> </p:declare-step>