query(3)

NAME

XML::XQL::Query - Creates an XQL query evaluater from a
XQL expression

SYNOPSIS

use XML::XQL;
use XML::XQL::DOM;
$parser = new XML::DOM::Parser;
$doc = $parser->parsefile ("file.xml");
# Return all elements with tagName='title' under the root
element 'book'
$query = new XML::XQL::Query (Expr => "book/title");
@result = $query->solve ($doc);
# Or (to save some typing)
@result = XML::XQL::solve ("book/title", $doc);

DESCRIPTION

To perform XQL queries on an XML::DOM document (or, in the
future, on other XML storage structures), you first have
to create an XML::XQL::Query object and pass it a valid
XQL query expression. You can then perform queries on one
or more documents by calling the solve() method.

XML::XQL::Query constructor

Usage, e.g:
$query = new XML::XQL::Query(
Expr => "book/author",
Func => [ myfunc => my_func, # define 2
functions
myfunc2 => my_func2 ],
FuncArgCount => [ myfunc2 => [2, -1] ], # myfunc2
has 2 or more args
AllowedOutSideSubquery => [ myfunc => 1 ],
ConstFunc => [ myfunc2 => 1],
CompareOper => [ mycmp => mycmp ], # define
comparison operator
q => "str"); # use
str// as string delim
Expr => STRING
The query expression to be evaluated.
NodeQuery => BOOLEAN
If set to 1, the query is a Node Query as opposed to a Full Query (which is the default.) A node query is a query that is only capable of returning Nodes. A full
query is capable of returning Node values and non-Node
values. Non-Node values include XML Primitives, ele
ment type names, namespace URI's, concatenated text
nodes, and node type names. The distinction is signif
icant because node queries may appear as XSL match and
select patterns, while full queries have use in other
applications. The difference between the two forms of
queries is trivial and exists only as constraints on
the syntax of node queries. Node queries may contain
nested full queries.
Func => [ FUNCNAME => FUNCREF, ...]
Defines one or more functions. FUNCNAME is the name as
used in the query expression. FUNCREF can be either a
function reference like my_func or an anonymous sub.
See also: defineFunction
Method => [ FUNCNAME => FUNCREF, ...]
Defines one or more methods. FUNCNAME is the name as
used in the query expression. FUNCREF can be either a
function reference like my_func or an anonymous sub.
See also: defineMethod
FuncArgCount => [ FUNCNAME => ARGCOUNT, ...]
Defines the number of arguments for one or more func
tions or methods. FUNCNAME is the name as used in the
query expression. See also: defineFunction and
defineMethod
AllowedOutsideSubquery => [ FUNCNAME => BOOLEAN, ...]
Defines whether the specified function or method is
allowed outside subqueries. FUNCNAME is the name as
used in the query expression. See also: defineFunc
tion and defineMethod
ConstFunc => [ FUNCNAME => BOOLEAN, ...]
Defines whether the function (not method!) is a "con
stant" function. FUNCNAME is the name as used in the
query expression. See "Constant Function Invocations"
for a definition of "constant" See also: defineFunc
tion and defineMethod
CompareOper => [ OPERNAME => FUNCREF, ...]
Defines the comparison operator with the specified
OPERNAME, e.g. if OPERNAME is "contains", you can use
"$contains$" in the query. See also: defineCompar
isonOperators
q => TOKEN
Defines the q// token. See also: defineTokenQ
qq => TOKEN
Defines the qq// token. See also: defineTokenQQ
Error => FUNCREF
Defines the function that is called when errors occur
during parsing the query expression. The default func
tion prints an error message to STDERR.
Debug => FLAGS
Sets the debug level for the Yapp parser that parses
the query expression. Default value is 0 (don't print
anything). The maximum value is 0x17, which prints a
lot of stuff. See the Parse::Yapp manpage for the
meaning of the individual bits.
Reserved hash keys
Users may add their own (key, value) pairs to the
Query constructor. Beware that the key 'Tree' is used
internally.

XML::XQL::Query methods

solve (INPUT_LIST...)
Note that solve takes a list of nodes which are
assumed to be in document order and must belong to the
same document. E.g:

$query = new XML::XQL::Query (Expr => "doc//book");
@result = $query->solve ($doc);
@result2 = $query->solve ($node1, $node2, $node3);
The following functions are also available at the query
level, i.e. when called on a Query object they only affect
this Query and no others:

defineFunction, defineMethod, defineComparisonOperators,
defineTokenQ, defineTokenQQ
See Global functions for details. Another way to define
these features for a particular Query is by passing the
appropriate values to the XML::XQL::Query constructor.

SEE ALSO

XML::XQL for general information about the XML::XQL module

XML::XQL::Tutorial which describes the XQL syntax
Copyright © 2010-2025 Platon Technologies, s.r.o.           Home | Man pages | tLDP | Documents | Utilities | About
Design by styleshout