<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.15.0" xml:lang="en-US">
  <compounddef id="xpointer_8c" kind="file" language="C++">
    <compoundname>xpointer.c</compoundname>
    <includes local="yes">libxml.h</includes>
    <includes local="no">string.h</includes>
    <includes refid="xpointer_8h" local="no">libxml/xpointer.h</includes>
    <includes refid="xmlmemory_8h" local="no">libxml/xmlmemory.h</includes>
    <includes refid="parserInternals_8h" local="no">libxml/parserInternals.h</includes>
    <includes refid="uri_8h" local="no">libxml/uri.h</includes>
    <includes refid="xpath_8h" local="no">libxml/xpath.h</includes>
    <includes refid="xpathInternals_8h" local="no">libxml/xpathInternals.h</includes>
    <includes refid="xmlerror_8h" local="no">libxml/xmlerror.h</includes>
    <includes local="yes">private/error.h</includes>
    <includes local="yes">private/xpath.h</includes>
    <incdepgraph>
      <node id="29">
        <label>libxml/HTMLparser.h</label>
        <link refid="HTMLparser_8h"/>
        <childnode refid="5" relation="include">
        </childnode>
        <childnode refid="20" relation="include">
        </childnode>
      </node>
      <node id="27">
        <label>libxml/SAX2.h</label>
        <link refid="SAX2_8h"/>
        <childnode refid="5" relation="include">
        </childnode>
        <childnode refid="20" relation="include">
        </childnode>
      </node>
      <node id="30">
        <label>libxml/chvalid.h</label>
        <link refid="chvalid_8h"/>
        <childnode refid="5" relation="include">
        </childnode>
        <childnode refid="10" relation="include">
        </childnode>
      </node>
      <node id="17">
        <label>libxml/dict.h</label>
        <link refid="dict_8h"/>
        <childnode refid="18" relation="include">
        </childnode>
        <childnode refid="5" relation="include">
        </childnode>
        <childnode refid="10" relation="include">
        </childnode>
      </node>
      <node id="25">
        <label>libxml/encoding.h</label>
        <link refid="encoding_8h"/>
        <childnode refid="5" relation="include">
        </childnode>
        <childnode refid="15" relation="include">
        </childnode>
      </node>
      <node id="24">
        <label>libxml/entities.h</label>
        <link refid="entities_8h"/>
        <childnode refid="5" relation="include">
        </childnode>
        <childnode refid="7" relation="include">
        </childnode>
      </node>
      <node id="16">
        <label>libxml/hash.h</label>
        <link refid="hash_8h"/>
        <childnode refid="5" relation="include">
        </childnode>
        <childnode refid="17" relation="include">
        </childnode>
        <childnode refid="10" relation="include">
        </childnode>
      </node>
      <node id="22">
        <label>libxml/list.h</label>
        <link refid="list_8h"/>
        <childnode refid="5" relation="include">
        </childnode>
      </node>
      <node id="20">
        <label>libxml/parser.h</label>
        <link refid="parser_8h"/>
        <childnode refid="5" relation="include">
        </childnode>
        <childnode refid="7" relation="include">
        </childnode>
        <childnode refid="17" relation="include">
        </childnode>
        <childnode refid="16" relation="include">
        </childnode>
        <childnode refid="21" relation="include">
        </childnode>
        <childnode refid="24" relation="include">
        </childnode>
        <childnode refid="15" relation="include">
        </childnode>
        <childnode refid="10" relation="include">
        </childnode>
        <childnode refid="12" relation="include">
        </childnode>
        <childnode refid="25" relation="include">
        </childnode>
        <childnode refid="26" relation="include">
        </childnode>
        <childnode refid="27" relation="include">
        </childnode>
        <childnode refid="28" relation="include">
        </childnode>
      </node>
      <node id="19">
        <label>libxml/parserInternals.h</label>
        <link refid="parserInternals_8h"/>
        <childnode refid="5" relation="include">
        </childnode>
        <childnode refid="20" relation="include">
        </childnode>
        <childnode refid="29" relation="include">
        </childnode>
        <childnode refid="30" relation="include">
        </childnode>
        <childnode refid="27" relation="include">
        </childnode>
      </node>
      <node id="28">
        <label>libxml/threads.h</label>
        <link refid="threads_8h"/>
        <childnode refid="5" relation="include">
        </childnode>
      </node>
      <node id="7">
        <label>libxml/tree.h</label>
        <link refid="tree_8h"/>
        <childnode refid="8" relation="include">
        </childnode>
        <childnode refid="9" relation="include">
        </childnode>
        <childnode refid="5" relation="include">
        </childnode>
        <childnode refid="10" relation="include">
        </childnode>
        <childnode refid="12" relation="include">
        </childnode>
        <childnode refid="13" relation="include">
        </childnode>
      </node>
      <node id="31">
        <label>libxml/uri.h</label>
        <link refid="uri_8h"/>
        <childnode refid="8" relation="include">
        </childnode>
        <childnode refid="5" relation="include">
        </childnode>
        <childnode refid="10" relation="include">
        </childnode>
      </node>
      <node id="21">
        <label>libxml/valid.h</label>
        <link refid="valid_8h"/>
        <childnode refid="5" relation="include">
        </childnode>
        <childnode refid="15" relation="include">
        </childnode>
        <childnode refid="7" relation="include">
        </childnode>
        <childnode refid="22" relation="include">
        </childnode>
        <childnode refid="23" relation="include">
        </childnode>
        <childnode refid="13" relation="include">
        </childnode>
      </node>
      <node id="26">
        <label>libxml/xmlIO.h</label>
        <link refid="xmlIO_8h"/>
        <childnode refid="8" relation="include">
        </childnode>
        <childnode refid="5" relation="include">
        </childnode>
        <childnode refid="25" relation="include">
        </childnode>
        <childnode refid="7" relation="include">
        </childnode>
      </node>
      <node id="23">
        <label>libxml/xmlautomata.h</label>
        <link refid="xmlautomata_8h"/>
        <childnode refid="5" relation="include">
        </childnode>
        <childnode refid="10" relation="include">
        </childnode>
      </node>
      <node id="15">
        <label>libxml/xmlerror.h</label>
        <link refid="xmlerror_8h"/>
        <childnode refid="5" relation="include">
        </childnode>
      </node>
      <node id="12">
        <label>libxml/xmlmemory.h</label>
        <link refid="xmlmemory_8h"/>
        <childnode refid="8" relation="include">
        </childnode>
        <childnode refid="5" relation="include">
        </childnode>
      </node>
      <node id="13">
        <label>libxml/xmlregexp.h</label>
        <link refid="xmlregexp_8h"/>
        <childnode refid="8" relation="include">
        </childnode>
        <childnode refid="5" relation="include">
        </childnode>
        <childnode refid="10" relation="include">
        </childnode>
      </node>
      <node id="10">
        <label>libxml/xmlstring.h</label>
        <link refid="xmlstring_8h"/>
        <childnode refid="11" relation="include">
        </childnode>
        <childnode refid="5" relation="include">
        </childnode>
      </node>
      <node id="14">
        <label>libxml/xpath.h</label>
        <link refid="xpath_8h"/>
        <childnode refid="5" relation="include">
        </childnode>
        <childnode refid="15" relation="include">
        </childnode>
        <childnode refid="7" relation="include">
        </childnode>
        <childnode refid="16" relation="include">
        </childnode>
      </node>
      <node id="32">
        <label>libxml/xpathInternals.h</label>
        <link refid="xpathInternals_8h"/>
        <childnode refid="8" relation="include">
        </childnode>
        <childnode refid="5" relation="include">
        </childnode>
        <childnode refid="14" relation="include">
        </childnode>
      </node>
      <node id="4">
        <label>libxml/xpointer.h</label>
        <link refid="xpointer_8h"/>
        <childnode refid="5" relation="include">
        </childnode>
        <childnode refid="7" relation="include">
        </childnode>
        <childnode refid="14" relation="include">
        </childnode>
      </node>
      <node id="5">
        <label>libxml/xmlversion.h</label>
        <link refid="xmlversion_8h"/>
        <childnode refid="6" relation="include">
        </childnode>
      </node>
      <node id="1">
        <label>/builds/GNOME/libxml2/xpointer.c</label>
        <link refid="xpointer_8c"/>
        <childnode refid="2" relation="include">
        </childnode>
        <childnode refid="3" relation="include">
        </childnode>
        <childnode refid="4" relation="include">
        </childnode>
        <childnode refid="12" relation="include">
        </childnode>
        <childnode refid="19" relation="include">
        </childnode>
        <childnode refid="31" relation="include">
        </childnode>
        <childnode refid="14" relation="include">
        </childnode>
        <childnode refid="32" relation="include">
        </childnode>
        <childnode refid="15" relation="include">
        </childnode>
        <childnode refid="33" relation="include">
        </childnode>
        <childnode refid="34" relation="include">
        </childnode>
      </node>
      <node id="2">
        <label>libxml.h</label>
      </node>
      <node id="6">
        <label>libxml/xmlexports.h</label>
      </node>
      <node id="9">
        <label>limits.h</label>
      </node>
      <node id="33">
        <label>private/error.h</label>
      </node>
      <node id="34">
        <label>private/xpath.h</label>
      </node>
      <node id="11">
        <label>stdarg.h</label>
      </node>
      <node id="18">
        <label>stddef.h</label>
      </node>
      <node id="8">
        <label>stdio.h</label>
      </node>
      <node id="3">
        <label>string.h</label>
      </node>
    </incdepgraph>
    <sectiondef kind="define">
      <memberdef kind="define" id="xpointer_8c_1a2e0dfa3e1bcca0ce16dfbe14da3a27be" prot="public" static="no">
        <name>IN_LIBXML</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/builds/GNOME/libxml2/xpointer.c" line="22" column="9" bodyfile="/builds/GNOME/libxml2/xpointer.c" bodystart="22" bodyend="-1"/>
      </memberdef>
      <memberdef kind="define" id="xpointer_8c_1ac87d4a1ad6c07c52124b5a6cec5e586a" prot="public" static="no">
        <name>XPTR_XMLNS_SCHEME</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/builds/GNOME/libxml2/xpointer.c" line="45" column="9" bodyfile="/builds/GNOME/libxml2/xpointer.c" bodystart="45" bodyend="-1"/>
      </memberdef>
      <memberdef kind="define" id="xpointer_8c_1aff0bd431f60abc560695115eb38e525d" prot="public" static="no">
        <name>CUR</name>
        <initializer>(*ctxt-&gt;cur)</initializer>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/builds/GNOME/libxml2/xpointer.c" line="173" column="9" bodyfile="/builds/GNOME/libxml2/xpointer.c" bodystart="173" bodyend="-1"/>
      </memberdef>
      <memberdef kind="define" id="xpointer_8c_1ad4085174a3a17d279d2dbd4b036b9e12" prot="public" static="no">
        <name>SKIP</name>
        <param><defname>val</defname></param>
        <initializer>ctxt-&gt;cur += (val)</initializer>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/builds/GNOME/libxml2/xpointer.c" line="174" column="9" bodyfile="/builds/GNOME/libxml2/xpointer.c" bodystart="174" bodyend="-1"/>
      </memberdef>
      <memberdef kind="define" id="xpointer_8c_1af314159e84096cd64f018a2a4d8117a4" prot="public" static="no">
        <name>NXT</name>
        <param><defname>val</defname></param>
        <initializer>ctxt-&gt;cur[(val)]</initializer>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/builds/GNOME/libxml2/xpointer.c" line="175" column="9" bodyfile="/builds/GNOME/libxml2/xpointer.c" bodystart="175" bodyend="-1"/>
      </memberdef>
      <memberdef kind="define" id="xpointer_8c_1a764bdced1d55967df03accf048f32e84" prot="public" static="no">
        <name>SKIP_BLANKS</name>
        <initializer>    while (<ref refid="parserInternals_8h_1afdafd786dd8925a841d972b71acc4c5c" kindref="member">IS_BLANK_CH</ref>(*(ctxt-&gt;cur))) NEXT</initializer>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/builds/GNOME/libxml2/xpointer.c" line="177" column="9" bodyfile="/builds/GNOME/libxml2/xpointer.c" bodystart="177" bodyend="178"/>
      </memberdef>
      <memberdef kind="define" id="xpointer_8c_1a1f957b762e025dae67967a36c86dcfc1" prot="public" static="no">
        <name>CURRENT</name>
        <initializer>(*ctxt-&gt;cur)</initializer>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/builds/GNOME/libxml2/xpointer.c" line="180" column="9" bodyfile="/builds/GNOME/libxml2/xpointer.c" bodystart="180" bodyend="-1"/>
      </memberdef>
      <memberdef kind="define" id="xpointer_8c_1a2be29dbf95b4a2c822f307a5b8141184" prot="public" static="no">
        <name>NEXT</name>
        <initializer>((*ctxt-&gt;cur) ?  ctxt-&gt;cur++: ctxt-&gt;cur)</initializer>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/builds/GNOME/libxml2/xpointer.c" line="181" column="9" bodyfile="/builds/GNOME/libxml2/xpointer.c" bodystart="181" bodyend="-1"/>
      </memberdef>
    </sectiondef>
    <sectiondef kind="func">
      <memberdef kind="function" id="xpointer_8c_1a024fade484636b7fbfec147a5697aa26" prot="public" static="yes" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>static void xmlXPtrErr</definition>
        <argsstring>(xmlXPathParserContextPtr ctxt, int code, const char *msg, const xmlChar *extra)</argsstring>
        <name>xmlXPtrErr</name>
        <param>
          <type>xmlXPathParserContextPtr</type>
          <declname>ctxt</declname>
        </param>
        <param>
          <type>int</type>
          <declname>code</declname>
        </param>
        <param>
          <type>const char *</type>
          <declname>msg</declname>
        </param>
        <param>
          <type>const <ref refid="xmlstring_8h_1afb1489b546f7800463867523ffaee1d3" kindref="member">xmlChar</ref> *</type>
          <declname>extra</declname>
        </param>
        <briefdescription>
