Loading TOC...

xdmp:zip-get

xdmp: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 iconStack Overflow: Get the most useful answers to questions from the MarkLogic community, or ask your own question.