Xalan-C++ API Reference 1.12.0
XPathEvaluator.hpp
Go to the documentation of this file.
1/*
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 */
18#if !defined(XPATHEVALUATOR_HEADER_GUARD_1357924680)
19#define XPATHEVALUATOR_HEADER_GUARD_1357924680
20
21
22
24
25
26
27#if defined(XALAN_AUTO_PTR_REQUIRES_DEFINITION)
32#endif
33
34
35
37
38
39
41
42
43
44namespace XALAN_CPP_NAMESPACE {
45
46
47
48#if !defined(XALAN_AUTO_PTR_REQUIRES_DEFINITION)
49class XObjectFactory;
50class XPathFactoryDefault;
51class XPathConstructionContextDefault;
52class XPathExecutionContextDefault;
53#endif
54
55
56
57class DOMSupport;
58class NodeRefList;
59class PrefixResolver;
60class XalanNode;
61class XalanElement;
62class XObjectPtr;
63class XPath;
64class XPathEnvSupport;
65class XPathExecutionContext;
66
67
68
70{
71public:
72
73 // Static initializer to be called before any instances are
74 // created. The call is _not_ thread-safe, you must only call
75 // it once, unless you have called terminate previously, and
76 // you want to re-initialize the library.
77 static void
79
80 // Static terminator to be called after all instances
81 // are destroyed. The call is _not_ thread-safe. Once
82 // terminated, you can call initialize() again, to
83 // re-initialize the library.
84 static void
86
87
89
91
92 /**
93 * Evaluate the supplied XPath expression, within the given context. If
94 * the expression doesn't select a node, 0 is returned. If it selects
95 * more than one node, only the first is returned.
96 *
97 * @param domSupport An instance of the corresponding DOMSupport-derived for the DOM implementation being used.
98 * @param contextNode The source tree context node
99 * @param xpathString The XPath expression to evaluate
100 * @param namespaceNode A node to use for namespace prefix resolution.
101 * @return A pointer to the node selected by the expression, if any.
102 */
103 XalanNode*
108 const XalanElement* namespaceNode = 0);
109
110 /**
111 * Evaluate the supplied XPath expression, within the given context. If
112 * the expression doesn't select a node, 0 is returned. If it selects
113 * more than one node, only the first is returned.
114 *
115 * @param domSupport An instance of the corresponding DOMSupport-derived for the DOM implementation being used.
116 * @param contextNode The source tree context node
117 * @param xpathString The XPath expression to evaluate
118 * @param prefixResolver A prefix resolver instance to use for namespace prefix resolution.
119 * @return A pointer to the node selected by the expression, if any.
120 */
121 XalanNode*
127
128 /**
129 * Evaluate the supplied XPath, within the given context. If
130 * the expression doesn't select a node, 0 is returned. If it selects
131 * more than one node, only the first is returned.
132 *
133 * @param domSupport An instance of the corresponding DOMSupport-derived for the DOM implementation being used.
134 * @param contextNode The source tree context node
135 * @param xpath A reference to a compiled XPath expression.
136 * @param namespaceNode A node to use for namespace prefix resolution.
137 * @return A pointer to the node selected by the expression, if any.
138 */
139 XalanNode*
143 const XPath& xpath,
144 const XalanElement* namespaceNode = 0);
145
146 /**
147 * Evaluate the supplied XPath, within the given context. If
148 * the expression doesn't select a node, 0 is returned. If it selects
149 * more than one node, only the first is returned.
150 *
151 * @param domSupport An instance of the corresponding DOMSupport-derived for the DOM implementation being used.
152 * @param contextNode The source tree context node
153 * @param xpath A reference to a compiled XPath expression.
154 * @param prefixResolver A prefix resolver instance to use for namespace prefix resolution.
155 * @return A pointer to the node selected by the expression, if any.
156 */
157 XalanNode*
161 const XPath& xpath,
163
164 /**
165 * Evaluate the supplied XPath expression, within the given context. If
166 * the expression doesn't select a node, an empty list is returned.
167 *
168 * @param domSupport An instance of the corresponding DOMSupport-derived for the DOM implementation being used.
169 * @param contextNode The source tree context node
170 * @param xpathString The XPath expression to evaluate
171 * @param namespaceNode A node to use for namespace prefix resolution.
172 * @return A list of selected nodes.
173 */
180 const XalanElement* namespaceNode = 0);
181
182 /**
183 * Evaluate the supplied XPath expression, within the given context. If
184 * the expression doesn't select a node, an empty list is returned.
185 *
186 * @param domSupport An instance of the corresponding DOMSupport-derived for the DOM implementation being used.
187 * @param contextNode The source tree context node
188 * @param xpathString The XPath expression to evaluate
189 * @param prefixResolver A prefix resolver instance to use for namespace prefix resolution.
190 * @return A list of selected nodes.
191 */
199
200 /**
201 * Evaluate the supplied XPath, within the given context. If
202 * the expression doesn't select a node, an empty list is returned.
203 *
204 * @param domSupport An instance of the corresponding DOMSupport-derived for the DOM implementation being used.
205 * @param contextNode The source tree context node
206 * @param xpath A reference to a compiled XPath expression.
207 * @param namespaceNode A node to use for namespace prefix resolution.
208 * @return A list of selected nodes.
209 */
215 const XPath& xpath,
216 const XalanElement* namespaceNode = 0);
217
218 /**
219 * Evaluate the supplied XPath, within the given context. If
220 * the expression doesn't select a node, an empty list is returned.
221 *
222 * @param domSupport An instance of the corresponding DOMSupport-derived for the DOM implementation being used.
223 * @param contextNode The source tree context node
224 * @param xpath A reference to a compiled XPath expression.
225 * @param prefixResolver A prefix resolver instance to use for namespace prefix resolution.
226 * @return A list of selected nodes.
227 */
233 const XPath& xpath,
235
236 /**
237 * Evaluate the supplied XPath expression, within the given context. The
238 * result is returned as a generalized object. The object will be
239 * destroyed when the user's copy of the returned XObjectPtr goes out of
240 * scope, or when the XPathEvaluator goes out of scope or another expression
241 * is evaluated.
242 *
243 * The user's XObjectPtr copy _must_ no longer be in scope when the XPathEvaluator
244 * instance goes out of scope, or another expression is evaluated.
245 *
246 * @param domSupport An instance of the corresponding DOMSupport-derived for the DOM implementation being used.
247 * @param contextNode The source tree context node
248 * @param xpathString The XPath expression to evaluate
249 * @param namespaceNode A node to use for namespace prefix resolution.
250 * @return The result of evaluting the XPath expression.
251 */
257 const XalanElement* namespaceNode = 0);
258
259 /**
260 * Evaluate the supplied XPath expression, within the given context. The
261 * result is returned as a generalized object. The object will be
262 * destroyed when the user's copy of the returned XObjectPtr goes out of
263 * scope, or when the XPathEvaluator goes out of scope or another expression
264 * is evaluated.
265 *
266 * The user's XObjectPtr copy _must_ no longer be in scope when the XPathEvaluator
267 * instance goes out of scope, or another expression is evaluated.
268 *
269 * @param domSupport An instance of the corresponding DOMSupport-derived for the DOM implementation being used.
270 * @param contextNode The source tree context node
271 * @param xpathString The XPath expression to evaluate
272 * @param prefixResolver A prefix resolver instance to use for namespace prefix resolution.
273 * @return The result of evaluting the XPath expression.
274 */
281
282 /**
283 * Evaluate the supplied XPath expression, within the given context. The
284 * result is returned as a generalized object. The object will be
285 * destroyed when the user's copy of the returned XObjectPtr goes out of
286 * scope, or when the XPathEvaluator goes out of scope or another expression
287 * is evaluated.
288 *
289 * The user's XObjectPtr copy _must_ no longer be in scope when the XPathEvaluator
290 * instance goes out of scope, or another expression is evaluated.
291 *
292 * @param domSupport An instance of the corresponding DOMSupport-derived for the DOM implementation being used.
293 * @param contextNode The source tree context node
294 * @param xpath A reference to a compiled XPath expression.
295 * @param namespaceNode A node to use for namespace prefix resolution.
296 * @return The result of evaluting the XPath expression.
297 */
302 const XPath& xpath,
303 const XalanElement* namespaceNode = 0);
304
305 /**
306 * Evaluate the supplied XPath expression, within the given context. The
307 * result is returned as a generalized object. The object will be
308 * destroyed when the user's copy of the returned XObjectPtr goes out of
309 * scope, or when the XPathEvaluator goes out of scope or another expression
310 * is evaluated.
311 *
312 * The user's XObjectPtr copy _must_ no longer be in scope when the XPathEvaluator
313 * instance goes out of scope, or another expression is evaluated.
314 *
315 * @param domSupport An instance of the corresponding DOMSupport-derived for the DOM implementation being used.
316 * @param contextNode The source tree context node
317 * @param xpath A reference to a compiled XPath expression.
318 * @param prefixResolver A prefix resolver instance to use for namespace prefix resolution.
319 * @return The result of evaluting the XPath expression.
320 */
325 const XPath& xpath,
327
328 /**
329 * Compile an XPath expression into an object which can be used multiple times.
330 * Call destroyXPath() when finished with the instance. Otherwise, the object
331 * will be destroyed when the XPathEvaluator instance goes out of scope. Since
332 * no PrefixResolver is supplied, the XPath expression may not contain any
333 * namespace prefixes.
334 *
335 * @param xpathString The XPath expression to evaluate
336 * @return A pointer to an XPath instance.
337 */
338 XPath*
340
341 /**
342 * Compile an XPath expression into an object which can be used multiple times.
343 * Call destroyXPath() when finished with the instance. Otherwise, the object
344 * will be destroyed when the XPathEvaluator instance goes out of scope.
345 *
346 * @param xpathString The XPath expression to evaluate
347 * @param domSupport An instance of the corresponding DOMSupport-derived for the DOM implementation being used.
348 * @param namespaceNode A node to use for namespace prefix resolution.
349 * @return A pointer to an XPath instance.
350 */
351 XPath*
356
357 /**
358 * Compile an XPath expression into an object which can be used multiple times.
359 * Call destroyXPath() when finished with the instance. Otherwise, the object
360 * will be destroyed when the XPathEvaluator instance goes out of scope.
361 *
362 * @param xpathString The XPath expression to evaluate
363 * @param prefixResolver A prefix resolver instance to use for namespace prefix resolution.
364 * @return A pointer to an XPath instance.
365 */
366 XPath*
370
371 /**
372 * Destory a compiled XPath instance. The instance must have
373 * been created using createXPath().
374 *
375 * @param theXPath The XPath instance to destroy
376 * @return true if the instance was successfully destroyed
377 */
378 bool
380
383
384private:
385
386 /**
387 * A helper function to evaluate the supplied XPath expression, within
388 * the given context.
389 *
390 * @param domSupport An instance of the corresponding DOMSupport-derived for the DOM implementation being used.
391 * @param contextNode The source tree context node
392 * @param xpathString The XPath expression to evaluate
393 * @param prefixResolver A prefix resolver instance to use for namespace prefix resolution.
394 * @param envSupport The XPathEnvSupport instance to use.
395 * @return The result of evaluting the XPath expression.
396 */
398 evaluate(
404
405 /**
406 * A helper function to evaluate the supplied XPath expression, within
407 * the given context.
408 *
409 * @param domSupport An instance of the corresponding DOMSupport-derived for the DOM implementation being used.
410 * @param contextNode The source tree context node
411 * @param xpath The XPath to evaluate
412 * @param prefixResolver A prefix resolver instance to use for namespace prefix resolution.
413 * @param envSupport The XPathEnvSupport instance to use.
414 * @return The result of evaluting the XPath expression.
415 */
417 evaluate(
420 const XPath& xpath,
423
424 // Data members...
425 const XalanMemMgrAutoPtr<XObjectFactory> m_xobjectFactory;
426
427 const XalanMemMgrAutoPtr<XPathFactoryDefault> m_xpathFactory;
428
429 const XalanMemMgrAutoPtr<XPathConstructionContextDefault> m_constructionContext;
430
432
433 MemoryManager& m_memoryManager;
434};
435
436
437
438}
439
440
441
442#endif // XPATHEVALUATOR_HEADER_GUARD_1357924680
#define XALAN_XPATH_EXPORT
#define XALAN_DEFAULT_MEMMGR
#define XALAN_CPP_NAMESPACE
Xalan-C++ namespace, including major and minor version.
Local implementation of NodeRefList.
This class defines an interface for classes that resolve namespace prefixes to their URIs.
Class to hold XObjectPtr return types.
Definition XObject.hpp:884
XObjectPtr evaluate(DOMSupport &domSupport, XalanNode *contextNode, const XPath &xpath, const PrefixResolver &prefixResolver)
Evaluate the supplied XPath expression, within the given context.
XPath * createXPath(const XalanDOMChar *xpathString, const PrefixResolver &prefixResolver)
Compile an XPath expression into an object which can be used multiple times.
XPathEvaluator(MemoryManager &theManager XALAN_DEFAULT_MEMMGR)
NodeRefList & selectNodeList(NodeRefList &result, DOMSupport &domSupport, XalanNode *contextNode, const XalanDOMChar *xpathString, const XalanElement *namespaceNode=0)
Evaluate the supplied XPath expression, within the given context.
XObjectPtr evaluate(DOMSupport &domSupport, XalanNode *contextNode, const XalanDOMChar *xpathString, const PrefixResolver &prefixResolver)
Evaluate the supplied XPath expression, within the given context.
NodeRefList & selectNodeList(NodeRefList &result, DOMSupport &domSupport, XalanNode *contextNode, const XPath &xpath, const XalanElement *namespaceNode=0)
Evaluate the supplied XPath, within the given context.
XPath * createXPath(const XalanDOMChar *xpathString, DOMSupport &domSupport, const XalanElement *namespaceNode)
Compile an XPath expression into an object which can be used multiple times.
XObjectPtr evaluate(DOMSupport &domSupport, XalanNode *contextNode, const XPath &xpath, const XalanElement *namespaceNode=0)
Evaluate the supplied XPath expression, within the given context.
XalanNode * selectSingleNode(DOMSupport &domSupport, XalanNode *contextNode, const XPath &xpath, const XalanElement *namespaceNode=0)
Evaluate the supplied XPath, within the given context.
XPathExecutionContext & getExecutionContext()
XalanNode * selectSingleNode(DOMSupport &domSupport, XalanNode *contextNode, const XPath &xpath, const PrefixResolver &prefixResolver)
Evaluate the supplied XPath, within the given context.
static void initialize(MemoryManager &theManager XALAN_DEFAULT_MEMMGR)
XObjectPtr evaluate(DOMSupport &domSupport, XalanNode *contextNode, const XalanDOMChar *xpathString, const XalanElement *namespaceNode=0)
Evaluate the supplied XPath expression, within the given context.
NodeRefList & selectNodeList(NodeRefList &result, DOMSupport &domSupport, XalanNode *contextNode, const XPath &xpath, const PrefixResolver &prefixResolver)
Evaluate the supplied XPath, within the given context.
XalanNode * selectSingleNode(DOMSupport &domSupport, XalanNode *contextNode, const XalanDOMChar *xpathString, const XalanElement *namespaceNode=0)
Evaluate the supplied XPath expression, within the given context.
static void terminate()
XalanNode * selectSingleNode(DOMSupport &domSupport, XalanNode *contextNode, const XalanDOMChar *xpathString, const PrefixResolver &prefixResolver)
Evaluate the supplied XPath expression, within the given context.
NodeRefList & selectNodeList(NodeRefList &result, DOMSupport &domSupport, XalanNode *contextNode, const XalanDOMChar *xpathString, const PrefixResolver &prefixResolver)
Evaluate the supplied XPath expression, within the given context.
XPath * createXPath(const XalanDOMChar *xpathString)
Compile an XPath expression into an object which can be used multiple times.
bool destroyXPath(XPath *theXPath)
Destory a compiled XPath instance.