org.exist.xmldb
Interface XPathQueryServiceImpl

All Superinterfaces:
Configurable, Service, XPathQueryService
All Known Implementing Classes:
LocalXPathQueryService, RemoteXPathQueryService

public interface XPathQueryServiceImpl
extends XPathQueryService

Extends XPathQueryService by additional methods specific to eXist.

Author:
Wolfgang

Method Summary
 void beginProtected()
          Execute all following queries in a protected environment.
 void declareVariable(String qname, Object initialValue)
          Declare an external XPath variable and assign a value to it.
 void endProtected()
          Close the protected environment.
 ResourceSet executeStoredQuery(String uri)
          Executes a query which is already stored in the database
 ResourceSet query(String query, String sortExpr)
          Process an XPath query and sort the results by applying a second XPath expression to each of the search results.
 ResourceSet query(XMLResource res, String query)
          Process an XPath query based on the result of a previous query.
 ResourceSet query(XMLResource res, String query, String sortExpr)
          Process an XPath query based on the result of a previous query and sort the results using the second XPath expression.
 
Methods inherited from interface org.xmldb.api.modules.XPathQueryService
clearNamespaces, getNamespace, query, queryResource, removeNamespace, setNamespace
 
Methods inherited from interface org.xmldb.api.base.Service
getName, getVersion, setCollection
 
Methods inherited from interface org.xmldb.api.base.Configurable
getProperty, setProperty
 

Method Detail

query

ResourceSet query(XMLResource res,
                  String query)
                  throws XMLDBException
Process an XPath query based on the result of a previous query. The XMLResource contains the result received from a previous query.

Parameters:
res - an XMLResource as obtained from a previous query.
query - the XPath query
Throws:
XMLDBException

query

ResourceSet query(XMLResource res,
                  String query,
                  String sortExpr)
                  throws XMLDBException
Process an XPath query based on the result of a previous query and sort the results using the second XPath expression. The XMLResource contains the result received from a previous query.

Parameters:
res - an XMLResource as obtained from a previous query
query - the XPath query
sortExpr - another XPath expression, which is executed relative to the results of the primary expression. The result of applying sortExpr is converted to a string value, which is then used to sort the results.
Throws:
XMLDBException

query

ResourceSet query(String query,
                  String sortExpr)
                  throws XMLDBException
Process an XPath query and sort the results by applying a second XPath expression to each of the search results. The result of applying the sort expression is converted into a string, which is then used to sort the set of results.

Parameters:
query - the XPath query
sortExpr - another XPath expression, which is executed relative to the results of the primary expression.
Throws:
XMLDBException

executeStoredQuery

ResourceSet executeStoredQuery(String uri)
                               throws XMLDBException
Executes a query which is already stored in the database

Parameters:
uri - The URI of the query in the database
Throws:
XMLDBException

declareVariable

void declareVariable(String qname,
                     Object initialValue)
                     throws XMLDBException
Declare an external XPath variable and assign a value to it. A variable can be referenced inside an XPath expression as $variable. For example, if you declare a variable with
        declareVariable("name", "HAMLET");
 
you may use the variable in an XPath expression as follows:
        //SPEECH[SPEAKER=$name]
 
Any Java object may be passed as initial value. The query engine will try to map this into a corresponding XPath value. You may also pass an XMLResource as obtained from another XPath expression. This will be converted into a node.

Parameters:
qname - a valid QName by which the variable is identified. Any prefix should have been mapped to a namespace, i.e. if a variable is called x:name, there should be a prefix/namespace mapping for the prefix x
initialValue - the initial value, which is assigned to the variable
Throws:
XMLDBException

beginProtected

void beginProtected()
                    throws XMLDBException
Execute all following queries in a protected environment. Acquire a write lock on all resources in the current collection (i.e. the one from which this service was obtained) before executing the query. If a query spans multiple collections, call beginProtected on the outer collection which contains all the other collections. It is thus guaranteed that documents referenced by the query or the result set are not modified by other threads until endProtected() is called.

Throws:
XMLDBException

endProtected

void endProtected()
Close the protected environment. All locks held by the current thread are released. The query result set is no longer guaranteed to be stable. Note: if beginProtected was used, you have to make sure endProtected is called in ALL cases. Otherwise some resource locks may not be released properly.



Copyright (C) The eXist-db Project. All rights reserved.