<para>Handle an XPointer error. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>ctxt</parametername>
</parameternamelist>
<parameterdescription>
<para>an XPTR evaluation context </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>code</parametername>
</parameternamelist>
<parameterdescription>
<para>error code </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>msg</parametername>
</parameternamelist>
<parameterdescription>
<para>error message </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>extra</parametername>
</parameternamelist>
<parameterdescription>
<para>extra information </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/builds/GNOME/libxml2/xpointer.c" line="65" column="1" bodyfile="/builds/GNOME/libxml2/xpointer.c" bodystart="65" bodyend="110"/>
      </memberdef>
      <memberdef kind="function" id="xpointer_8c_1a0aea457308e3def544dda88b2c96be78" prot="public" static="yes" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>xmlNodePtr</type>
        <definition>static xmlNodePtr xmlXPtrGetNthChild</definition>
        <argsstring>(xmlNodePtr cur, int no)</argsstring>
        <name>xmlXPtrGetNthChild</name>
        <param>
          <type>xmlNodePtr</type>
          <declname>cur</declname>
        </param>
        <param>
          <type>int</type>
          <declname>no</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>cur</parametername>
</parameternamelist>
<parameterdescription>
<para>the node </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>no</parametername>
</parameternamelist>
<parameterdescription>
<para>the child number </para>
</parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para>the <computeroutput>no</computeroutput>&apos;th element child of <computeroutput>cur</computeroutput> or NULL </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/builds/GNOME/libxml2/xpointer.c" line="124" column="1" bodyfile="/builds/GNOME/libxml2/xpointer.c" bodystart="124" bodyend="141"/>
      </memberdef>
      <memberdef kind="function" id="xpointer_8c_1a21f09373cb1c77dbe80fc759b5f638f1" prot="public" static="yes" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>static void xmlXPtrEvalChildSeq</definition>
        <argsstring>(xmlXPathParserContextPtr ctxt, xmlChar *name)</argsstring>
        <name>xmlXPtrEvalChildSeq</name>
        <param>
          <type>xmlXPathParserContextPtr</type>
          <declname>ctxt</declname>
        </param>
        <param>
          <type><ref refid="xmlstring_8h_1afb1489b546f7800463867523ffaee1d3" kindref="member">xmlChar</ref> *</type>
          <declname>name</declname>
        </param>
        <briefdescription>
