Command xquery


xquery evaluate an XQUERY expression and print the result


xquery [ serialization options ] [options] [-v var value [var value]]


Evaluates an XQuery expression


-f,-file xquery-fileread xquery script from file
-i,-input context use context as the source xml document, otherwise stdin if context is an XML expression which is an item then use it directly as the context item.
-c,-context contextUse context as a literal context
-cf,-context-file fileUse file as the name of an XML file for the context, or "-" for stdin
-q query use argument as xquery-expr
-n do not use a source context
-v if -v is given then the remaining args are treated as name/value pairs and assigned to xquery external variables
-nons Do not import global namespace declarations from the shell environment
-ns prefix=uri Add a predeclared namespace declaration
-s,-stringconvert every node value in the result to a string
-b,-boolDo not output result. Exit with effective boolean value
-baseuri uriSpecify the base uri for the xquery
-noxmlshDo not predeclare the xmlsh namespace for the xmlsh:eval xpath extension function

xquery-expr xquery expression

Supports the standard [ serialization options ]

If no -q or -f is given then the next argument is treated as the xquery expression/script.

-i is depreciated. It is a convenience option that does the following
-c or -cf are suggested which explicitly indicate if to use the expression literally or as a filename

if -b is supplied then no output, instead the return value is 0 if the effective boolean value of the result is true otherwise 1.

if -baseuri is supplied then the arguement is used as a relative or absolute uri. If relative it is relative to the current directory.
If no -baseuri is supplied, then if -f is supplied the absolute path of the script is used as the base uri, otherwise the current directory
is used as the base uri. The base URI is used for all URI resolution in the xquery, including modules and documents.

Not all options are compatible. You cannot read both the query and the context from stdin.
If you supply variables then -q must be supplied.

If the result (or any node of the result if a sequence) is an Attribute, or if the -s option is specified the it is converted to a string.


xls | xquery '//file[1]/@name/string()'


Simplified example, you dont need string()
xls | xquery '//file[1]/@name'


xquery -i <[<foo/>] .


Namespace example using a renamed prefix for a namespace
echo "<x:a xmlns:x='foo' />" | xquery  -nons -ns y=foo /y:a

<x:a xmlns:x="foo"/>

When using large XQuery expressions consider storing the xquery in a file such as
xquery -f query.xquery

Or using the Block Quotes which makes managing the various quote options in XPath and XQuery easier
xquery -n -q <{{
declare variable $A external ;
declare function local:foo( $a ) 
   <node>{ concat("foo",$a,'bar') }</node>

local:foo( $A/spam[2] )
}}>  -v A <[ <elem><spam>text</spam><spam>text2</spam></elem> ]>


Return Value

Returns 0 if the the xquery expression executed successfully. otherwise 1


There are no comments on this page.
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki