You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cocoon.apache.org by mo...@wipro.com on 2004/05/17 08:51:50 UTC
Directory zip error
Hi,
I am trying to zip a directory and all the content of the directory
I have a directory structure as follows:
C:\Directory
|
|-- dirA
|--------FileA.text
|--------FileB.text
|-- dirB
|--FileRootA.txt
|--FileRootB.txt
I have written an xsl to read this using Directory generator and zip the
files and the directories recursively till n level..
What I found, all the files at all the levels are getting zipped but not
directory.
For directories I get the following error:
'If I comment the zip entry for directories, files gets zipped
correctly.
"org.apache.cocoon.ProcessingException: Failed to execute pipeline.:
java.lang.RuntimeException:
org.apache.excalibur.source.SourceNotFoundException: file:/C:/directory/
doesn't exist"
Though the directory very much exists. I have tried hard coding and
adding the same also, but no luck.
I have the xsl written as below:
Can some one please check out and let me know where I am going wrong, or
is it that we can only zip files using Cocoon and not directories.
Thanks in advance.
Regards,
Moin
========================
Sitemap.xmap is as follows
<map:match pattern="zipFolderActions">
<map:generate type="directory" src="{request-param:zipFolders}">
<map:parameter name="depth" value="1000"/>
<map:parameter name="use-request-parameters"
value="true"/>
</map:generate>
<map:transform src="stylesheets/dirzip.xsl"/>
<map:serialize type="zip"/>
</map:match>
================================================
dirzip.xsl is as follows:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:dir="http://apache.org/cocoon/directory/2.0"
xmlns:zip="http://apache.org/cocoon/zip-archive/1.0"
>
<xsl:param name="dirprefix"/>
<xsl:template match="/">
<zip:archive>
<xsl:for-each select="//dir:directory">
<xsl:variable name="directoryPath">
<xsl:for-each select="ancestor::*">
<xsl:value-of select="@name"/>
<xsl:text>/</xsl:text>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="dirName">
<xsl:value-of select="@name"/>
</xsl:variable>
<xsl:variable name="DirToBeZipped"><xsl:value-of
select="concat($directoryPath,$dirName,'/')"/></xsl:variable>
<zip:entry name="{dirName}" src="{$DirToBeZipped}"/>
<!-- add code to get the files in each directory -->
<xsl:for-each select="./dir:file">
<xsl:variable name="filePath">
<xsl:for-each select="ancestor::*">
<xsl:value-of select="@name"/>
<xsl:text>/</xsl:text>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="fileName">
<xsl:value-of select="@name"/>
</xsl:variable>
<xsl:variable name="fileToBeZipped"><xsl:value-of
select="concat($filePath,$fileName)"/></xsl:variable>
<zip:entry name="{$fileName}" src="{$fileToBeZipped}"/>
</xsl:for-each>
<!-- end of code to get files in each directory -->
</xsl:for-each>
</zip:archive>
</xsl:template>
</xsl:stylesheet>
Confidentiality Notice
The information contained in this electronic message and any attachments to this message are intended
for the exclusive use of the addressee(s) and may contain confidential or privileged information. If
you are not the intended recipient, please notify the sender at Wipro or Mailadmin@wipro.com immediately
and destroy all copies of this message and any attachments.
Re: Directory zip error
Posted by Joerg Heinicke <jo...@gmx.de>.
Indeed it's either a limitation of the zip archive serializer or could
be reached by a work around:
http://cocoon.apache.org/2.1/userdocs/serializers/ziparchive-serializer.html.
What does obviouly not work is the referencing of a directory in
zip:entry/@src. But from the example in the above docu it *might* work
to use "concat($filePath,$fileName)" (named as $fileToBeZipped in your
code below) as both zip:entry/@src and zip:entry/@name.
Joerg
PS: Is there any reason that there are always so many linebreaks in your
mails? Could you switch off HTML mails for the mailing lists?
On 17.05.2004 08:51, moinuddin.ahmed@wipro.com wrote:
> Hi,
> I am trying to zip a directory and all the content of the directory
>
>
> I have a directory structure as follows:
>
>
> C:\Directory
> |
> |-- dirA
> |--------FileA.text
> |--------FileB.text
> |-- dirB
> |--FileRootA.txt
> |--FileRootB.txt
>
>
> I have written an xsl to read this using Directory generator and zip the
> files and the directories recursively till n level..
> What I found, all the files at all the levels are getting zipped but not
> directory.
> For directories I get the following error:
>
>
> 'If I comment the zip entry for directories, files gets zipped
> correctly.
>
>
> "org.apache.cocoon.ProcessingException: Failed to execute pipeline.:
> java.lang.RuntimeException:
> org.apache.excalibur.source.SourceNotFoundException: file:/C:/directory/
> doesn't exist"
>
>
> Though the directory very much exists. I have tried hard coding and
> adding the same also, but no luck.
> I have the xsl written as below:
>
>
> Can some one please check out and let me know where I am going wrong, or
> is it that we can only zip files using Cocoon and not directories.
>
>
> Thanks in advance.
> Regards,
> Moin
>
>
> ========================
> Sitemap.xmap is as follows
>
> <map:match pattern="zipFolderActions">
>
> <map:generate type="directory" src="{request-param:zipFolders}">
> <map:parameter name="depth" value="1000"/>
> <map:parameter name="use-request-parameters"
> value="true"/>
> </map:generate>
> <map:transform src="stylesheets/dirzip.xsl"/>
> <map:serialize type="zip"/>
>
>
> </map:match>
> ================================================
>
>
> dirzip.xsl is as follows:
> <?xml version="1.0"?>
> <xsl:stylesheet version="1.0"
>
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> xmlns:dir="http://apache.org/cocoon/directory/2.0"
> xmlns:zip="http://apache.org/cocoon/zip-archive/1.0"
> >
>
>
> <xsl:param name="dirprefix"/>
>
> <xsl:template match="/">
> <zip:archive>
> <xsl:for-each select="//dir:directory">
> <xsl:variable name="directoryPath">
> <xsl:for-each select="ancestor::*">
> <xsl:value-of select="@name"/>
> <xsl:text>/</xsl:text>
> </xsl:for-each>
> </xsl:variable>
> <xsl:variable name="dirName">
> <xsl:value-of select="@name"/>
> </xsl:variable>
> <xsl:variable name="DirToBeZipped"><xsl:value-of
> select="concat($directoryPath,$dirName,'/')"/></xsl:variable>
> <zip:entry name="{dirName}" src="{$DirToBeZipped}"/>
> <!-- add code to get the files in each directory -->
> <xsl:for-each select="./dir:file">
> <xsl:variable name="filePath">
> <xsl:for-each select="ancestor::*">
> <xsl:value-of select="@name"/>
> <xsl:text>/</xsl:text>
> </xsl:for-each>
> </xsl:variable>
> <xsl:variable name="fileName">
> <xsl:value-of select="@name"/>
> </xsl:variable>
> <xsl:variable name="fileToBeZipped"><xsl:value-of
> select="concat($filePath,$fileName)"/></xsl:variable>
> <zip:entry name="{$fileName}" src="{$fileToBeZipped}"/>
> </xsl:for-each>
> <!-- end of code to get files in each directory -->
> </xsl:for-each>
> </zip:archive>
> </xsl:template>
> </xsl:stylesheet>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org