Changes

Jump to navigation Jump to search
360 bytes added ,  16:21, 27 February 2020
no edit summary
This [[Module Library|XQuery Module]] provides simple functions to fetch the content of resources identified by URIs. Resources can be stored locally or remotely and e.g. use the {{Code|file://}} or {{Code|http://}} scheme. If more control over HTTP requests is required, the [[HTTP Client Module]] can be used. With the [[HTML Module]], retrieved HTML documents can be converted to XML.
=Conventions=
|-
| '''Summary'''
|Fetches the resource referred to by the given {{Code|$uri}} and returns it as document node.<br/>In contrast to <code>fn:doc</code>, each function call returns a different document node. As a consequence, document instances created by this function will not be kept in memory until the end of query evaluation.<br/>The {{Code|$options}} argument can be used to change the parsing behavior. Allowed options are all [[Options#Parsing|parsing]] and [[Options#XML Parsing|XML parsing]] options in lower case.<br/>The function is different to <code>fn:doc</code> in various aspects:* As it is non-deterministic, a new document node will be created by each call of this function.* A document created by this function will be garbage-collected as soon as it is not referenced anymore.* URIs will not be resolved against existing databases. As a result, it will not trigger any locks (see [[Transaction Management#Limitations|limitations of database locking]] for more details).
|-
| '''Errors'''
|
* Retrieve an XML representation of the English Wikipedia main HTML page, chop all whitespace nodes:
<pre classsyntaxhighlight lang="brush:xquery">
fetch:xml("http://en.wikipedia.org", map { 'chop': true() })
</presyntaxhighlight>
* Return a document located in the current base directory:
<pre classsyntaxhighlight lang="brush:xquery">
fetch:xml(file:base-dir() || "example.xml")
</presyntaxhighlight>
* Return a web page as XML, preserve namespaces:
<pre classsyntaxhighlight lang="brush:xquery">
fetch:xml(
'http://basex.org/',
}
)
</presyntaxhighlight>
|}
|
* Retrieves file input as binary data and parses it as XML:
<pre classsyntaxhighlight lang="brush:xquery">
fetch:xml-binary(file:read-binary('doc.xml'))
</presyntaxhighlight>
* Encodes a string as CP1252 and parses it as XML. The input and the string {{Code|touché}} will be correctly decoded because of the XML declaration:
<pre classsyntaxhighlight lang="brush:xquery">
fetch:xml-binary(convert:string-to-base64(
"<?xml version='1.0' encoding='CP1252'?><xml>touché</xml>",
"CP1252"
))
</presyntaxhighlight>
* Encodes a string as UTF16 and parses it as XML. The document will be correctly decoded, as the first bytes of the data indicate that the input must be UTF16:
<pre classsyntaxhighlight lang="brush:xquery">
fetch:xml-binary(convert:string-to-base64("<xml/>", "UTF16"))
</presyntaxhighlight>
|}
Bureaucrats, editor, reviewer, Administrators
13,550

edits

Navigation menu