<para>ChildSeq ::= &apos;/1&apos; (&apos;/&apos; [0-9]*)* | Name (&apos;/&apos; [0-9]*)+. </para>
        </briefdescription>
        <detaileddescription>
<para>Parse and evaluate a Child Sequence. This routine also handle the case of a Bare Name used to get a document ID.</para>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>ctxt</parametername>
</parameternamelist>
<parameterdescription>
<para>the XPointer Parser context </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>name</parametername>
</parameternamelist>
<parameterdescription>
<para>a possible ID name of the child sequence </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/builds/GNOME/libxml2/xpointer.c" line="478" column="1" bodyfile="/builds/GNOME/libxml2/xpointer.c" bodystart="478" bodyend="515" declfile="/builds/GNOME/libxml2/xpointer.c" declline="149" declcolumn="13"/>
      </memberdef>
      <memberdef kind="function" id="xpointer_8c_1a59256e8571bed27ecd518e79cee42e92" prot="public" static="yes" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>static void xmlXPtrGetChildNo</definition>
        <argsstring>(xmlXPathParserContextPtr ctxt, int indx)</argsstring>
        <name>xmlXPtrGetChildNo</name>
        <param>
          <type>xmlXPathParserContextPtr</type>
          <declname>ctxt</declname>
        </param>
        <param>
          <type>int</type>
          <declname>indx</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/builds/GNOME/libxml2/xpointer.c" line="191" column="1" bodyfile="/builds/GNOME/libxml2/xpointer.c" bodystart="191" bodyend="212"/>
      </memberdef>
      <memberdef kind="function" id="xpointer_8c_1a93dcdab7c20ecbbcd42515ca2916bfe5" prot="public" static="yes" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>static void xmlXPtrEvalXPtrPart</definition>
        <argsstring>(xmlXPathParserContextPtr ctxt, xmlChar *name)</argsstring>
        <name>xmlXPtrEvalXPtrPart</name>
        <param>
          <type>xmlXPathParserContextPtr</type>
          <declname>ctxt</declname>
        </param>
        <param>
          <type><ref refid="xmlstring_8h_1afb1489b546f7800463867523ffaee1d3" kindref="member">xmlChar</ref> *</type>
          <declname>name</declname>
        </param>
        <briefdescription>
