Compare Revisions

Introduction to using XPath in JavaScript

Revision 110893:

Revision 110893 by JaredWBurt on

Revision 110894:

Revision 110894 by JaredWBurt on

Title:
Introduction to using XPath in JavaScript
Introduction to using XPath in JavaScript
Slug:
Introduction_to_using_XPath_in_JavaScript
Introduction_to_using_XPath_in_JavaScript
Tags:
DOM, XML, XSLT, Extensions, Add-ons, Transforming_XML_with_XSLT, XPath, "Web Development"
DOM, XML, XSLT, Extensions, Add-ons, Transforming_XML_with_XSLT, XPath, "Web Development"
Content:

Revision 110893
Revision 110894
n17      This method evaluates <a href="en/XPath">XPath</a> expressin17      This method evaluates <a href="en/XPath">XPath</a> expressi
>ons against a <a href="en/XML">XML</a> based document (including >ons against an <a href="en/XML">XML</a> based document (including
>HTML documents), and returns a <code>XPathResult</code> object, w> HTML documents), and returns a <code>XPathResult</code> object, 
>hich can be a single node or a set of nodes. The existing documen>which can be a single node or a set of nodes. The existing docume
>tation for this method is located at <a href="en/DOM/document.eva>ntation for this method is located at <a href="en/DOM/document.ev
>luate">DOM:document.evaluate</a> but it is rather sparse for our >aluate">DOM:document.evaluate</a>, but it is rather sparse for ou
>needs at the moment, a more comprehensive examination will be giv>r needs at the moment; a more comprehensive examination will be g
>en below.>iven below.
n46            <code>null</code>, which can be used for HTML documenn46            <code>null</code>, which can be used for HTML documen
>ts or when no namespace prefixes are used. Note that if the <code>ts or when no namespace prefixes are used. Note that, if the <cod
>>xpathExpression</code> contains a namespace prefix this will res>e>xpathExpression</code> contains a namespace prefix, this will r
>ult in a <code>DOMException</code> being thrown with the code <co>esult in a <code>DOMException</code> being thrown with the code <
>de>NAMESPACE_ERR</code>.>code>NAMESPACE_ERR</code>.
n55        <code>resultType</code>: A <a href="#XPathResult_Defined_n55        <code>resultType</code>: A <a href="#XPathResult_Defined_
>Constants">constant</a> that specifies the desired result type to>Constants">constant</a> that specifies the desired result type to
> be returned as a result of the evaluation. The most commonly pas> be returned as a result of the evaluation. The most commonly pas
>sed constant is <code>XPathResult.ANY_TYPE</code> which will retu>sed constant is <code>XPathResult.ANY_TYPE</code> which will retu
>rn the results of the XPath expression as the most natural type. >rn the results of the XPath expression as the most natural type. 
>There is a section in the appendix which contains a full list of >There is a section in the appendix which contains a full list of 
>the <a href="#XPathResult_Defined_Constants">available constants<>the <a href="#XPathResult_Defined_Constants">available constants<
>/a>. They are explained in the <a href="#Specifying_the_Return_Ty>/a>. They are explained below in the section "<a href="#Specifyin
>pe">Specifying the Return Type</a> section below.>g_the_Return_Type">Specifying the Return Type</a>."
56      </li>
57    </ul>
58    <ul>
59      <li>56      </li>
60        <code>result</code>: Either an existing <code>XPathResult57    </ul>
></code> object which is to be reused to return the results, or <c 
>ode>null</code> can be used which creates a new <code>XPathResult 
></code> object. 
58    <ul>
59      <li>
60        <code>result</code>: If an existing <code>XPathResult</co
 >de> object is specified, it will be reused to return the results.
 > Specifying <code>null</code> will create a new <code>XPathResult
 ></code> object.
t82      Note, XPath defines QNames without prefix to match only elet82      Note: XPath defines QNames without a prefix to match only e
>ments in the null namespace. There is no way in XPath to pick up >lements in the null namespace. There is no way in XPath to pick u
>the default namespace as applied to a regular element reference (>p the default namespace as applied to a regular element reference
>e.g., <code>p{{mediawiki.external('@id=\'_myid\'')}}</code> for <> (e.g., <code>p{{mediawiki.external('@id=\'_myid\'')}}</code> for
>code><span class="plain">xmlns='http://www.w3.org/1999/xhtml</spa> <code><span class="plain">xmlns='http://www.w3.org/1999/xhtml</s
>n>'</code>). To match default elements in a non-null namespace, y>pan>'</code>). To match default elements in a non-null namespace,
>ou either have to refer to a particular element using a form such> you either have to refer to a particular element using a form su
> as <code>*{{mediawiki.external('namespace-uri()=\'&lt;span class>ch as <code>*{{mediawiki.external('namespace-uri()=\'&lt;span cla
>=\"plain\"&gt;' .. http://www.w3.org/1999/xhtml .. '&lt;/span&gt;>ss=\"plain\"&gt;' .. http://www.w3.org/1999/xhtml .. '&lt;/span&g
>\' and name()=\'p\'')}}{{mediawiki.external('@id=\'_myid\'')}}</c>t;\' and name()=\'p\'')}}{{mediawiki.external('@id=\'_myid\'')}}<
>ode> (<a href="#Using_XPath_functions_to_reference_elements_with_>/code> (<a href="#Using_XPath_functions_to_reference_elements_wit
>its_default_namespace">this approach</a> works well for dynamic X>h_its_default_namespace">this approach</a> works well for dynamic
>Path's where the namespaces might not be known) or use prefixed n> XPath's where the namespaces might not be known) or use prefixed
>ame tests, and create a namespace resolver mapping the prefix to > name tests, and create a namespace resolver mapping the prefix t
>the namespace. Read more on <a href="#Implementing_a_User_Defined>o the namespace. Read more on <a href="#Implementing_a_User_Defin
>_Namespace_Resolver">how to create a user defined namespace resol>ed_Namespace_Resolver">how to create a user defined namespace res
>ver</a> if you wish to take the latter approach.>olver</a>, if you wish to take the latter approach.

Back to History