Changes

Jump to navigation Jump to search
693 bytes removed ,  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>
|}
|
* <code><nowiki>fetch:content-type("http://docs.basex.org/skins/vector/images/wiki.png")</nowiki></code> returns {{Code|image/png}}.
|}
 
==fetch:doc==
 
{{Mark|Introduced with Version 9.3.}}
 
{| width='100%'
|-
| width='120' | '''Signatures'''
|{{Func|fetch:doc|$uri as xs:string|document-node()}}
|-
| '''Summary'''
|Retrieves the document from the specified {{Code|$uri}} and returns it as document node.<br/>The only difference to <code>fn:doc</code> is that documents in databases will be ignored. As a consequence, the function call will never lead to [[Transaction_Management|database locks]].
|}
 
==fetch:collection==
 
{{Mark|Introduced with Version 9.3.}}
 
{| width='100%'
|-
| width='120' | '''Signatures'''
|{{Func|fetch:collection|$uri as xs:string|document-node()*}}
|-
| '''Summary'''
|Retrieves all documents from the specified {{Code|$uri}} and returns a sequence of document nodes.<br/>The only difference to <code>fn:collection</code> is that documents in databases will be ignored. As a consequence, the function call will never lead to [[Transaction_Management|database locks]].
|}
=Changelog=
 
;Version 9.3
 
* Added: [[#fetch:doc|fetch:doc]], [[#fetch:collection|fetch:collection]]
;Version 9.0
Bureaucrats, editor, reviewer, Administrators
13,550

edits

Navigation menu