<p:declare-step xmlns:p="http://www.w3.org/ns/xproc" xmlns:px="http://www.daisy.org/ns/pipeline/xproc" xmlns:mo="http://www.w3.org/ns/SMIL" version="1.0" type="px:mediaoverlay-rearrange" name="rearrange"> <p:input port="mediaoverlay" primary="true" sequence="true"/> <p:input port="content" sequence="true"/> <p:output port="result" sequence="true" primary="true"/> <p:group name="rearrange.mediaoverlay-map"> <p:output port="result"/> <p:for-each> <p:add-xml-base all="true" relative="false"/> </p:for-each> <p:wrap-sequence wrapper="smil-map" wrapper-namespace="http://www.daisy.org/ns/pipeline/tmp"/> <p:xslt name="rearrange.mediaoverlay-annotated"> <p:input port="parameters"> <p:empty/> </p:input> <p:input port="stylesheet"> <p:inline> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:di="http://www.daisy.org/ns/pipeline/tmp" version="2.0"> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> <xsl:template match="/di:smil-map"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> <xsl:template match="mo:text"> <xsl:copy> <xsl:copy-of select="@*"/> <xsl:attribute name="fragment" select="if (contains(@src,'#')) then substring-after(@src,'#') else ''"/> <xsl:attribute name="src" select="resolve-uri(substring-before(@src,'#'),base-uri())"/> <xsl:apply-templates select="node()"/> </xsl:copy> </xsl:template> </xsl:stylesheet> </p:inline> </p:input> </p:xslt> <p:xslt> <p:input port="parameters"> <p:empty/> </p:input> <p:input port="stylesheet"> <p:document href="rearrange.prepare.xsl"/> </p:input> </p:xslt> <p:identity px:message="created annotated mediaoverlay" px:message-severity="DEBUG"/> </p:group> <p:sink/> <p:for-each name="rearrange.for-each"> <p:output port="mediaoverlay" sequence="true" primary="true"/> <p:iteration-source> <p:pipe port="content" step="rearrange"/> </p:iteration-source> <p:variable name="content-base" select="base-uri(/*)"/> <p:add-attribute match="//*" attribute-name="xml:base" name="rearrange.for-each.content"> <p:with-option name="attribute-value" select="base-uri(/*)"/> </p:add-attribute> <p:wrap-sequence wrapper="content-and-mediaoverlay" wrapper-namespace="http://www.daisy.org/ns/pipeline/tmp"> <p:input port="source"> <p:pipe port="result" step="rearrange.for-each.content"/> <p:pipe port="result" step="rearrange.mediaoverlay-map"/> </p:input> </p:wrap-sequence> <p:xslt> <p:input port="parameters"> <p:empty/> </p:input> <p:input port="stylesheet"> <p:document href="rearrange.xsl"/> </p:input> </p:xslt> <p:delete match="//mo:seq[not(descendant::mo:par)]"/> <p:documentation>generate ids</p:documentation> <p:xslt> <p:with-param name="iteration-position" select="p:iteration-position()"/> <p:input port="stylesheet"> <p:document href="generate-ids.xsl"/> </p:input> </p:xslt> <p:documentation>resolve relative uris</p:documentation> <p:xslt> <p:input port="parameters"> <p:empty/> </p:input> <p:input port="stylesheet"> <p:document href="resolve-relative-uris.xsl"/> </p:input> </p:xslt> <p:documentation>if there is only one top-level seq; turn it into a body element</p:documentation> <p:xslt> <p:input port="parameters"> <p:empty/> </p:input> <p:input port="stylesheet"> <p:document href="conditionally-join-toplevel-seq-with-body.xsl"/> </p:input> </p:xslt> <p:identity px:message="created media overlay for {$content-base}" px:message-severity="DEBUG"/> </p:for-each> </p:declare-step>