diff --git a/Projects/Win32/VC6/xerces-all/XercesLib/XercesLib.dsp b/Projects/Win32/VC6/xerces-all/XercesLib/XercesLib.dsp index 89468b705bb5d243656456ec6d575946b747b55c..72a8237b7146c7060d54cce9645739f96274e236 100644 --- a/Projects/Win32/VC6/xerces-all/XercesLib/XercesLib.dsp +++ b/Projects/Win32/VC6/xerces-all/XercesLib/XercesLib.dsp @@ -3135,6 +3135,31 @@ SOURCE=..\..\..\..\..\src\xercesc\dom\DOMWriter.hpp # End Source File # Begin Source File +SOURCE=..\..\..\..\..\src\xercesc\dom\DOMXPathNamespace.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\..\src\xercesc\dom\DOMXPathNSResolver.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\..\src\xercesc\dom\DOMXPathResult.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\..\src\xercesc\dom\DOMXPathEvaluator.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\..\src\xercesc\dom\DOMXPathException.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\..\src\xercesc\dom\DOMXPathExpression.hpp +# End Source File +# Begin Source File + + SOURCE=..\..\..\..\..\src\xercesc\dom\DOMWriterFilter.hpp # End Source File # End Group @@ -3144,3 +3169,5 @@ SOURCE=..\..\..\..\..\src\xercesc\util\Platforms\Win32\Version.rc # End Source File # End Target # End Project + + diff --git a/Projects/Win32/VC7/xerces-all/XercesLib/XercesLib.vcproj b/Projects/Win32/VC7/xerces-all/XercesLib/XercesLib.vcproj index 804df825a162e6f733c144a763f04e7a52c4385f..f68c2a452242ef8e19cd5499432659e65b18347a 100644 --- a/Projects/Win32/VC7/xerces-all/XercesLib/XercesLib.vcproj +++ b/Projects/Win32/VC7/xerces-all/XercesLib/XercesLib.vcproj @@ -1834,6 +1834,24 @@ <File RelativePath="..\..\..\..\..\src\xercesc\dom\DOMTypeInfo.hpp"> </File> + <File + RelativePath="..\..\..\..\..\src\xercesc\dom\DOMXPathNamespace.hpp"> + </File> + <File + RelativePath="..\..\..\..\..\src\xercesc\dom\DOMXPathNSResolver.hpp"> + </File> + <File + RelativePath="..\..\..\..\..\src\xercesc\dom\DOMXPathResult.hpp"> + </File> + <File + RelativePath="..\..\..\..\..\src\xercesc\dom\DOMXPathEvaluator.hpp"> + </File> + <File + RelativePath="..\..\..\..\..\src\xercesc\dom\DOMXPathException.hpp"> + </File> + <File + RelativePath="..\..\..\..\..\src\xercesc\dom\DOMXPathExpression.hpp"> + </File> <File RelativePath="..\..\..\..\..\src\xercesc\dom\DOMUserDataHandler.hpp"> </File> diff --git a/doc/html/ApacheDOMC++BindingL3.html b/doc/html/ApacheDOMC++BindingL3.html index 4c6cf420561e0dbab05c20926ff0ec78f77bcc84..f96baf20330ac8978292ff678edb317987607fef 100644 --- a/doc/html/ApacheDOMC++BindingL3.html +++ b/doc/html/ApacheDOMC++BindingL3.html @@ -23,11 +23,10 @@ Binding for DOM Level 2]</a></font></div> <p><br>This document contains the Experimental Apache Recommended C++ Language binding for the <a href="http://www.w3.org/TR/2002/WD-DOM-Level-3-Core-20020409/">Document Object Model Level 3.0 Core</a>, and for the subset of <a href="http://www.w3.org/TR/2002/WD-DOM-Level-3-ASLS-20020409/">Document -Object Model Level 3.0 Abstract Schemas and Load and Save</a>. Both -are W3C Working Draft of 09 April 2002. +Object Model Level 3.0 Abstract Schemas and Load and Save</a> , as well as the <a href="http://www.w3.org/TR/2003/CR-DOM-Level-3-XPath-20030331/">Document Object Model Level 3.0 XPath</a>. <p>The definitions are divided into <a href="#A: Document Object Model: Core">Core</a>, and -<a href="#B: Document Object Model: Load and Save">Load and Save</a>. +<a href="#B: Document Object Model: Load and Save">Load and Save</a> and <a href="#C: Document Object Model: XPath">XPath</a>. The headers are also available in Xerces-C++ distribution. <p>Note: <ol> @@ -128,6 +127,13 @@ are owned by implementation</li> </td> </tr> +<tr ALIGN=LEFT VALIGN=TOP> +<td>Xerces-C++ 2.4</td> +<td ALIGN=LEFT VALIGN=TOP>Modified +<br>- added DOM Level 3 XPath interfaces +</td> +</tr> + </table> <p> @@ -4397,19 +4403,626 @@ long toShow) = 0;</font></font></td> </table> </div> -<div class='div1'> -<div id="Divider"> -<hr WIDTH="100%"></div> -</div> -<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="620" > + + +<hr WIDTH="100%"> +<h2> +<a NAME="C: Document Object Model: XPath"></a><u><font color="#000000"><a href="#C++ Language Binding for DOM Level 3">C: +Document Object Model: XPath</a></font></u></h2> + + + + +<h3> +<font color="#000000">DOMXPathEvaluator.hpp:</font></h3> + +<div id="DOMXPathEvaluator"><font face="Courier New,Courier"><font size=-1>classDOMXPathEvaluator</font></font> +<table> + <tr ALIGN=LEFT VALIGN=TOP> -<td ALIGN=CENTER><i><font color="#0086B2"><font size=-1>Copyright © -2001 The Apache Software Foundation. All Rights Reserved.</font></font></i></td> +<td><font face="Courier New,Courier"><font size=-1>{</font></font></td> + +<td></td> + +<td></td> + +<td></td> + +</tr> + +<tr ALIGN=LEFT VALIGN=TOP> +<td><font face="Courier New,Courier"><font size=-1>public:</font></font></td> + +<td></td> + +<td></td> + +<td></td> + +</tr> + +<tr ALIGN=LEFT VALIGN=TOP> +<td></td> + +<td><font face="Courier New,Courier"><font size=-1>virtual</font></font></td> + +<td><font face="Courier New,Courier"><font size=-1>const DOMXPathExpression*</font></font></td> + +<td><font face="Courier New,Courier"><font size=-1>createExpression(const XMLCh *expression, const DOMXPathNSResolver *resolver) = 0;</font></font></td> +</tr> + +<tr ALIGN=LEFT VALIGN=TOP> +<td></td> + +<td><font face="Courier New,Courier"><font size=-1>virtual</font></font></td> + +<td><font face="Courier New,Courier"><font size=-1>const DOMXPathNSResolver*</font></font></td> + +<td><font face="Courier New,Courier"><font size=-1>createNSResolver(DOMNode *nodeResolver) = 0;</font></font></td> +</tr> + +<tr ALIGN=LEFT VALIGN=TOP> +<td></td> + +<td><font face="Courier New,Courier"><font size=-1>virtual</font></font></td> + +<td><font face="Courier New,Courier"><font size=-1>void*</font></font></td> + +<td><font face="Courier New,Courier"><font size=-1>evaluate(const XMLCh *expression, DOMNode *contextNode, const DOMXPathNSResolver *resolver, unsigned short type, void* result) = 0; +</font></font></td> +</tr> +<tr ALIGN=LEFT VALIGN=TOP> +<td><font face="Courier New,Courier"><font size=-1>};</font></font></td> + +<td></td> + +<td></td> + +<td></td> </tr> </table> -</div> -</div> + + + + +<h3> +<font color="#000000">DOMXPathException.hpp:</font></h3> + +<div id="DOMXPathException"><font face="Courier New,Courier"><font size=-1>classDOMXPathException</font></font> +<table> + +<tr ALIGN=LEFT VALIGN=TOP> +<td><font face="Courier New,Courier"><font size=-1>{</font></font></td> + +<td></td> + +<td></td> + +<td></td> + +</tr> + +<tr ALIGN=LEFT VALIGN=TOP> +<td><font face="Courier New,Courier"><font size=-1>public:</font></font></td> + +<td></td> + +<td></td> + +<td></td> + +</tr> + +<tr ALIGN=LEFT VALIGN=TOP> +<td></td> + +<td><font face="Courier New,Courier"><font size=-1>enum</font></font></td> + +<td><font face="Courier New,Courier"><font size=-1>ExceptionCode {</font></font></td> + +<td></td> +</tr> +<tr ALIGN=LEFT VALIGN=TOP> +<td></td> + +<td></td> + +<td><font face="Courier New,Courier"><font size=-1>INVALID_EXPRESSION_ERR</font></font></td> + +<td><font face="Courier New,Courier"><font size=-1>= 51,</font></font></td> +</tr> +<tr ALIGN=LEFT VALIGN=TOP> +<td></td> + +<td></td> + +<td><font face="Courier New,Courier"><font size=-1>TYPE_ERR</font></font></td> + +<td><font face="Courier New,Courier"><font size=-1>= 52,</font></font></td> +</tr> +<tr ALIGN=LEFT VALIGN=TOP> +<td><font face="Courier New,Courier"><font size=-1>};</font></font></td> + +<td></td> + +<td></td> + +<td></td> +</tr> +<tr ALIGN=LEFT VALIGN=TOP> +<td><font face="Courier New,Courier"><font size=-1>};</font></font></td> + +<td></td> + +<td></td> + +<td></td> +</tr> +</table> + +<h3> +<font color="#000000">DOMXPathExpression.hpp:</font></h3> + +<div id="DOMXPathExpression"><font face="Courier New,Courier"><font size=-1>class +DOMXPathExpression</font></font> +<table> + +<tr ALIGN=LEFT VALIGN=TOP> +<td><font face="Courier New,Courier"><font size=-1>{</font></font></td> + +<td></td> + +<td></td> + +<td></td> + +</tr> + +<tr ALIGN=LEFT VALIGN=TOP> +<td><font face="Courier New,Courier"><font size=-1>public:</font></font></td> + +<td></td> + +<td></td> + +<td></td> + +</tr> + +<tr ALIGN=LEFT VALIGN=TOP> +<td></td> + +<td><font face="Courier New,Courier"><font size=-1>virtual</font></font></td> + +<td><font face="Courier New,Courier"><font size=-1>void*</font></font></td> + +<td><font face="Courier New,Courier"><font size=-1>evaluate(DOMNode *contextNode, unsigned short type, void* result) const = 0;</font></font></td> +</tr> +<tr ALIGN=LEFT VALIGN=TOP> +<td><font face="Courier New,Courier"><font size=-1>};</font></font></td> + +<td></td> + +<td></td> + +<td></td> +</tr> +</table> + + + + + +<h3> +<font color="#000000">DOMXPathNamespace.hpp:</font></h3> + +<div id="DOMXPathNamespace"><font face="Courier New,Courier"><font size=-1>classDOMXPathNamespace</font></font> +<table> + +<tr ALIGN=LEFT VALIGN=TOP> +<td><font face="Courier New,Courier"><font size=-1>{</font></font></td> + +<td></td> + +<td></td> + +<td></td> + +</tr> + +<tr ALIGN=LEFT VALIGN=TOP> +<td><font face="Courier New,Courier"><font size=-1>public:</font></font></td> + +<td></td> + +<td></td> + +<td></td> + +</tr> + +<tr ALIGN=LEFT VALIGN=TOP> +<td></td> + +<td><font face="Courier New,Courier"><font size=-1>enum</font></font></td> + +<td><font face="Courier New,Courier"><font size=-1>XPathNodeType {</font></font></td> + +<td></td> +</tr> +<tr ALIGN=LEFT VALIGN=TOP> +<td></td> + +<td></td> + +<td><font face="Courier New,Courier"><font size=-1>XPATH_NAMESPACE_NODE</font></font></td> + +<td><font face="Courier New,Courier"><font size=-1>= 13,</font></font></td> +</tr> +<tr ALIGN=LEFT VALIGN=TOP> +<td><font face="Courier New,Courier"><font size=-1>};</font></font></td> + +<td></td> + +<td></td> + +<td></td> +</tr> + +<tr ALIGN=LEFT VALIGN=TOP> +<td></td> + +<td><font face="Courier New,Courier"><font size=-1>virtual</font></font></td> + +<td><font face="Courier New,Courier"><font size=-1>DOMElement</font></font></td> +<td><font face="Courier New,Courier"><font size=-1>*getOwnerElement() const = 0;</font></font></td> +</tr> +<tr ALIGN=LEFT VALIGN=TOP> +<td><font face="Courier New,Courier"><font size=-1>};</font></font></td> + +<td></td> + +<td></td> + +<td></td> +</tr> +</table> + + + + +<h3> +<font color="#000000">DOMXPathNSResolver.hpp:</font></h3> + +<div id="DOMXPathNSResolver"><font face="Courier New,Courier"><font size=-1>class +DOMXPathNSResolver</font></font> +<table> + +<tr ALIGN=LEFT VALIGN=TOP> +<td><font face="Courier New,Courier"><font size=-1>{</font></font></td> + +<td></td> + +<td></td> + +<td></td> + +</tr> + +<tr ALIGN=LEFT VALIGN=TOP> +<td><font face="Courier New,Courier"><font size=-1>public:</font></font></td> + +<td></td> + +<td></td> + +<td></td> + +</tr> + +<tr ALIGN=LEFT VALIGN=TOP> +<td></td> + +<td><font face="Courier New,Courier"><font size=-1>virtual</font></font></td> + +<td><font face="Courier New,Courier"><font size=-1>const XMLCh*</font></font></td> + +<td><font face="Courier New,Courier"><font size=-1>lookupNamespaceURI(const XMLCh* prefix) const = 0;</font></font></td> +</tr> + +<tr ALIGN=LEFT VALIGN=TOP> +<td></td> + +<td><font face="Courier New,Courier"><font size=-1>virtual</font></font></td> + +<td><font face="Courier New,Courier"><font size=-1>const XMLCh*</font></font></td> + +<td><font face="Courier New,Courier"><font size=-1>lookupPrefix(const XMLCh* URI) const = 0;</font></font></td> +</tr> +<tr ALIGN=LEFT VALIGN=TOP> +<td><font face="Courier New,Courier"><font size=-1>};</font></font></td> + +<td></td> + +<td></td> + +<td></td> +</tr> +</table> + + + + + +<h3> +<font color="#000000">DOMXPathResult.hpp:</font></h3> + +<div id="DOMXPathResult"><font face="Courier New,Courier"><font size=-1>class +DOMXPathResult</font></font> +<table> + +<tr ALIGN=LEFT VALIGN=TOP> +<td><font face="Courier New,Courier"><font size=-1>{</font></font></td> + +<td></td> + +<td></td> + +<td></td> + +</tr> + +<tr ALIGN=LEFT VALIGN=TOP> +<td><font face="Courier New,Courier"><font size=-1>public:</font></font></td> + +<td></td> + +<td></td> + +<td></td> + +</tr> + +<tr ALIGN=LEFT VALIGN=TOP> +<td></td> + +<td><font face="Courier New,Courier"><font size=-1>enum</font></font></td> + +<td><font face="Courier New,Courier"><font size=-1>resultType {</font></font></td> + +<td></td> +</tr> +<tr ALIGN=LEFT VALIGN=TOP> +<td></td> + +<td></td> + +<td><font face="Courier New,Courier"><font size=-1>ANY_TYPE</font></font></td> + +<td><font face="Courier New,Courier"><font size=-1>= 0,</font></font></td> +</tr> +<tr ALIGN=LEFT VALIGN=TOP> +<td></td> + +<td></td> + +<td><font face="Courier New,Courier"><font size=-1>NUMBER_TYPE</font></font></td> + +<td><font face="Courier New,Courier"><font size=-1>= 1,</font></font></td> +</tr> +<tr ALIGN=LEFT VALIGN=TOP> +<td></td> + +<td></td> + +<td><font face="Courier New,Courier"><font size=-1>STRING_TYPE</font></font></td> + +<td><font face="Courier New,Courier"><font size=-1>= 2,</font></font></td> +</tr> +<tr ALIGN=LEFT VALIGN=TOP> +<td></td> + +<td></td> + +<td><font face="Courier New,Courier"><font size=-1>BOOLEAN_TYPE</font></font></td> + +<td><font face="Courier New,Courier"><font size=-1>= 3,</font></font></td> +</tr> +<tr ALIGN=LEFT VALIGN=TOP> + +<td></td> + +<td></td> + +<td><font face="Courier New,Courier"><font size=-1>UNORDERED_NODE_ITERATOR_TYPE</font></font></td> + +<td><font face="Courier New,Courier"><font size=-1>= 4,</font></font></td> +</tr> +<tr ALIGN=LEFT VALIGN=TOP> +<td></td> + +<td></td> + +<td><font face="Courier New,Courier"><font size=-1>ORDERED_NODE_ITERATOR_TYPE</font></font></td> + +<td><font face="Courier New,Courier"><font size=-1>= 5,</font></font></td> +</tr> +<tr ALIGN=LEFT VALIGN=TOP> +<td></td> + +<td></td> + +<td><font face="Courier New,Courier"><font size=-1>UNORDERED_NODE_SNAPSHOT_TYPE</font></font></td> + +<td><font face="Courier New,Courier"><font size=-1>= 6,</font></font></td> +</tr> +<tr ALIGN=LEFT VALIGN=TOP> +<td></td> + +<td></td> + +<td><font face="Courier New,Courier"><font size=-1>ORDERED_NODE_SNAPSHOT_TYPE</font></font></td> + +<td><font face="Courier New,Courier"><font size=-1>= 7,</font></font></td> +</tr> +<tr ALIGN=LEFT VALIGN=TOP> +<td></td> + +<td></td> + +<td><font face="Courier New,Courier"><font size=-1>ANY_UNORDERED_NODE_TYPE</font></font></td> + +<td><font face="Courier New,Courier"><font size=-1>= 8,</font></font></td> +</tr> +<tr ALIGN=LEFT VALIGN=TOP> +<td></td> + +<td></td> + +<td><font face="Courier New,Courier"><font size=-1>FIRST_ORDERED_NODE_TYPE</font></font></td> + +<td><font face="Courier New,Courier"><font size=-1>= 9,</font></font></td> +</tr> +<tr ALIGN=LEFT VALIGN=TOP> +<td><font face="Courier New,Courier"><font size=-1>};</font></font></td> + +<td></td> + +<td></td> + +<td></td> +</tr> + +<tr ALIGN=LEFT VALIGN=TOP> +<td></td> + +<td><font face="Courier New,Courier"><font size=-1>virtual</font></font></td> + +<td><font face="Courier New,Courier"><font size=-1>bool</font></font></td> + + + + +<td><font face="Courier New,Courier"><font size=-1>getBooleanValue() const = 0;</font></font></td> +</tr> + +<tr ALIGN=LEFT VALIGN=TOP> +<td></td> + +<td><font face="Courier New,Courier"><font size=-1>virtual</font></font></td> + +<td><font face="Courier New,Courier"><font size=-1>bool</font></font></td> + +<td><font face="Courier New,Courier"><font size=-1>getInvalidIteratorState() const = 0;</font></font></td> +</tr> + +<tr ALIGN=LEFT VALIGN=TOP> +<td></td> + +<td><font face="Courier New,Courier"><font size=-1>virtual</font></font></td> + +<td><font face="Courier New,Courier"><font size=-1>double</font></font></td> + +<td><font face="Courier New,Courier"><font size=-1>getNumberValue() const = 0;</font></font></td> +</tr> + +<tr ALIGN=LEFT VALIGN=TOP> +<td></td> + +<td><font face="Courier New,Courier"><font size=-1>virtual</font></font></td> + +<td><font face="Courier New,Courier"><font size=-1>short</font></font></td> + +<td><font face="Courier New,Courier"><font size=-1>getResultType() const = 0;</font></font></td> +</tr> + +<tr ALIGN=LEFT VALIGN=TOP> +<td></td> + +<td><font face="Courier New,Courier"><font size=-1>virtual</font></font></td> + +<td><font face="Courier New,Courier"><font size=-1>DOMNode</font></font></td> + +<td><font face="Courier New,Courier"><font size=-1>*getSingleNodeValue() const = 0;</font></font></td> +</tr> + +<tr ALIGN=LEFT VALIGN=TOP> +<td></td> + +<td><font face="Courier New,Courier"><font size=-1>virtual</font></font></td> + +<td><font face="Courier New,Courier"><font size=-1>unsigned long</font></font></td> + +<td><font face="Courier New,Courier"><font size=-1>getSnapshotLength() const = 0;</font></font></td> +</tr> + +<tr ALIGN=LEFT VALIGN=TOP> +<td></td> + +<td><font face="Courier New,Courier"><font size=-1>virtual</font></font></td> + +<td><font face="Courier New,Courier"><font size=-1>const XMLCh*</font></font></td> + +<td><font face="Courier New,Courier"><font size=-1>getStringValue() const = 0;</font></font></td> +</tr> + +<tr ALIGN=LEFT VALIGN=TOP> +<td></td> + +<td><font face="Courier New,Courier"><font size=-1>virtual</font></font></td> + +<td><font face="Courier New,Courier"><font size=-1>DOMNode*</font></font></td> + +<td><font face="Courier New,Courier"><font size=-1>iterateNext() const = 0;</font></font></td> +</tr> + +<tr ALIGN=LEFT VALIGN=TOP> +<td></td> + +<td><font face="Courier New,Courier"><font size=-1>virtual</font></font></td> + +<td><font face="Courier New,Courier"><font size=-1>DOMNode*</font></font></td> + +<td><font face="Courier New,Courier"><font size=-1>snapshotItem(unsigned long index) const = 0;</font></font></td> +</tr> +<tr ALIGN=LEFT VALIGN=TOP> +<td><font face="Courier New,Courier"><font size=-1>};</font></font></td> + +<td></td> + +<td></td> + +<td></td> +</tr> +</table> + +<td></td> + +<td></td> + +<td></td> + + +</tr> +</table> +</div> + +<div class='div1'> +<div id="Divider"> +<hr WIDTH="100%"></div> +</div> + +<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="620" > +<tr ALIGN=LEFT VALIGN=TOP> +<td ALIGN=CENTER><i><font color="#0086B2"><font size=-1>Copyright © +2001 The Apache Software Foundation. All Rights Reserved.</font></font></i></td> +</tr> +</table> +</div> +</div> + + </body> </html> diff --git a/src/xercesc/dom/DOM.hpp b/src/xercesc/dom/DOM.hpp index 7192e529fac5a7ccfd3fa22991b749c39324f9fd..3f149c82eb07e09ca5c4c8ef41e82c09e9366bd8 100644 --- a/src/xercesc/dom/DOM.hpp +++ b/src/xercesc/dom/DOM.hpp @@ -111,6 +111,12 @@ #include <xercesc/dom/DOMWriter.hpp> #include <xercesc/dom/DOMWriterFilter.hpp> +#include <xercesc/dom/DOMXPathEvaluator.hpp> +#include <xercesc/dom/DOMXPathNSResolver.hpp> +#include <xercesc/dom/DOMXPathException.hpp> +#include <xercesc/dom/DOMXPathExpression.hpp> +#include <xercesc/dom/DOMXPathResult.hpp> +#include <xercesc/dom/DOMXPathNamespace.hpp> #endif diff --git a/src/xercesc/dom/DOMDocument.hpp b/src/xercesc/dom/DOMDocument.hpp index cf196b6c8c33197218979bcede019f252bdc853e..2c8740cbf54fdc6fe6e9ad8780b56aa5b75e2f35 100644 --- a/src/xercesc/dom/DOMDocument.hpp +++ b/src/xercesc/dom/DOMDocument.hpp @@ -65,6 +65,7 @@ #include "DOMNode.hpp" #include "DOMDocumentRange.hpp" #include "DOMDocumentTraversal.hpp" +#include "DOMXPathEvaluator.hpp" XERCES_CPP_NAMESPACE_BEGIN @@ -100,9 +101,11 @@ class DOMNode; */ class CDOM_EXPORT DOMDocument: public DOMDocumentRange, + public DOMXPathEvaluator, public DOMDocumentTraversal, public DOMNode { + protected: // ----------------------------------------------------------------------- // Hidden constructors diff --git a/src/xercesc/dom/DOMXPathEvaluator.hpp b/src/xercesc/dom/DOMXPathEvaluator.hpp new file mode 100644 index 0000000000000000000000000000000000000000..4e775fcd8c5bd2548744523a766c534146405c88 --- /dev/null +++ b/src/xercesc/dom/DOMXPathEvaluator.hpp @@ -0,0 +1,211 @@ +#ifndef DOMXPathEvaluator_HEADER_GUARD_ +#define DOMXPathEvaluator_HEADER_GUARD_ + +/* + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2001-2003 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Xerces" and "Apache Software Foundation" must + * not be used to endorse or promote products derived from this + * software without prior written permission. For written + * permission, please contact apache\@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * nor may "Apache" appear in their name, without prior written + * permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation, and was + * originally based on software copyright (c) 2001, International + * Business Machines, Inc., http://www.ibm.com . For more information + * on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +#include <xercesc/util/XercesDefs.hpp> + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMXPathNSResolver; +class DOMXPathExpression; +class DOMNode; + +/** + * The evaluation of XPath expressions is provided by <code>DOMXPathEvaluator</code>. + * In a DOM implementation which supports the XPath 3.0 feature, the <code>DOMXPathEvaluator</code> + * interface will be implemented on the same object which implements the Document interface permitting + * it to be obtained by casting or by using the DOM Level 3 getInterface method. In this case the + * implementation obtained from the Document supports the XPath DOM module and is compatible + * with the XPath 1.0 specification. + * Evaluation of expressions with specialized extension functions or variables may not + * work in all implementations and is, therefore, not portable. XPathEvaluator implementations + * may be available from other sources that could provide specific support for specialized extension + * functions or variables as would be defined by other specifications. + * @since DOM Level 3 + */ +class CDOM_EXPORT DOMXPathEvaluator +{ + +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMXPathEvaluator() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMXPathEvaluator(const DOMXPathEvaluator &); + DOMXPathEvaluator& operator = (const DOMXPathEvaluator&); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMXPathEvaluator() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMDocument interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + + /** + * Creates a parsed XPath expression with resolved namespaces. This is useful + * when an expression will be reused in an application since it makes it + * possible to compile the expression string into a more efficient internal + * form and preresolve all namespace prefixes which occur within the expression. + * @param expression of type XMLCh - The XPath expression string to be parsed. + * @param resolver of type <code>XPathNSResolver</code> - The resolver permits + * translation of all prefixes, including the xml namespace prefix, within the XPath expression + * into appropriate namespace URIs. If this is specified as null, any namespace + * prefix within the expression will result in <code>DOMException</code> being thrown with the + * code NAMESPACE_ERR. + * @return <code>XPathExpression</code> The compiled form of the XPath expression. + * @exception <code>XPathException</code> + * INVALID_EXPRESSION_ERR: Raised if the expression is not legal according to the + * rules of the <code>DOMXPathEvaluator</code>. + * @exception DOMException + * NAMESPACE_ERR: Raised if the expression contains namespace prefixes which cannot + * be resolved by the specified <code>XPathNSResolver</code>. + * @since DOM Level 3 + */ + virtual const DOMXPathExpression* createExpression(const XMLCh *expression, const DOMXPathNSResolver *resolver) = 0; + + + /** Adapts any DOM node to resolve namespaces so that an XPath expression can be + * easily evaluated relative to the context of the node where it appeared within + * the document. This adapter works like the DOM Level 3 method lookupNamespaceURI + * on nodes in resolving the namespaceURI from a given prefix using the current + * information available in the node's hierarchy at the time lookupNamespaceURI + * is called. also correctly resolving the implicit xml prefix. + * @param nodeResolver of type <code>DOMNode</code> The node to be used as a context + * for namespace resolution. + * @return <code>XPathNSResolver</code> <code>XPathNSResolver</code> which resolves namespaces + * with respect to the definitions in scope for a specified node. + */ + virtual const DOMXPathNSResolver* createNSResolver(DOMNode *nodeResolver) = 0; + + + /** + * Evaluates an XPath expression string and returns a result of the specified + * type if possible. + * @param expression of type XMLCh The XPath expression string to be parsed + * and evaluated. + * @param contextNode of type <code>DOMNode</code> The context is context node + * for the evaluation + * of this XPath expression. If the <code>DOMXPathEvaluator</code> was obtained by + * casting the <code>DOMDocument</code> then this must be owned by the same + * document and must be a <code>DOMDocument</code>, <code>DOMElement</code>, + * <code>DOMAttribute</code>, <code>DOMText</code>, <code>DOMCDATASection</code>, + * <code>DOMComment</code>, <code>DOMProcessingInstruction</code>, or + * <code>XPathNamespace</code> node. If the context node is a <code>DOMText</code> or + * a <code>DOMCDATASection</code>, then the context is interpreted as the whole + * logical text node as seen by XPath, unless the node is empty in which case it + * may not serve as the XPath context. + * @param resolver of type <code>XPathNSResolver</code> The resolver permits + * translation of all prefixes, including the xml namespace prefix, within + * the XPath expression into appropriate namespace URIs. If this is specified + * as null, any namespace prefix within the expression will result in + * <code>DOMException</code> being thrown with the code NAMESPACE_ERR. + * @param type of type unsigned short - If a specific type is specified, then + * the result will be returned as the corresponding type. + * For XPath 1.0 results, this must be one of the codes of the <code>XPathResult</code> + * interface. + * @param result of type void* - The result specifies a specific result object + * which may be reused and returned by this method. If this is specified as + * null or the implementation does not reuse the specified result, a new result + * object will be constructed and returned. + * For XPath 1.0 results, this object will be of type <code>XPathResult</code>. + * @return void* The result of the evaluation of the XPath expression. + * For XPath 1.0 results, this object will be of type <code>XPathResult</code>. + * @exception <code>XPathException</code> + * INVALID_EXPRESSION_ERR: Raised if the expression is not legal + * according to the rules of the <code>DOMXPathEvaluator</code> + * TYPE_ERR: Raised if the result cannot be converted to return the specified type. + * @exception DOMException + * NAMESPACE_ERR: Raised if the expression contains namespace prefixes + * which cannot be resolved by the specified <code>XPathNSResolver</code>. + * WRONG_DOCUMENT_ERR: The Node is from a document that is not supported + * by this <code>DOMXPathEvaluator</code>. + * NOT_SUPPORTED_ERR: The Node is not a type permitted as an XPath context + * node or the request type is not permitted by this <code>DOMXPathEvaluator</code>. + */ + virtual void* evaluate(const XMLCh *expression, DOMNode *contextNode, const DOMXPathNSResolver *resolver, + unsigned short type, void* result) = 0; + + //@} +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/xercesc/dom/DOMXPathException.cpp b/src/xercesc/dom/DOMXPathException.cpp new file mode 100644 index 0000000000000000000000000000000000000000..bcc5b0c97181ec87e4520f0afadd6759cb99b8c8 --- /dev/null +++ b/src/xercesc/dom/DOMXPathException.cpp @@ -0,0 +1,89 @@ +/* + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2001-2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Xerces" and "Apache Software Foundation" must + * not be used to endorse or promote products derived from this + * software without prior written permission. For written + * permission, please contact apache\@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * nor may "Apache" appear in their name, without prior written + * permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation, and was + * originally based on software copyright (c) 2001, International + * Business Machines, Inc., http://www.ibm.com . For more information + * on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + + +#include "DOMXPathException.hpp" + +XERCES_CPP_NAMESPACE_BEGIN + + +DOMXPathException::DOMXPathException() +: msg(0) +{ + code = (ExceptionCode) 0; +}; + + +DOMXPathException::DOMXPathException(short exCode, const XMLCh *message) +: msg(message) +{ + code = (ExceptionCode) exCode; +}; + + +DOMXPathException::DOMXPathException(const DOMXPathException &other) +: msg(other.msg) +{ + code = other.code; +}; + + +DOMXPathException::~DOMXPathException() +{ +}; + +XERCES_CPP_NAMESPACE_END + diff --git a/src/xercesc/dom/DOMXPathException.hpp b/src/xercesc/dom/DOMXPathException.hpp new file mode 100644 index 0000000000000000000000000000000000000000..43db64f582d13b8e85b543a9453bfd1e2c0b3fa6 --- /dev/null +++ b/src/xercesc/dom/DOMXPathException.hpp @@ -0,0 +1,150 @@ +#ifndef DOMXPathException_HEADER_GUARD_ +#define DOMXPathException_HEADER_GUARD_ + +/* + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2001-2003 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Xerces" and "Apache Software Foundation" must + * not be used to endorse or promote products derived from this + * software without prior written permission. For written + * permission, please contact apache\@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * nor may "Apache" appear in their name, without prior written + * permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation, and was + * originally based on software copyright (c) 2001, International + * Business Machines, Inc., http://www.ibm.com . For more information + * on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +#include <xercesc/util/XercesDefs.hpp> + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * @since DOM Level 3 + */ +class CDOM_EXPORT DOMXPathException +{ +public: + // ----------------------------------------------------------------------- + // Constructors + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + /** + * Default constructor for DOMXPathException. + * + */ + DOMXPathException(); + + /** + * Constructor which takes an error code and a message. + * + * @param code The error code which indicates the exception + * @param message The string containing the error message + */ + DOMXPathException(short code, const XMLCh *message); + + /** + * Copy constructor. + * + * @param other The object to be copied. + */ + DOMXPathException(const DOMXPathException &other); + + //@} + + // ----------------------------------------------------------------------- + // Destructors + // ----------------------------------------------------------------------- + /** @name Destructor. */ + //@{ + /** + * Destructor for DOMXPathException. + * + */ + virtual ~DOMXPathException(); + //@} + +public: + + //@{ + /** + * ExceptionCode + * INVALID_EXPRESSION_ERR If the expression has a syntax error or otherwise + * is not a legal expression according to the rules of the specific + * <code>XPathEvaluator</code> or contains specialized extension functions + * or variables not supported by this implementation. + * TYPE_ERR If the expression cannot be converted to return the specified type. + */ + enum ExceptionCode { + INVALID_EXPRESSION_ERR = 51, + TYPE_ERR = 52, + }; + //@} + + // ----------------------------------------------------------------------- + // Class Types + // ----------------------------------------------------------------------- + /** @name Public variables */ + //@{ + /** + * A code value, from the set defined by the ExceptionCode enum, + * indicating the type of error that occured. + */ + ExceptionCode code; + + /** + * A string value. Applications may use this field to hold an error + * message. The field value is not set by the DOM implementation, + * meaning that the string will be empty when an exception is first + * thrown. + */ + const XMLCh *msg; + //@} +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/xercesc/dom/DOMXPathExpression.hpp b/src/xercesc/dom/DOMXPathExpression.hpp new file mode 100644 index 0000000000000000000000000000000000000000..14f020dde0609fe35b7f7cc6c6ed943aafca1f8d --- /dev/null +++ b/src/xercesc/dom/DOMXPathExpression.hpp @@ -0,0 +1,147 @@ +#ifndef DOMXPathExpression_HEADER_GUARD_ +#define DOMXPathExpression_HEADER_GUARD_ + +/* + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2001-2003 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Xerces" and "Apache Software Foundation" must + * not be used to endorse or promote products derived from this + * software without prior written permission. For written + * permission, please contact apache\@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * nor may "Apache" appear in their name, without prior written + * permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation, and was + * originally based on software copyright (c) 2001, International + * Business Machines, Inc., http://www.ibm.com . For more information + * on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +#include <xercesc/util/XercesDefs.hpp> + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMNode; +/** + * The <code>DOMXPathExpression</code> interface represents a parsed and resolved XPath expression. + * @since DOM Level 3 + */ +class CDOM_EXPORT DOMXPathExpression +{ + +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMXPathExpression() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMXPathExpression(const DOMXPathExpression &); + DOMXPathExpression& operator = (const DOMXPathExpression&); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMXPathExpression() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMDocument interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + + /** + * Evaluates this XPath expression and returns a result. + * @param contextNode of type <code>DOMNode</code> The context is context + * node for the evaluation of this XPath expression. + * If the XPathEvaluator was obtained by casting the Document then this must + * be owned by the same document and must be a <code>DOMDocument</code>, <code>DOMElement</code>, + * <code>DOMAttribute</code>, <code>DOMText</code>, <code>DOMCDATASection</code>, + * <code>DOMComment</code>, <code>DOMProcessingInstruction</code>, or + * <code>XPathNamespace</code>. If the context node is a <code>DOMText</code> or a + * <code>DOMCDATASection</code>, then the context is interpreted as the whole logical + * text node as seen by XPath, unless the node is empty in which case it may not + * serve as the XPath context. + * @param type of type unsigned short If a specific type is specified, then the result + * will be coerced to return the specified type relying on XPath conversions and fail + * if the desired coercion is not possible. This must be one of the type codes of <code>XPathResult</code>. + * @param result of type void* The result specifies a specific result object which + * may be reused and returned by this method. If this is specified as nullor the + * implementation does not reuse the specified result, a new result object will be constructed + * and returned. + * For XPath 1.0 results, this object will be of type <code>XPathResult</code>. + * @return void* The result of the evaluation of the XPath expression. + * For XPath 1.0 results, this object will be of type <code>XPathResult</code>. + * @exception <code>XPathException</code> + * TYPE_ERR: Raised if the result cannot be converted to return the specified type. + * @exception <code>DOMException</code> + * WRONG_DOCUMENT_ERR: The <code>DOMNode</code> is from a document that is not supported by + * the <code>XPathEvaluator</code> that created this <code>DOMXPathExpression</code>. + * NOT_SUPPORTED_ERR: The Node is not a type permitted as an XPath context node or the + * request type is not permitted by this <code>DOMXPathExpression</code>. + */ + + virtual void* evaluate(DOMNode *contextNode, unsigned short type, void* result) const = 0; + //@} +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/xercesc/dom/DOMXPathNSResolver.hpp b/src/xercesc/dom/DOMXPathNSResolver.hpp new file mode 100644 index 0000000000000000000000000000000000000000..e5991a351225522469c290ff6b50a395c541c6f8 --- /dev/null +++ b/src/xercesc/dom/DOMXPathNSResolver.hpp @@ -0,0 +1,147 @@ +#ifndef DOMXPathNSResolver_HEADER_GUARD_ +#define DOMXPathNSResolver_HEADER_GUARD_ + +/* + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2001-2003 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Xerces" and "Apache Software Foundation" must + * not be used to endorse or promote products derived from this + * software without prior written permission. For written + * permission, please contact apache\@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * nor may "Apache" appear in their name, without prior written + * permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation, and was + * originally based on software copyright (c) 2001, International + * Business Machines, Inc., http://www.ibm.com . For more information + * on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +#include <xercesc/util/XercesDefs.hpp> + +XERCES_CPP_NAMESPACE_BEGIN +/** + * The <code>DOMXPathNSResolver</code> interface permit prefix strings + * in the expression to be properly bound to namespaceURI strings. + * <code>DOMXPathEvaluator</code> can construct an implementation of + * <code>DOMXPathNSResolver</code> from a node, or the interface may be + * implemented by any application. + * @since DOM Level 3 + */ +class CDOM_EXPORT DOMXPathNSResolver +{ + +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMXPathNSResolver() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMXPathNSResolver(const DOMXPathNSResolver &); + DOMXPathNSResolver& operator = (const DOMXPathNSResolver&); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMXPathNSResolver() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMDocument interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + + /** Look up the namespace URI associated to the given namespace prefix. + * The XPath evaluator must never call this with a null or empty argument, + * because the result of doing this is undefined. + * @param prefix of type XMLCh - The prefix to look for. + * @return the associated namespace URI or null if none is found. + */ + virtual const XMLCh* lookupNamespaceURI(const XMLCh* prefix) const = 0; + //@} + + + // ----------------------------------------------------------------------- + // Non-standard extension + // ----------------------------------------------------------------------- + /** @name Non-standard extension */ + //@{ + + /** + * Non-standard extension + * + * XPath2 implementations require a reverse lookup in the static context. + * Look up the prefix associated with the namespace URI + * The XPath evaluator must never call this with a null or empty argument, + * because the result of doing this is undefined. + * @param URI of type XMLCh - The namespace to look for. + * @return the associated prefix or null if none is found. + */ + virtual const XMLCh* lookupPrefix(const XMLCh* URI) const = 0; + + + //@} +}; + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/xercesc/dom/DOMXPathNamespace.hpp b/src/xercesc/dom/DOMXPathNamespace.hpp new file mode 100644 index 0000000000000000000000000000000000000000..ec0c4a129f970072421c4f01ccd879912f5e9af0 --- /dev/null +++ b/src/xercesc/dom/DOMXPathNamespace.hpp @@ -0,0 +1,150 @@ +#ifndef DOMXPathNamespace_HEADER_GUARD_ +#define DOMXPathNamespace_HEADER_GUARD_ + +/* + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2001-2003 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Xerces" and "Apache Software Foundation" must + * not be used to endorse or promote products derived from this + * software without prior written permission. For written + * permission, please contact apache\@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * nor may "Apache" appear in their name, without prior written + * permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation, and was + * originally based on software copyright (c) 2001, International + * Business Machines, Inc., http://www.ibm.com . For more information + * on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +#include "DOMNode.hpp" + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMElement; + +/** + * The <code>DOMXPathNamespace</code> interface is returned by <code>DOMXPathResult</code> + * interfaces to represent the XPath namespace node type that DOM lacks. There is no + * public constructor for this node type. Attempts to place it into a hierarchy or a + * NamedNodeMap result in a DOMException with the code HIERARCHY_REQUEST_ERR. This node + * is read only, so methods or setting of attributes that would mutate the node result + * in a <code>DOMException</code> with the code NO_MODIFICATION_ALLOWED_ERR. + * The core specification describes attributes of the <code>DOMNode</code> interface that + * are different for different node types but does not describe XPATH_NAMESPACE_NODE, + * so here is a description of those attributes for this node type. All attributes of + * <code>DOMNode</code> not described in this section have a null or false value. + * ownerDocument matches the ownerDocument of the ownerElement even if the element is later adopted. + * nodeName is always the string "#namespace". + * prefix is the prefix of the namespace represented by the node. + * localName is the same as prefix. + * nodeType is equal to XPATH_NAMESPACE_NODE. + * namespaceURI is the namespace URI of the namespace represented by the node. + * nodeValue is the same as namespaceURI. + * adoptNode, cloneNode, and importNode fail on this node type by raising a DOMException with the code NOT_SUPPORTED_ERR. + * Note: In future versions of the XPath specification, the definition of a namespace node may + * be changed incomatibly, in which case incompatible changes to field values may be required to + * implement versions beyond XPath 1.0. + * @since DOM Level 3 + */ +class CDOM_EXPORT DOMXPathNamespace : public DOMNode +{ + +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMXPathNamespace() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMXPathNamespace(const DOMXPathNamespace &); + DOMXPathNamespace& operator = (const DOMXPathNamespace&); + //@} + +public: + + + enum XPathNodeType { + XPATH_NAMESPACE_NODE = 13 + }; + + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMXPathNamespace() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMDocument interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + /** + * The <code>DOMElement</code> on which the namespace was in scope when + * it was requested. This does not change on a returned namespace node + * even if the document changes such that the namespace goes out of + * scope on that element and this node is no longer found there by XPath. + * @since DOM Level 3 + */ + virtual DOMElement *getOwnerElement() const = 0; + + //@} +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/xercesc/dom/DOMXPathResult.hpp b/src/xercesc/dom/DOMXPathResult.hpp new file mode 100644 index 0000000000000000000000000000000000000000..a85de8a89f58ca41b81b567aeff508a2c46da163 --- /dev/null +++ b/src/xercesc/dom/DOMXPathResult.hpp @@ -0,0 +1,293 @@ +#ifndef DOMXPathResult_HEADER_GUARD_ +#define DOMXPathResult_HEADER_GUARD_ + +/* + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2001-2003 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Xerces" and "Apache Software Foundation" must + * not be used to endorse or promote products derived from this + * software without prior written permission. For written + * permission, please contact apache\@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * nor may "Apache" appear in their name, without prior written + * permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation, and was + * originally based on software copyright (c) 2001, International + * Business Machines, Inc., http://www.ibm.com . For more information + * on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +#include <xercesc/util/XercesDefs.hpp> + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMXPathNSResolver; +class DOMXPathExpression; +class DOMNode; + +/** + * The <code>DOMXPathResult</code> interface represents the result of the + * evaluation of an XPath 1.0 expression within the context of a particular + * node. Since evaluation of an XPath expression can result in various result + * types, this object makes it possible to discover and manipulate the type + * and value of the result. + * @since DOM Level 3 + */ +class CDOM_EXPORT DOMXPathResult +{ + +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMXPathResult() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMXPathResult(const DOMXPathResult &); + DOMXPathResult& operator = (const DOMXPathResult&); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMXPathResult() {}; + //@} + + // ----------------------------------------------------------------------- + // Class Types + // ----------------------------------------------------------------------- + /** @name Public Contants */ + //@{ + /** ANY_TYPE + * This code does not represent a specific type. An evaluation of an XPath + * expression will never produce this type. If this type is requested, then + * the evaluation returns whatever type naturally results from evaluation + * of the expression. + * If the natural result is a node set when ANY_TYPE was requested, then + * UNORDERED_NODE_ITERATOR_TYPE is always the resulting type. Any other + * representation of a node set must be explicitly requested. + * ANY_UNORDERED_NODE_TYPE + * The result is a node set as defined by [XPath 1.0] and will be accessed + * as a single node, which may be nullif the node set is empty. Document + * modification does not invalidate the node, but may mean that the result + * node no longer corresponds to the current document. This is a convenience + * that permits optimization since the implementation can stop once any node + * in the resulting set has been found. + * If there is more than one node in the actual result, the single node + * returned might not be the first in document order. + * BOOLEAN_TYPE + * The result is a boolean as defined by [XPath 1.0]. Document modification + * does not invalidate the boolean, but may mean that reevaluation would not + * yield the same boolean. + * FIRST_ORDERED_NODE_TYPE + * The result is a node set as defined by [XPath 1.0] and will be accessed + * as a single node, which may be null if the node set is empty. Document + * modification does not invalidate the node, but may mean that the result + * node no longer corresponds to the current document. This is a convenience + * that permits optimization since the implementation can stop once the first + * node in document order of the resulting set has been found. + * If there are more than one node in the actual result, the single node + * returned will be the first in document order. + * NUMBER_TYPE + * The result is a number as defined by [XPath 1.0]. Document modification does + * not invalidate the number, but may mean that reevaluation would not yield the + * same number. + * ORDERED_NODE_ITERATOR_TYPE + * The result is a node set as defined by [XPath 1.0] that will be accessed + * iteratively, which will produce document-ordered nodes. Document modification + * invalidates the iteration. + * ORDERED_NODE_SNAPSHOT_TYPE + * The result is a node set as defined by [XPath 1.0] that will be accessed as a + * snapshot list of nodes that will be in original document order. Document + * modification does not invalidate the snapshot but may mean that reevaluation would + * not yield the same snapshot and nodes in the snapshot may have been altered, moved, + * or removed from the document. + * STRING_TYPE + * The result is a string as defined by [XPath 1.0]. Document modification does not + * invalidate the string, but may mean that the string no longer corresponds to the + * current document. + * UNORDERED_NODE_ITERATOR_TYPE + * The result is a node set as defined by [XPath 1.0] that will be accessed iteratively, + * which may not produce nodes in a particular order. Document modification invalidates the iteration. + * This is the default type returned if the result is a node set and ANY_TYPE is requested. + * UNORDERED_NODE_SNAPSHOT_TYPE + * The result is a node set as defined by [XPath 1.0] that will be accessed as a + * snapshot list of nodes that may not be in a particular order. Document modification + * does not invalidate the snapshot but may mean that reevaluation would not yield the same + * snapshot and nodes in the snapshot may have been altered, moved, or removed from the document. + */ + enum resultType { + ANY_TYPE = 0, + NUMBER_TYPE = 1, + STRING_TYPE = 2, + BOOLEAN_TYPE = 3, + UNORDERED_NODE_ITERATOR_TYPE = 4, + ORDERED_NODE_ITERATOR_TYPE = 5, + UNORDERED_NODE_SNAPSHOT_TYPE = 6, + ORDERED_NODE_SNAPSHOT_TYPE = 7, + ANY_UNORDERED_NODE_TYPE = 8, + FIRST_ORDERED_NODE_TYPE = 9 + }; + //@} + + + // ----------------------------------------------------------------------- + // Virtual DOMDocument interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + + + /** + * Returns the boolean value of this result + * @return booleanValue of type boolean, readonly + * The value of this boolean result. + * @exception XPathException + * TYPE_ERR: raised if resultType is not BOOLEAN_TYPE. + */ + virtual bool getBooleanValue() const = 0; + + /** + * Returns the state of the iterator + * @return invalidIteratorState + * Signifies that the iterator has become invalid. True if resultType is + * UNORDERED_NODE_ITERATOR_TYPE or ORDERED_NODE_ITERATOR_TYPE and the + * document has been modified since this result was returned. + * @exception XPathException + * TYPE_ERR: raised if resultType is not NUMBER_TYPE. + */ + virtual bool getInvalidIteratorState() const = 0; + + /** + * Returns the number value of this result + * @return numberValue + * The value of this number result. If the native double type of the DOM + * binding does not directly support the exact IEEE 754 result of the XPath + * expression, then it is up to the definition of the binding to specify how + * the XPath number is converted to the native binding number. + * @exception XPathException + * TYPE_ERR: raised if resultType is not NUMBER_TYPE. + */ + virtual double getNumberValue() const = 0; + + /** + * Returns the result type of this result + * @return resultType + * A code representing the type of this result, as defined by the type constants. + * @exception XPathException + * TYPE_ERR: raised if resultType is not ANY_UNORDERED_NODE_TYPE or FIRST_ORDERED_NODE_TYPE. + */ + virtual short getResultType() const = 0; + + /** + * Returns the single node value of this result + * @return singleNodeValue + * The value of this single node result, which may be null. + * @exception XPathException + * TYPE_ERR: raised if resultType is not ANY_UNORDERED_NODE_TYPE or FIRST_ORDERED_NODE_TYPE. + */ + virtual DOMNode *getSingleNodeValue() const = 0; + + /** + * Returns the snapshot length + * @return snapshotLength + * The number of nodes in the result snapshot. Valid values for snapshotItem indices + * are 0 to snapshotLength-1 inclusive. + * @exception XPathException + * TYPE_ERR: raised if resultType is not UNORDERED_NODE_SNAPSHOT_TYPE or + * ORDERED_NODE_SNAPSHOT_TYPE. + */ + virtual unsigned long getSnapshotLength() const = 0; + + /** + * Returns the string value of this result + * @return stringValue + * The value of this string result. + * @exception XPathException + * TYPE_ERR: raised if resultType is not STRING_TYPE. + */ + virtual const XMLCh* getStringValue() const = 0; + + /** + * Iterates and returns the next node from the node set or nullif there are no more nodes. + * @return the next node. + * @exception XPathException + * TYPE_ERR: raised if resultType is not UNORDERED_NODE_ITERATOR_TYPE or ORDERED_NODE_ITERATOR_TYPE. + * @exception DOMException + * INVALID_STATE_ERR: The document has been mutated since the result was returned. + */ + virtual DOMNode* iterateNext() const = 0; + + /** + * Returns the indexth item in the snapshot collection. If index is greater than or + * equal to the number of nodes in the list, this method returns null. Unlike the + * iterator result, the snapshot does not become invalid, but may not correspond + * to the current document if it is mutated. + * @param index of type unsigned long - Index into the snapshot collection. + * @return The node at the indexth position in the NodeList, or null if that is not a valid index. + * @exception XPathException + * TYPE_ERR: raised if resultType is not UNORDERED_NODE_SNAPSHOT_TYPE or ORDERED_NODE_SNAPSHOT_TYPE. + */ + virtual DOMNode* snapshotItem(unsigned long index) const = 0; + + //@} +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/xercesc/dom/Makefile.in b/src/xercesc/dom/Makefile.in index 6c85f94bbd4f408f3c0c4b67b1af63e586e7ba79..ddae68409ac9d62b72342e2df8d1df24c292f803 100644 --- a/src/xercesc/dom/Makefile.in +++ b/src/xercesc/dom/Makefile.in @@ -85,7 +85,7 @@ DOM_CPP_PUBHEADERS = \ DOMCDATASection.hpp \ DOMCharacterData.hpp \ DOMComment.hpp \ - DOMConfiguration.hpp \ + DOMConfiguration.hpp \ DOMDocument.hpp \ DOMDocumentRange.hpp \ DOMDocumentTraversal.hpp \ @@ -119,7 +119,13 @@ DOM_CPP_PUBHEADERS = \ DOMUserDataHandler.hpp \ DOMWriter.hpp \ DOMWriterFilter.hpp \ - StDOMNode.hpp + StDOMNode.hpp \ + DOMXPathNamespace.hpp \ + DOMXPathNSResolver.hpp \ + DOMXPathResult.hpp \ + DOMXPathEvaluator.hpp \ + DOMXPathException.hpp \ + DOMXPathExpression.hpp DOM_CPP_PRIVHEADERS = @@ -127,7 +133,8 @@ DOM_C_FILES = DOM_CPP_OBJECTS = \ DOMException.$(TO) \ - DOMRangeException.$(TO) + DOMRangeException.$(TO) \ + DOMXPathException.$(TO) all:: includes $(DOM_CPP_OBJECTS) impl deprecated diff --git a/src/xercesc/dom/impl/DOMDocumentImpl.cpp b/src/xercesc/dom/impl/DOMDocumentImpl.cpp index 486f174e2c1de05ba5ec8d1934d969c348cdf26d..97a001a0d88d1a7fbe095ee8b22e701414448898 100644 --- a/src/xercesc/dom/impl/DOMDocumentImpl.cpp +++ b/src/xercesc/dom/impl/DOMDocumentImpl.cpp @@ -85,7 +85,7 @@ #include <xercesc/dom/DOMImplementation.hpp> #include <xercesc/util/XMLChar.hpp> #include <xercesc/framework/MemoryManager.hpp> - +#include <iostream> XERCES_CPP_NAMESPACE_BEGIN @@ -437,6 +437,29 @@ void DOMDocumentImpl::removeNodeIterator(DOMNodeIteratorImpl* nodeIterator) } } + +const DOMXPathExpression* DOMDocumentImpl::createExpression(const XMLCh *expression, const DOMXPathNSResolver *resolver) +{ + throw DOMException(DOMException::NOT_SUPPORTED_ERR, 0); + return 0; +} + +const DOMXPathNSResolver* DOMDocumentImpl::createNSResolver(DOMNode *nodeResolver) + +{ + throw DOMException(DOMException::NOT_SUPPORTED_ERR, 0); + return 0; +} + +void* DOMDocumentImpl::evaluate(const XMLCh *expression, DOMNode *contextNode, const DOMXPathNSResolver *resolver, + unsigned short type, void* result) +{ + throw DOMException(DOMException::NOT_SUPPORTED_ERR, 0); + return 0; +} + + + DOMTreeWalker* DOMDocumentImpl::createTreeWalker (DOMNode *root, unsigned long whatToShow, DOMNodeFilter* filter, bool entityReferenceExpansion) { if (!root) { diff --git a/src/xercesc/dom/impl/DOMDocumentImpl.hpp b/src/xercesc/dom/impl/DOMDocumentImpl.hpp index c7729b0d02c8fef3309cb052590f9b254d14239d..06f9a0c5a9c6964f08f57380015e98aa2523e9a5 100644 --- a/src/xercesc/dom/impl/DOMDocumentImpl.hpp +++ b/src/xercesc/dom/impl/DOMDocumentImpl.hpp @@ -107,6 +107,8 @@ class DOMRangeImpl; class DOMStringPool; class DOMBuffer; class MemoryManager; +class XPathNSResolver; +class XPathExpression; typedef RefVectorOf<DOMRangeImpl> Ranges; typedef RefVectorOf<DOMNodeIteratorImpl> NodeIterators; @@ -193,6 +195,11 @@ public: virtual void removeRange(DOMRangeImpl* range); //non-standard api virtual void removeNodeIterator(DOMNodeIteratorImpl* nodeIterator); //non-standard api + virtual const DOMXPathExpression* createExpression(const XMLCh *expression, const DOMXPathNSResolver *resolver); + virtual const DOMXPathNSResolver* createNSResolver(DOMNode *nodeResolver); + virtual void* evaluate(const XMLCh *expression, DOMNode *contextNode, const DOMXPathNSResolver *resolver, + unsigned short type, void* result); + // Extension to be called by the Parser DOMEntityReference* createEntityReferenceByParser(const XMLCh * name);