ZIP Module
Jump to navigation
Jump to search
This module contains XQuery Functions to handle ZIP archives. The contents of ZIP files can be extracted and listed, and new archives can be created. All functions are preceded by the zip:
prefix, which is linked to the http://expath.org/ns/zip
namespace. The module is based on the EXPath ZIP Module.
Contents
Example
zip:binary-entry
Signatures | zip:binary-entry($uri as xs:string, $path as xs:string) as xs:base64Binary
|
Summary | Extracts the binary file at $path within the ZIP file located at $uri and returns it as an xs:base64Binary item.
|
Errors | FOZP0001 is raised if the specified path does not exist. FOZP0003 is raised if the operation fails for some other reason. |
zip:text-entry
Signatures | zip:text-entry($uri as xs:string, $path as xs:string) as xs:string zip:text-entry($uri as xs:string, $path as xs:string, $encoding as xs:string) as xs:string
|
Summary | Extracts the text file at $path within the ZIP file located at $uri and returns it as an xs:string item.An optional encoding can be specified via $encoding .
|
Errors | FOZP0001 is raised if the specified path does not exist. FOZP0003 is raised if the operation fails for some other reason. |
zip:xml-entry
Signatures | zip:xml-entry($uri as xs:string, $path as xs:string) as document-node() |
Summary | Extracts the XML file at $path within the ZIP file located at $uri and returns it as a document node.
|
Errors | FODC0006 is raised if the addressed file is not well-formed. FOZP0001 is raised if the specified path does not exist. FOZP0003 is raised if the operation fails for some other reason. |
zip:html-entry
Signatures | zip:html-entry($uri as xs:string, $path as xs:string) as document-node() |
Summary | Extracts the HTML file at $path within the ZIP file located at $uri and returns it as a document node. The file is converted to XML first if Tagsoup is found in the classpath.
|
Errors | FODC0006 is raised if the addressed file is not well-formed, or cannot be converted to correct XML. FOZP0001 is raised if the specified path does not exist. FOZP0003 is raised if the operation fails for some other reason. |
zip:entries
Signatures | zip:entries($uri as xs:string) as element(zip:file) |
Summary | Generates an ZIP XML Representation of the hierarchical structure of the ZIP file located at $uri and returns it as an element node. The file contents are not returned by this function.
|
Errors | FOZP0001 is raised if the specified path does not exist. FOZP0003 is raised if the operation fails for some other reason. |
Examples |
|
zip:zip-file
Signatures | zip:zip-file($zip as element(zip:file)) as empty-sequence() |
Summary | Creates a new ZIP archive with the characteristics described by $zip , the ZIP XML Representation.
|
Errors | FOZP0001 is raised if an addressed file does not exist. FOZP0002 is raised if entries in the ZIP archive description are unknown, missing, or invalid. FOZP0003 is raised if the operation fails for some other reason. Serialization Errors are raised if an inlined XML fragment cannot be successfully serialized. |
Examples |
zip:zip-file( <file xmlns="http://expath.org/ns/zip" href="archive.zip"> <entry src="file.txt"/> </file>)
zip:zip-file( <file xmlns="http://expath.org/ns/zip" href="archive.zip"> <entry name="readme">thanks</entry> </file>) |
zip:update-entries
Signatures | zip:update-entries($zip as element(zip:file), $output as xs:string) as empty-sequence() |
Summary | Updates an existing ZIP archive or creates a modifed copy, based on the characteristics described by $zip , the ZIP XML Representation. The $output argument is the URI where the modified ZIP file is copied to.
|
Errors | FOZP0001 is raised if an addressed file does not exist. FOZP0002 is raised if entries in the ZIP archive description are unknown, missing, or invalid. FOZP0003 is raised if the operation fails for some other reason. Serialization Errors are raised if an inlined XML fragment cannot be successfully serialized. |
Examples |
zip:update-entries(zip:entries('archive.zip'), 'new.zip')
declare namespace zip = "http://expath.org/ns/zip"; copy $doc := zip:entries('archive.zip') modify delete node $doc//zip:entry[ends-with(lower-case(@name), '.png')] return zip:update-entries($doc, 'archive.zip') |