<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html xmlns:fn="http://www.w3.org/2005/02/xpath-functions"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel="stylesheet" href="../../../../doc/otp_doc.css" type="text/css"> <title>Erlang -- xmerl_xpath</title> </head> <body bgcolor="white" text="#000000" link="#0000ff" vlink="#ff00ff" alink="#ff0000"><div id="container"> <script id="js" type="text/javascript" language="JavaScript" src="../../../../doc/js/flipmenu/flipmenu.js"></script><script id="js2" type="text/javascript" src="../../../../doc/js/erlresolvelinks.js"></script><script language="JavaScript" type="text/javascript"> <!-- function getWinHeight() { var myHeight = 0; if( typeof( window.innerHeight ) == 'number' ) { //Non-IE myHeight = window.innerHeight; } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) { //IE 6+ in 'standards compliant mode' myHeight = document.documentElement.clientHeight; } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) { //IE 4 compatible myHeight = document.body.clientHeight; } return myHeight; } function setscrollpos() { var objf=document.getElementById('loadscrollpos'); document.getElementById("leftnav").scrollTop = objf.offsetTop - getWinHeight()/2; } function addEvent(obj, evType, fn){ if (obj.addEventListener){ obj.addEventListener(evType, fn, true); return true; } else if (obj.attachEvent){ var r = obj.attachEvent("on"+evType, fn); return r; } else { return false; } } addEvent(window, 'load', setscrollpos); //--></script><div id="leftnav"><div class="innertube"> <img alt="Erlang logo" src="../../../../doc/erlang-logo.png"><br><small><a href="users_guide.html">User's Guide</a><br><a href="index.html">Reference Manual</a><br><a href="release_notes.html">Release Notes</a><br><a href="../pdf/xmerl-1.2.4.pdf">PDF</a><br><a href="../../../../doc/index.html">Top</a></small><p><strong>xmerl</strong><br><strong>Reference Manual</strong><br><small>Version 1.2.4</small></p> <br><a href="javascript:openAllFlips()">Expand All</a><br><a href="javascript:closeAllFlips()">Contract All</a><p><small><strong>Table of Contents</strong></small></p> <ul class="flipMenu"> <li id="no" title="xmerl_scan " expanded="false">xmerl_scan<ul> <li><a href="xmerl_scan.html"> Top of manual page </a></li> <li title="accumulate_whitespace-4"><a href="xmerl_scan.html#accumulate_whitespace-4">accumulate_whitespace/4</a></li> <li title="cont_state-1"><a href="xmerl_scan.html#cont_state-1">cont_state/1</a></li> <li title="cont_state-2"><a href="xmerl_scan.html#cont_state-2">cont_state/2</a></li> <li title="event_state-1"><a href="xmerl_scan.html#event_state-1">event_state/1</a></li> <li title="event_state-2"><a href="xmerl_scan.html#event_state-2">event_state/2</a></li> <li title="fetch_state-1"><a href="xmerl_scan.html#fetch_state-1">fetch_state/1</a></li> <li title="fetch_state-2"><a href="xmerl_scan.html#fetch_state-2">fetch_state/2</a></li> <li title="file-1"><a href="xmerl_scan.html#file-1">file/1</a></li> <li title="file-2"><a href="xmerl_scan.html#file-2">file/2</a></li> <li title="hook_state-1"><a href="xmerl_scan.html#hook_state-1">hook_state/1</a></li> <li title="hook_state-2"><a href="xmerl_scan.html#hook_state-2">hook_state/2</a></li> <li title="rules_state-1"><a href="xmerl_scan.html#rules_state-1">rules_state/1</a></li> <li title="rules_state-2"><a href="xmerl_scan.html#rules_state-2">rules_state/2</a></li> <li title="string-1"><a href="xmerl_scan.html#string-1">string/1</a></li> <li title="string-2"><a href="xmerl_scan.html#string-2">string/2</a></li> <li title="user_state-1"><a href="xmerl_scan.html#user_state-1">user_state/1</a></li> <li title="user_state-2"><a href="xmerl_scan.html#user_state-2">user_state/2</a></li> </ul> </li> <li id="no" title="xmerl " expanded="false">xmerl<ul> <li><a href="xmerl.html"> Top of manual page </a></li> <li title="callbacks-1"><a href="xmerl.html#callbacks-1">callbacks/1</a></li> <li title="export-2"><a href="xmerl.html#export-2">export/2</a></li> <li title="export-3"><a href="xmerl.html#export-3">export/3</a></li> <li title="export_content-2"><a href="xmerl.html#export_content-2">export_content/2</a></li> <li title="export_element-2"><a href="xmerl.html#export_element-2">export_element/2</a></li> <li title="export_element-3"><a href="xmerl.html#export_element-3">export_element/3</a></li> <li title="export_simple-2"><a href="xmerl.html#export_simple-2">export_simple/2</a></li> <li title="export_simple-3"><a href="xmerl.html#export_simple-3">export_simple/3</a></li> <li title="export_simple_content-2"><a href="xmerl.html#export_simple_content-2">export_simple_content/2</a></li> <li title="export_simple_element-2"><a href="xmerl.html#export_simple_element-2">export_simple_element/2</a></li> </ul> </li> <li id="no" title="xmerl_xs " expanded="false">xmerl_xs<ul> <li><a href="xmerl_xs.html"> Top of manual page </a></li> <li title="built_in_rules-2"><a href="xmerl_xs.html#built_in_rules-2">built_in_rules/2</a></li> <li title="select-2"><a href="xmerl_xs.html#select-2">select/2</a></li> <li title="value_of-1"><a href="xmerl_xs.html#value_of-1">value_of/1</a></li> <li title="xslapply-2"><a href="xmerl_xs.html#xslapply-2">xslapply/2</a></li> </ul> </li> <li id="no" title="xmerl_eventp " expanded="false">xmerl_eventp<ul> <li><a href="xmerl_eventp.html"> Top of manual page </a></li> <li title="file_sax-4"><a href="xmerl_eventp.html#file_sax-4">file_sax/4</a></li> <li title="stream-2"><a href="xmerl_eventp.html#stream-2">stream/2</a></li> <li title="stream_sax-4"><a href="xmerl_eventp.html#stream_sax-4">stream_sax/4</a></li> <li title="string_sax-4"><a href="xmerl_eventp.html#string_sax-4">string_sax/4</a></li> </ul> </li> <li id="loadscrollpos" title="xmerl_xpath " expanded="true">xmerl_xpath<ul> <li><a href="xmerl_xpath.html"> Top of manual page </a></li> <li title="string-2"><a href="xmerl_xpath.html#string-2">string/2</a></li> <li title="string-3"><a href="xmerl_xpath.html#string-3">string/3</a></li> <li title="string-5"><a href="xmerl_xpath.html#string-5">string/5</a></li> </ul> </li> <li id="no" title="xmerl_xsd " expanded="false">xmerl_xsd<ul> <li><a href="xmerl_xsd.html"> Top of manual page </a></li> <li title="file2state-1"><a href="xmerl_xsd.html#file2state-1">file2state/1</a></li> <li title="format_error-1"><a href="xmerl_xsd.html#format_error-1">format_error/1</a></li> <li title="process_schema-1"><a href="xmerl_xsd.html#process_schema-1">process_schema/1</a></li> <li title="process_schema-2"><a href="xmerl_xsd.html#process_schema-2">process_schema/2</a></li> <li title="process_schemas-1"><a href="xmerl_xsd.html#process_schemas-1">process_schemas/1</a></li> <li title="process_schemas-2"><a href="xmerl_xsd.html#process_schemas-2">process_schemas/2</a></li> <li title="process_validate-2"><a href="xmerl_xsd.html#process_validate-2">process_validate/2</a></li> <li title="process_validate-3"><a href="xmerl_xsd.html#process_validate-3">process_validate/3</a></li> <li title="state2file-1"><a href="xmerl_xsd.html#state2file-1">state2file/1</a></li> <li title="state2file-2"><a href="xmerl_xsd.html#state2file-2">state2file/2</a></li> <li title="validate-2"><a href="xmerl_xsd.html#validate-2">validate/2</a></li> <li title="validate-3"><a href="xmerl_xsd.html#validate-3">validate/3</a></li> </ul> </li> <li id="no" title="xmerl_sax_parser " expanded="false">xmerl_sax_parser<ul> <li><a href="xmerl_sax_parser.html"> Top of manual page </a></li> <li title="file-2"><a href="xmerl_sax_parser.html#file-2">file/2</a></li> <li title="stream-2"><a href="xmerl_sax_parser.html#stream-2">stream/2</a></li> <li title="ContinuationFun-1"><a href="xmerl_sax_parser.html#ContinuationFun-1">ContinuationFun/1</a></li> <li title="EventFun-3"><a href="xmerl_sax_parser.html#EventFun-3">EventFun/3</a></li> </ul> </li> </ul> </div></div> <div id="content"> <div class="innertube"> <!-- refpage --><center><h1>xmerl_xpath</h1></center> <h3>MODULE</h3> <div class="REFBODY">xmerl_xpath</div> <h3>MODULE SUMMARY</h3> <div class="REFBODY">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.</div> <h3>DESCRIPTION</h3> <div class="REFBODY"><p> <p>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 <span class="code">xmerl_xpath_parse.yrl</span>. The core functions are defined in <span class="code">xmerl_xpath_pred.erl</span>.</p> <p>Some useful shell commands for debugging the XPath parser</p> <div class="example"><pre> 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')")). </pre></div> </p></div> <h3><a name="id2262859">DATA TYPES</a></h3> <div class="REFBODY"> <a name="types"></a> <dl> <dt><strong><span class="code">docEntity() = xmlElement() | xmlAttribute() | xmlText() | xmlPI() | xmlComment()</span></strong></dt> <dd> <a name="type-docEntity"></a> </dd> <dt><strong><span class="code">nodeEntity() = xmlElement() | xmlAttribute() | xmlText() | xmlPI() | xmlNamespace() | xmlDocument()</span></strong></dt> <dd> <a name="type-nodeEntity"></a> </dd> <dt><strong><span class="code">option_list()</span></strong></dt> <dd> <a name="type-option_list"></a> <p>Options allows to customize the behaviour of the XPath scanner. </p> Possible options are: <dl> <dt><strong><span class="code">{namespace, #xmlNamespace}</span></strong></dt> <dd><p>Set namespace nodes, from XmlNamspace, in xmlContext</p></dd> <dt><strong><span class="code">{namespace, Nodes}</span></strong></dt> <dd><p>Set namespace nodes in xmlContext.</p></dd> </dl> </dd> </dl> </div> <h3>EXPORTS</h3> <p><a name="string-2"><span class="bold_code">string(Str, Doc) -> [docEntity()] | Scalar</span></a><br></p> <div class="REFBODY"><p><a name="string-2"></a> <p>Equivalent to <span class="bold_code"><a href="#string-3">string(Str, Doc, [])</a></span>.</p> </p></div> <p><a name="string-3"><span class="bold_code">string(Str, Doc, Options) -> [docEntity()] | Scalar</span></a><br></p> <div class="REFBODY"><p><a name="string-3"></a> <p>Equivalent to <span class="bold_code"><a href="#string-5">string(Str, Doc, [], Doc, Options)</a></span>.</p> </p></div> <p><a name="string-5"><span class="bold_code">string(Str, Node, Parents, Doc, Options) -> [docEntity()] | Scalar</span></a><br></p> <div class="REFBODY"> <p>Types:</p> <div class="REFTYPES"> <span class="bold_code">Str = xPathString()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Node = nodeEntity()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Parents = parentList()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Doc = nodeEntity()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Options = option_list()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Scalar = xmlObj</span><br> </div> </div> <div class="REFBODY"><p><a name="string-5"></a> <p>Extracts the nodes from the parsed XML tree according to XPath. xmlObj is a record with fields type and value, where type is boolean | number | string</p> </p></div> </div> <div class="footer"> <hr> <p>Copyright © 2004-2010 Ericsson AB. All Rights Reserved.</p> </div> </div> </div></body> </html>