<
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>