The xmerl_xpath module handles the entire XPath 1.0 spec
XPath expressions typically occurs in XML attributes and are used to addres
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')")).
docEntity() = xmlElement() | xmlAttribute() | xmlText() | xmlPI() | xmlComment()
nodeEntity() = xmlElement() | xmlAttribute() | xmlText() | xmlPI() | xmlNamespace() | xmlDocument()
option_list()
{namespace, #xmlNamespace}
{namespace, Nodes}
string(Str, Doc) -> docEntity()
Equivalent to string(Str, Doc, []).
string(Str, Doc, Options) -> docEntity()
Equivalent to string(Str, Doc, [], Doc, Options).
string(Str, Node, Parents, Doc, Options) -> docEntity()
Types:
Str = xPathString()
Node = nodeEntity()
Parents = parentList()
Doc = nodeEntity()
Options = option_list()