MarkLogic 9 Product Documentation
xdmp:zip-getxdmp:zip-get(
$zipfile as binary(),
$name as xs:string,
[$options as (element()|map:map)?]
) as node()+
Summary
Get a named file from a zip document. Unzips and returns the file in
memory as a document node (for XML and JSON formats), a text node (for text formats),
or a binary node (for binary).
The format is determined either
by the mimetype from the file name or by the format
option.
Parameters |
zipfile |
The zip file.
|
name |
The path to the zip file as shown in the zip manifest.
|
options |
The options node
for getting this zip file.
The default value is (). The node for the xdmp:zip-get
options must be in the xdmp:zip-get namespace.
The xdmp:zip-get
options include:
<default-namespace>
- (XML only) The namespace to use if there is no namespace at the root node of
the document. The default value is "".
<repair>
- A value of
full specifies that malformed XML
content be repaired. A value of none specifies that
malformed XML content is rejected. If no repair option is explicitly specified,
the default is implicitly specified by the
version of XQuery of the caller.
In XQuery 1.0 and 1.0-ml the default
is none . In XQuery 0.9-ml the
default is full .
This option has no effect on binary, text or JSON documents.
<format>
- A value of
text specifies to get the document as a
text document, regardless of the URI specified. A value of
binary specifies to get the document as a binary
document, regardless of the URI specified. A value of xml
specifies to get the document as an XML document, regardless of the
URI specified. A value of json specifies to get the document
as a JSON document, regardless of the URI specified.
<default-language>
- (XML only) The language to specify in an
xml:lang attribute on the
root element node if the root element node does not already have an
xml:lang attribute. If
default-language
is
not specified, then nothing is added to the root element node.
<encoding>
- Specifies the encoding to use when reading the document into MarkLogic
Server. The value must either be "auto" or match an encoding name
according to the Unicode Charset Alias Matching rules
(http://www.unicode.org/reports/tr22/#Charset_Alias_Matching).
When the value is "auto", MarkLogic guesses the encoding from
the document content. For a list of character set encodings by language, see
Collations and Character Sets By Language in the Search Developer's Guide.
If you do not set this option, MarkLogic uses the encoding
specified in the HTTP headers, if present. If you do not set this option
and no encoding is available from HTTP headers, the encoding
defaults to UTF-8. For more details, see
Character Encoding in the Search Developer's Guide.
|
Usage Notes
The name of the document you are extracting will determine the default
format in which the document is extracted, based on the mimetype settings.
For example, if you are extracting a document with the name
myDocument.xmlfile
, it will by default extract that document
as a text document (because it is an unknown mimetype, and unknown
mimetypes default to text format). If you know this is an XML document,
then specify a format
of xml
in the
options
node
(see the second example below).
Example
xdmp:zip-get(doc("/zip/tmp.zip"), "files/myxmlfile.xml")
=> the "files/myxmlfile.xml" node from the "/zip/tmp.zip" zip file
Example
xdmp:zip-get(doc("/zip/tmp.zip"), "myDocument.xmlfile",
<options xmlns="xdmp:zip-get">
<format>xml</format>
</options>)
=> the "myDocument.xmlfile" node from the "/zip/tmp.zip"
zip file, as an XML document
Example
(: unzip all of the files in the zip archive :)
xquery version "1.0-ml";
declare namespace zip="xdmp:zip";
for $x in xdmp:zip-manifest(doc("/zip/tmp.zip"))//zip:part/text()
return
xdmp:zip-get(doc("/zip/tmp.zip"), $x)
=> a sequence of all of the unzipped nodes in the "/zip/tmp.zip" zip file
Stack Overflow: Get the most useful answers to questions from the MarkLogic community, or ask your own question.