<para>XPtrPart ::= &apos;xpointer&apos; &apos;(&apos; XPtrExpr &apos;)&apos; | Scheme &apos;(&apos; SchemeSpecificExpr &apos;)&apos;. </para>
        </briefdescription>
        <detaileddescription>
<para>Scheme ::= NCName - &apos;xpointer&apos; [VC: Non-XPointer schemes]</para>
<para>SchemeSpecificExpr ::= StringWithBalancedParens</para>
<para>StringWithBalancedParens ::= [^()]* (&apos;(&apos; StringWithBalancedParens &apos;)&apos; [^()]*)* [VC: Parenthesis escaping]</para>
<para>XPtrExpr ::= Expr [VC: Parenthesis escaping]</para>
<para>VC: Parenthesis escaping: The end of an XPointer part is signaled by the right parenthesis &quot;)&quot; character that is balanced with the left parenthesis &quot;(&quot; character that began the part. Any unbalanced parenthesis character inside the expression, even within literals, must be escaped with a circumflex (^) character preceding it. If the expression contains any literal occurrences of the circumflex, each must be escaped with an additional circumflex (that is, ^^). If the unescaped parentheses in the expression are not balanced, a syntax error results.</para>
<para>Parse and evaluate an XPtrPart. Basically it generates the unescaped string and if the scheme is &apos;xpointer&apos; it will call the XPath interpreter.</para>
<para>TODO: there is no new scheme registration mechanism</para>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>ctxt</parametername>
</parameternamelist>
<parameterdescription>
<para>the XPointer Parser context </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>name</parametername>
</parameternamelist>
<parameterdescription>
<para>the preparsed Scheme for the XPtrPart </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/builds/GNOME/libxml2/xpointer.c" line="248" column="1" bodyfile="/builds/GNOME/libxml2/xpointer.c" bodystart="248" bodyend="386"/>
      </memberdef>
      <memberdef kind="function" id="xpointer_8c_1aba9f224228f4164ab50c9ab5b606e1b2" prot="public" static="yes" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>static void xmlXPtrEvalFullXPtr</definition>
        <argsstring>(xmlXPathParserContextPtr ctxt, xmlChar *name)</argsstring>
        <name>xmlXPtrEvalFullXPtr</name>
        <param>
          <type>xmlXPathParserContextPtr</type>
          <declname>ctxt</declname>
        </param>
        <param>
          <type><ref refid="xmlstring_8h_1afb1489b546f7800463867523ffaee1d3" kindref="member">xmlChar</ref> *</type>
          <declname>name</declname>
        </param>
        <briefdescription>
<para>FullXPtr ::= XPtrPart (S? </para>
        </briefdescription>
        <detaileddescription>
<para>XPtrPart)*</para>
<sect1 id="xpointer_8c_1autotoc_md3_1s1"><sect2 id="xpointer_8c_1autotoc_md3">
<title>As the specs says:</title><para>When multiple XPtrParts are provided, they must be evaluated in left-to-right order. If evaluation of one part fails, the nexti is evaluated. The following conditions cause XPointer part failure:</para>
<para><itemizedlist>
<listitem><para>An unknown scheme</para>
</listitem><listitem><para>A scheme that does not locate any sub-resource present in the resource</para>
</listitem><listitem><para>A scheme that is not applicable to the media type of the resource</para>
</listitem></itemizedlist>
</para>
<para>The XPointer application must consume a failed XPointer part and attempt to evaluate the next one, if any. The result of the first XPointer part whose evaluation succeeds is taken to be the fragment located by the XPointer as a whole. If all the parts fail, the result </para>
</sect2></sect1>
<sect1 id="xpointer_8c_1autotoc_md4_1s1"><sect2 id="xpointer_8c_1autotoc_md4">
<title>for the XPointer as a whole is a sub-resource error.</title><para>Parse and evaluate a Full XPtr i.e. possibly a cascade of XPath based expressions or other schemes.</para>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>ctxt</parametername>
</parameternamelist>
<parameterdescription>
<para>the XPointer Parser context </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>name</parametername>
</parameternamelist>
<parameterdescription>
<para>the preparsed Scheme for the first XPtrPart </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
</sect2></sect1>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/builds/GNOME/libxml2/xpointer.c" line="415" column="1" bodyfile="/builds/GNOME/libxml2/xpointer.c" bodystart="415" bodyend="465"/>
      </memberdef>
      <memberdef kind="function" id="xpointer_8c_1a9c0c5b08bb9d13b0301c0b7d68accfd1" prot="public" static="yes" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>static void xmlXPtrEvalXPointer</definition>
        <argsstring>(xmlXPathParserContextPtr ctxt)</argsstring>
        <name>xmlXPtrEvalXPointer</name>
        <param>
          <type>xmlXPathParserContextPtr</type>
          <declname>ctxt</declname>
        </param>
        <briefdescription>
<para>XPointer ::= Name | ChildSeq | FullXPtr. </para>
        </briefdescription>
        <detaileddescription>
<para>Parse and evaluate an XPointer</para>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>ctxt</parametername>
</parameternamelist>
<parameterdescription>
<para>the XPointer Parser context </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/builds/GNOME/libxml2/xpointer.c" line="528" column="1" bodyfile="/builds/GNOME/libxml2/xpointer.c" bodystart="528" bodyend="563"/>
      </memberdef>
      <memberdef kind="function" id="xpointer_8c_1ad266411e3b0eb3176b33ea279b67ed40" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type><ref refid="xpath_8h_1a61100c9bec26c0de1d0329962c85c091" kindref="member">xmlXPathContext</ref> *</type>
        <definition>xmlXPathContext * xmlXPtrNewContext</definition>
        <argsstring>(xmlDoc *doc, xmlNode *here, xmlNode *origin)</argsstring>
        <name>xmlXPtrNewContext</name>
        <param>
          <type><ref refid="tree_8h_1ae94acff8b6413934705e29389bcddc17" kindref="member">xmlDoc</ref> *</type>
          <declname>doc</declname>
        </param>
        <param>
          <type><ref refid="tree_8h_1ac8c054adbdabc014ab4584dfb1ce841e" kindref="member">xmlNode</ref> *</type>
          <declname>here</declname>
        </param>
        <param>
          <type><ref refid="tree_8h_1ac8c054adbdabc014ab4584dfb1ce841e" kindref="member">xmlNode</ref> *</type>
          <declname>origin</declname>
        </param>
        <briefdescription>
<para>Create a new XPointer context. </para>
        </briefdescription>
        <detaileddescription>
<para><xrefsect id="deprecated_1_deprecated000434"><xreftitle>Deprecated</xreftitle><xrefdescription><para>Same as xmlXPathNewContext.</para>
</xrefdescription></xrefsect></para>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>doc</parametername>
</parameternamelist>
<parameterdescription>
<para>the XML document </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>here</parametername>
</parameternamelist>
<parameterdescription>
<para>unused </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>origin</parametername>
</parameternamelist>
<parameterdescription>
<para>unused </para>
</parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para>the <ref refid="xpath_8h_1a61100c9bec26c0de1d0329962c85c091" kindref="member">xmlXPathContext</ref> just allocated. </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/builds/GNOME/libxml2/xpointer.c" line="583" column="1" bodyfile="/builds/GNOME/libxml2/xpointer.c" bodystart="583" bodyend="593"/>
      </memberdef>
      <memberdef kind="function" id="xpointer_8c_1a20078f45c75ddf4a44d8ff835439e980" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type><ref refid="xpath_8h_1a60f7ba568242d9876ac3b78d1c9b2893" kindref="member">xmlXPathObject</ref> *</type>
        <definition>xmlXPathObject * xmlXPtrEval</definition>
        <argsstring>(const xmlChar *str, xmlXPathContext *ctx)</argsstring>
        <name>xmlXPtrEval</name>
        <param>
          <type>const <ref refid="xmlstring_8h_1afb1489b546f7800463867523ffaee1d3" kindref="member">xmlChar</ref> *</type>
          <declname>str</declname>
        </param>
        <param>
          <type><ref refid="xpath_8h_1a61100c9bec26c0de1d0329962c85c091" kindref="member">xmlXPathContext</ref> *</type>
          <declname>ctx</declname>
        </param>
        <briefdescription>
<para>Evaluate an XPointer expression. </para>
        </briefdescription>
        <detaileddescription>
<para>This function can only return nodesets. The caller has to free the object.</para>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>str</parametername>
</parameternamelist>
<parameterdescription>
<para>an XPointer expression </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>ctx</parametername>
</parameternamelist>
<parameterdescription>
<para>an XPath context </para>
</parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para>the <ref refid="xpath_8h_1a60f7ba568242d9876ac3b78d1c9b2893" kindref="member">xmlXPathObject</ref> resulting from the evaluation or NULL in case of error. </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/builds/GNOME/libxml2/xpointer.c" line="607" column="1" bodyfile="/builds/GNOME/libxml2/xpointer.c" bodystart="607" bodyend="670"/>
      </memberdef>
    </sectiondef>
    <briefdescription>
    </briefdescription>
    <detaileddescription>
    </detaileddescription>
    <location file="/builds/GNOME/libxml2/xpointer.c"/>
  </compounddef>
</doxygen>
