View Source xmerl_xpath (xmerl v2.1)

Xpath 1.0 search implementation.

The xmerl_xpath module handles the entire XPath 1.0 spec. XPath expressions typically occur in XML attributes and are used to address parts of an XML document. The grammar is defined in xmerl_xpath_parse.yrl. The core functions are defined in xmerl_xpath_pred.erl.

Some useful shell commands for debugging the XPath parser

 c(xmerl_xpath_scan).
 yecc:yecc("xmerl_xpath_parse.yrl", "xmerl_xpath_parse", true, []).
 c(xmerl_xpath_parse).

 xmerl_xpath_parse:parse(xmerl_xpath_scan:tokens("position() > -1")).
 xmerl_xpath_parse:parse(xmerl_xpath_scan:tokens("5 * 6 div 2")).
 xmerl_xpath_parse:parse(xmerl_xpath_scan:tokens("5 + 6 mod 2")).
 xmerl_xpath_parse:parse(xmerl_xpath_scan:tokens("5 * 6")).
 xmerl_xpath_parse:parse(xmerl_xpath_scan:tokens("-----6")).
 xmerl_xpath_parse:parse(xmerl_xpath_scan:tokens("parent::node()")).
 xmerl_xpath_parse:parse(xmerl_xpath_scan:tokens("descendant-or-self::node()")).
 xmerl_xpath_parse:parse(xmerl_xpath_scan:tokens("parent::processing-instruction('foo')")).

Summary

Types

Options to customize the behaviour of the XPath scanner.

Types

Link to this type

nodeEntity()

View Source (not exported)
Link to this type

option_list()

View Source (not exported)
-type option_list() :: [{atom(), term()}].

Options to customize the behaviour of the XPath scanner.

Possible options are:

{namespace, #xmlNamespace}
Set namespace nodes, from XmlNamspace, in xmlContext
{namespace, Nodes}
Set namespace nodes in xmlContext.
Link to this type

parentList()

View Source (not exported)
-type parentList() :: [{atom(), integer()}].
Link to this type

xPathString()

View Source (not exported)
-type xPathString() :: string().

Functions

-spec string(String, Doc) -> _ when String :: xPathString(), Doc :: nodeEntity().

Equivalent to string(String, Doc, [], Doc, []).

Link to this function

string(String, Doc, Options)

View Source
-spec string(String, Doc, Options) -> _
                when String :: xPathString(), Doc :: nodeEntity(), Options :: option_list().

Equivalent to string(String, Doc, [], Doc, Options).

Link to this function

string(String, Node, Parents, Doc, Options)

View Source
-spec string(String, Node, Parents, Doc, Options) -> [nodeEntity()] | Scalar
                when
                    String :: xPathString(),
                    Node :: nodeEntity(),
                    Parents :: parentList(),
                    Doc :: nodeEntity(),
                    Options :: option_list(),
                    Scalar :: #xmlObj{type :: term(), value :: term()}.

Extract nodes from a parsed XML tree.

Extracts the nodes from the parsed XML tree according the XPath String.

Scalar is an #xmlObj{} record record with the fields type and value, where #xmlObj.type is boolean | number | string.