Changes

Jump to navigation Jump to search
2,464 bytes added ,  12:42, 29 July 2018
=Conventions=
All functions and errors in this module are assigned to the {{Code|<code><nowiki>http://basex.org/modules/fetch}} </nowiki></code> namespace, which is statically bound to the {{Code|fetch}} prefix.<br/>All errors are assigned URI arguments can point be URLs or point to local files. Relative file paths will be resolved against the {{Code|http://basex.org/errors}} namespace''current working directory'' (for more details, which is statically bound to have a look at the {{Code[[File Module#File Paths|bxerr}} prefixFile Module]]).
=Functions=
==fetch:binary==
 
{| width='100%'
|-
|-
| '''Summary'''
|Fetches the resource referred to by the given URI and returns it as [[Streaming Lazy Module|streamablelazy]] {{Code|xs:base64Binary}}item.
|-
| '''Errors'''
|{{Error|BXFE0001open|XQuery Errors#Functions Errors}} the URI could not be resolved, or the resource could not be retrieved.
|-
| '''Examples'''
|
* <code><nowiki>fetch:binary("http://images.trulia.com/blogimg/c/5/f/4/679932_1298401950553_o.jpg")</nowiki></code> returns the addressed image.
* <code><nowiki>streamlazy:materializecache(fetch:binary("http://en.wikipedia.org"))</nowiki></code> returns a materialized representation of enforces the streamable resultfetch operation (otherwise, it will be delayed until requested first).
|}
==fetch:text==
 
{| width='100%'
|-
| width='120' | '''Signatures'''
|{{Func|fetch:text|$uri as xs:string|xs:string}}<br/>{{Func|fetch:text|$uri as xs:string, $encoding as xs:string|xs:string}}<br/>{{Func|fetch:text|$uri as xs:string, $encoding as xs:string, $fallback as xs:boolean|xs:string}}<br/>
|-
| '''Summary'''
|Fetches the resource referred to by the given URI {{Code|$uri}} and returns it as [[Streaming Lazy Module|streamablelazy]] {{Code|xs:string}}item:* The UTF-8 default encoding can be overwritten with the optional {{Code|$encoding}} argument.* By default, invalid characters will be rejected. If {{Code|$fallback}} is set to true, these characters will be replaced with the Unicode replacement character <code>FFFD</code> (&#xFFFD;).
|-
| '''Errors'''
|{{Error|BXFE0001open|XQuery Errors#Functions Errors}} the URI could not be resolved, or the resource could not be retrieved. Invalid XML characters will be ignored if the <code>[[Options#CHECKSTRINGS|CHECKSTRINGS]]</code> option is turned off.<br/>{{Error|BXFE0002encoding|XQuery Errors#Functions Errors}} the specified encoding is not supported, or unknown.
|-
| '''Examples'''
|
* <code><nowiki>fetch:text("http://en.wikipedia.org")</nowiki></code> returns a string representation of the English Wikipedia main HTML page.
* <code><nowiki>streamfetch:text("http://www.bbc.com","US-ASCII",true())</nowiki></code> returns the BBC homepage in US-ASCII with all non-US-ASCII characters replaced with &#xFFFD;.* <code><nowiki>lazy:materializecache(fetch:text("http://en.wikipedia.org"))</nowiki></code> returns a materialized representation of enforces the streamable resultfetch operation (otherwise, it will be delayed until requested first).
|}
|-
| width='120' | '''Signatures'''
|{{Func|fetch:xml|$uri as xs:string|document-node()}}<br/>{{Func|fetch:xml|$uri as xs:string, $options as itemmap(*)?|document-node()}}
|-
| '''Summary'''
|Fetches the resource referred to by the given {{Code|$uri}} and returns it as an XML documentnode.<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. Options can be specified either...<br />* as children of an |-| '''Errors'''|{{CodeError|open|<options/>#Errors}} elementthe URI could not be resolved, e.gor the resource could not be retrieved.|-| '''Examples'''|* Retrieve an XML representation of the English Wikipedia main HTML page, chop all whitespace nodes:<pre class="brush:xquery">fetch:xml("http://en.wikipedia.org">, map { 'chop': true() })<options/pre> * Return a document located in the current base directory:<chop valuepre class='false'/"brush:xquery"></options>fetch:xml(file:base-dir() || "example.xml")
</pre>
* or Return a web page as mapXML, which contains all key/value pairspreserve namespaces:
<pre class="brush:xquery">
fetch:xml( 'http://basex.org/', map { "chop" 'parser': 'html', 'htmlparser': map { 'nons': false() } })
</pre>
|}
 
==fetch:xml-binary==
 
{| width='100%'
|-
| width='120' | '''Signatures'''
|{{Func|fetch:xml-binary|$data as xs:base64Binary|document-node()}}<br/>{{Func|fetch:xml-binary|$data as xs:base64Binary, $options as map(*)?|document-node()}}
|-
| '''ErrorsSummary'''|Parses binary {{ErrorCode|BXFE0001|XQuery Errors#Functions Errors$data}} and returns it as XML document node.<br/>In contrast to fn:parse-xml, which expects an XQuery string, the URI could not input of this function can be resolved, arbitrarily encoded. The encoding will be derived from the XML declaration or (in case of UTF16 or UTF32) from the resource could not first bytes of the input.<br/>The {{Code|$options}} argument can be retrievedused to change the parsing behavior. Allowed options are all [[Options#Parsing|parsing]] and [[Options#XML Parsing|XML parsing]] options in lower case.
|-
| '''Examples'''
|
* Retrieves file input as binary data and parses it as XML:<codepre class="brush:xquery">fetch:xml-binary(file:read-binary('doc.xml'))<nowiki/pre>* 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 class="brush:xquery">fetch:xml-binary(convert:string-to-base64( "http:<?xml version='1.0' encoding='CP1252'?><xml>touché</xml>", "CP1252"))</enpre>* Encodes a string as UTF16 and parses it as XML.wikipedia.orgThe document will be correctly decoded, as the first bytes of the data indicate that the input must be UTF16:<pre class="brush:xquery">fetch:xml-binary(convert:string-to-base64(")<xml/nowiki>", "UTF16"))</codepre> returns an XML representation of the English Wikipedia main HTML page.
|}
==fetch:content-type==
 
{| width='100%'
|-
|-
| '''Errors'''
|{{Error|BXFE0001open|XQuery Errors#Functions Errors}} the URI could not be resolved, or the resource could not be retrieved.
|-
| '''Examples'''
|Description
|-
|{{Code|BXFE0001encoding}}|The specified encoding is not supported, or unknown.|-|{{Code|open}}
|The URI could not be resolved, or the resource could not be retrieved.
|-
|{{Code|BXFE0002}}
|The specified encoding is not supported, or unknown.
|}
=Changelog=
 
;Version 9.0
 
* Added: [[#fetch:xml-binary|fetch:xml-binary]]
* Updated: error codes updated; errors now use the module namespace
 
;Version 8.5
 
* Updated: [[#fetch:text|fetch:text]]: <code>$fallback</code> argument added.
;Version 8.0
 
* Added: [[#fetch:xml|fetch:xml]]
The module was introduced with Version 7.6.
 
[[Category:XQuery]]
Bureaucrats, editor, reviewer, Administrators
13,550

edits

Navigation menu