Changes

Jump to navigation Jump to search
794 bytes added ,  13:58, 3 April 2020
no edit summary
This [[Module Library|XQuery Module]] provides functions for converting HTML to XML. The input Conversion will only be converted take place if [http://home.ccil.org/~cowan/XML/tagsoup/ TagSoup] is included in the classpath (see [[Parsers#HTML Parser|HTML Parsing]] for more details).
=Conventions=
All functions and errors in this module are assigned to the {{Code|<code><nowiki>http://basex.org/modules/html}} </nowiki></code> namespace, which is statically bound to the {{Code|html}} prefix.<br/>All errors are assigned to the {{Code|http://basex.org/errors}} namespace, which is statically bound to the {{Code|bxerr}} prefix.
=Functions=
{| width='100%'
|-
| width='90120' | '''Signatures'''
|{{Code|'''html:parser'''() as xs:string}}<br />
|-
==html:parse==
 
{| width='100%'
|-
| width='90120' | '''Signatures'''|{{Func|html:parse|$input as xs:anyAtomicType|document-node()}}<br />{{Func|html:parse|$input as xs:anyAtomicType, $options as itemmap(*)?|document-node()}}<br />
|-
| '''Summary'''
|Converts the HTML document specified by {{Code|$input}} to XML, and returns a document node. :<br/>* The input may either be a string or a binary item (xs:hexBinary, xs:base64Binary). * If the input is passed on in its binary representation, the HTML parser will try to automatically choose the correct encoding.<br/> The {{Code|$options}} argument can be used to set [[Parsers#TagSoup Options|TagSoup optionsOptions]]. It can be specified<br />* as children of an {{Code|<html:options/>}} element; e.g.:<pre class="brush:xml"><html:options> <html:key1 value='value1'/> ...</html:options></pre>* as map, which contains all key/value pairs:<pre class="brush:xml">map { "key1" := "value1", ... }</pre>
|-
| '''Errors'''
|{{Error|BXHL0001parse|#Errors}} the input cannot be converted to XML.|} ==html:doc== {{Mark|Introduced with BaseX 9.4:}} {| width='100%'
|-
| width='120' | '''ExamplesSignatures'''|* {{CodeFunc|html:parsedoc|$uri as xs:string?|document-node(")?}}<br />{{Func|html>:doc|$uri as xs:string?, $options as map(*)?|document-node()?}}<br /html>")|-| '''Summary'''|Fetches the HTML document referred to by the given {{Code|$uri}} , converts it to XML and returns a document node. The {{Code|$options}} argument can be used to set [[Parsers#Options|TagSoup Options]].|-| '''Errors'''|{{Error|parse|#Errors}} the input cannot be converted to XML.|} =Examples= ===Basic Example=== The following query converts the specified string to an XML document node. ;Query:<syntaxhighlight lang="xquery">html:parse("<html>")</syntaxhighlight> ;Result:<syntaxhighlight lang="xml"><htmlxmlns="http://www.w3.org/1999/xhtml"/>}}* <code/syntaxhighlight===Specifying Options=== The next query creates an XML document with namespaces: ;Query:<nowikisyntaxhighlight lang="xquery">html:parse("<a href='ok.html'/>", map { 'nons' := truefalse() })</nowikisyntaxhighlight></code> creates an XML document without namespaces. It returns ;Result:<pre classsyntaxhighlight lang="brush:xml"><htmlxmlns="http://www.w3.org/1999/xhtml">
<body>
<a shape="rect" href="ok.html"/>
</body>
</html>
</presyntaxhighlight>* ===Parsing Binary Input=== If the input encoding is unknown, the data to be processed can be passed on in its binary representation.The HTML parser will automatically try to detect the correct encoding: ;Query:<code><nowikisyntaxhighlight lang="xquery">html:parse(fetch:content-binary("httphttps://en.wikipedia.org"))</nowikisyntaxhighlight> ;Result:<syntaxhighlight lang="xml"><html xmlns="http://www.w3.org/1999/codexhtml" class="client-nojs" dir="ltr" lang="en"> returns an XML representation of <head> <title>Wikipedia, the English Wikipedia main pagefree encyclopedia</title> <meta charset="UTF-8"/> .. The input is passed on its binary representation such that the HTML parser can automatically detect the correct encoding.|}</syntaxhighlight>
=Errors=
{| width='100%' class="wikitable" width="100%"! width="5%110"|Code! width="95%"|Description
|-
|{{Code|BXHL0001parse}}
|The input cannot be converted to XML.
|}
=Changelog=
The module was introduced with ;Version 79.5.14 * Added: [[#html:doc|html:doc]] ;Version 9.0 * Updated: error codes updated; errors now use the module namespace
[[Category:XQuery]]The module was introduced with Version 7.6.
Bureaucrats, editor, reviewer, Administrators
13,550

edits

Navigation menu