xsl-list
[Top] [All Lists]

Re: [xsl] Zipping xsl:result-documents into ePub

2009-08-25 11:55:47
Thanks Florent, EXPath worked like a charm! So far at least. I joined
the Google Group.

Maybe you have an example on reading OpenDocument (at least .odt), so
that I could drop ODFToolkit and have my whole ODF > ePub workflow as
XSLT? :)

Martynas
semantic-web.dk

On Tue, Aug 25, 2009 at 5:05 PM, Florent Georges<lists(_at_)fgeorges(_dot_)org> 
wrote:
Martynas Jusevicius wrote:

 Hi,

However, so far I'm writing the result documents to a folder in
the filesystem.  As I'm planing to package them into ePub file
using java.util.zip, this is probably not very smart.  Is there
a way to avoid serializing to files and pass the result
documents directly to java.util.zip, probably as streams?  I
saw OutputURIResolver mentioned, but couldn't find a decent
example.

 You can also have a look at the EXPath ZIP facility.  It has
not been released yet, and is still in development, but if you
generate (at least some of) the entries of the ZIP file in XSLT,
it allows you to handle the creation of the ZIP file directly
from the stylesheet.  See a complete example at the end of this
message.

 As I said, it has not been released yet, but you can find a dev
version at http://www.expath.org/tmp/expath-zip-saxon-0.1.pkg.zip
for Saxon.  Just import the included stylesheet in your own
stylesheet and put the JAR file into your classpath.

 For any further info, see http://groups.google.com/group/expath
and http://www.expath.org/.

 Regards,

--
Florent Georges
http://www.fgeorges.org/


<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
               xmlns:zip="http://www.expath.org/mod/zip";
               xmlns="urn:oasis:names:tc:opendocument:xmlns:container"
               exclude-result-prefixes="#all"
               version="2.0">

  <xsl:import href="http://www.expath.org/mod/zip.xsl"/>

  <xsl:output omit-xml-declaration="yes" indent="yes"/>

  <xsl:template name="main" match="/">

     <!-- the output file name -->
     <xsl:variable name="file" select="
         resolve-uri('simple-zip-create.zip')"/>

     <!-- description of the content of the new ZIP file -->
     <xsl:variable name="struct" as="element(zip:file)">
        <!-- the ZIP file itself -->
        <zip:file href="{ $file }">
           <!-- the 'mimetype' file within the ZIP -->
           <zip:entry name="mimetype" output="text">
              <xsl:text>application/epub+zip</xsl:text>
           </zip:entry>
           <!-- the 'META-INF' dir within the ZIP -->
           <zip:dir name="META-INF">
              <!-- the 'container.xml' file within the dir -->
              <zip:entry name="container.xml" output="xml">
                 <container version="1.0">
                    <rootfiles>
                       <rootfile full-path="..." media-type="..."/>
                    </rootfiles>
                 </container>
              </zip:entry>
           </zip:dir>
        </zip:file>
     </xsl:variable>

     <!-- the entries in the presentation file -->
     <xsl:sequence select="zip:zip-file($struct)"/>

  </xsl:template>

</xsl:stylesheet>


























--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--