<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:d="http://www.daisy.org/ns/pipeline/data" xmlns:c="http://www.w3.org/ns/xproc-step" xmlns:pf="http://www.daisy.org/ns/pipeline/functions" version="2.0"> <xsl:import href="http://www.daisy.org/pipeline/modules/file-utils/library.xsl"/> <xsl:output method="xml" encoding="UTF-8" indent="yes" name="zip-manifest"/> <xsl:variable name="fileset.zip" select="collection()[1]"/> <xsl:template match="/"> <xsl:for-each select="distinct-values(//d:file/substring-before(resolve-uri(@href,base-uri(.)),'!/'))"> <xsl:variable name="href" select="."/> <xsl:result-document href="manifest_{position()}.xml" format="zip-manifest"> <xsl:element name="c:zip-manifest"> <xsl:attribute name="xml:base" select="base-uri($fileset.zip/*)"/> <xsl:attribute name="href" select="$href"/> <xsl:apply-templates select="$fileset.zip//d:file[substring-before(resolve-uri(@href,base-uri(.)),'!/')=$href]"/> </xsl:element> </xsl:result-document> </xsl:for-each> </xsl:template> <xsl:template match="d:file"> <xsl:element name="c:entry"> <xsl:variable name="target" select="resolve-uri(@href, base-uri(.))"/> <xsl:attribute name="name" select="pf:unescape-uri(substring-after($target,'!/'))"/> <xsl:attribute name="href" select="(@original-href,@href)[1]"/> <xsl:sequence select="@byte-order-mark | @escape-uri-attributes | @normalization-form | @cdata-section-elements | @include-content-type | @omit-xml-declaration | @doctype-public | @indent | @standalone | @doctype-system | @media-type | @undeclare-prefixes | @encoding | @method | @version"/> <xsl:sequence select="@compression-method | @compression-level"/> </xsl:element> </xsl:template> </xsl:stylesheet>