<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head profile="http://internetalchemy.org/2003/02/profile"> <link rel="foaf" type="application/rdf+xml" title="FOAF" href="http://www.openlinksw.com/dataspace/uda/about.rdf" /> <link rel="schema.dc" href="http://purl.org/dc/elements/1.1/" /> <meta name="dc.title" content="Function: processXQuery - Virtuoso Functions Guide" /> <meta name="dc.subject" content="Function: processXQuery - Virtuoso Functions Guide" /> <meta name="dc.creator" content="OpenLink Software Documentation Team ; " /> <meta name="dc.copyright" content="OpenLink Software, 1999 - 2009" /> <link rel="top" href="index.html" title="OpenLink Virtuoso Universal Server: Documentation" /> <link rel="search" href="/doc/adv_search.vspx" title="Search OpenLink Virtuoso Universal Server: Documentation" /> <link rel="parent" href="functions.html" title="Chapter Contents" /> <link rel="prev" href="appendixa.html" title="Appendix" /> <link rel="next" href="functions.html#.html" title="" /> <link rel="shortcut icon" href="../images/misc/favicon.ico" type="image/x-icon" /> <link rel="stylesheet" type="text/css" href="doc.css" /> <link rel="stylesheet" type="text/css" href="/doc/translation.css" /> <title>Function: processXQuery - Virtuoso Functions Guide</title> <meta http-equiv="Content-Type" content="text/xhtml; charset=UTF-8" /> <meta name="author" content="OpenLink Software Documentation Team ; " /> <meta name="copyright" content="OpenLink Software, 1999 - 2009" /> <meta name="keywords" content="" /> <meta name="GENERATOR" content="OpenLink XSLT Team" /> </head> <body> <div id="header"> <a name="xpf_processXQuery" /> <img src="../images/misc/logo.jpg" alt="" /> <h1>22. Virtuoso Functions Guide - processXQuery</h1> </div> <div id="navbartop"> <div> <a class="link" href="functions.html">Chapter Contents</a> | <a class="link" href="xpf_position.html" title="position">Prev</a> | <a class="link" href="xpf_processXSLT.html" title="processXSLT">Next</a> </div> </div> <div id="currenttoc"> <form method="post" action="/doc/adv_search.vspx"> <div class="search">Keyword Search: <br /> <input type="text" name="q" /> <input type="submit" name="go" value="Go" /> </div> </form> <div> <a href="http://www.openlinksw.com/">www.openlinksw.com</a> </div> <div> <a href="http://docs.openlinksw.com/">docs.openlinksw.com</a> </div> <br /> <div> <a href="index.html">Book Home</a> </div> <br /> <div> <a href="contents.html">Contents</a> </div> <div> <a href="preface.html">Preface</a> </div> <br /> <div> <a class="selected" href="functions.html">Virtuoso Functions Guide</a> </div> <br /> <div> <a href="functions.html#admin">Administration</a> </div> <div> <a href="functions.html#aggr">Aggregate Functions</a> </div> <div> <a href="functions.html#array">Array Manipulation</a> </div> <div> <a href="functions.html#bpel">BPEL APIs</a> </div> <div> <a href="functions.html#backup">Backup</a> </div> <div> <a href="functions.html#compression">Compression</a> </div> <div> <a href="functions.html#cursors">Cursor</a> </div> <div> <a href="functions.html#time">Date & Time Manipulation</a> </div> <div> <a href="functions.html#debug">Debug</a> </div> <div> <a href="functions.html#dict">Dictionary Manipulation</a> </div> <div> <a href="functions.html#encoding">Encoding & Decoding</a> </div> <div> <a href="functions.html#file">File Manipulation</a> </div> <div> <a href="functions.html#ft">Free Text</a> </div> <div> <a href="functions.html#hash">Hashing / Cryptographic</a> </div> <div> <a href="functions.html#ldap">LDAP</a> </div> <div> <a href="functions.html#localization">Locale</a> </div> <div> <a href="functions.html#mail">Mail</a> </div> <div> <a href="functions.html#misc">Miscellaneous</a> </div> <div> <a href="functions.html#number">Number</a> </div> <div> <a href="functions.html#phrz">Phrases</a> </div> <div> <a href="functions.html#rdf">RDF data</a> </div> <div> <a href="functions.html#rmt">Remote SQL Data Source</a> </div> <div> <a href="functions.html#repl">Replication</a> </div> <div> <a href="functions.html#soap">SOAP</a> </div> <div> <a href="functions.html#sql">SQL</a> </div> <div> <a href="functions.html#string">String</a> </div> <div> <a href="functions.html#txn">Transaction</a> </div> <div> <a href="functions.html#type">Type Mapping</a> </div> <div> <a href="functions.html#uddi">UDDI</a> </div> <div> <a href="functions.html#udt">User Defined Types & The CLR</a> </div> <div> <a href="functions.html#vad">VAD</a> </div> <div> <a href="functions.html#jvmpl">Virtuoso Java PL API</a> </div> <div> <a href="functions.html#bif">Virtuoso Server Extension Interface (VSEI)</a> </div> <div> <a href="functions.html#ws">Web & Internet</a> </div> <div> <a href="functions.html#xml">XML</a> </div> <div> <a class="selected" href="functions.html#XPATH">XPATH & XQUERY</a> </div> <div class="selected"> <div> <a href="xpf_and.html">and</a> </div> <div> <a href="xpf_append.html">append</a> </div> <div> <a href="xpf_assign.html">assign</a> </div> <div> <a href="xpf_avg.html">avg</a> </div> <div> <a href="xpf_boolean.html">boolean</a> </div> <div> <a href="xpf_ceiling.html">ceiling</a> </div> <div> <a href="xpf_concat.html">concat</a> </div> <div> <a href="xpf_contains.html">contains</a> </div> <div> <a href="xpf_count.html">count</a> </div> <div> <a href="xpf_create_attribute.html">create-attribute</a> </div> <div> <a href="xpf_create_comment.html">create-comment</a> </div> <div> <a href="xpf_create_element.html">create-element</a> </div> <div> <a href="xpf_create_pi.html">create-pi</a> </div> <div> <a href="xpf_current.html">current</a> </div> <div> <a href="xpf_distinct.html">distinct</a> </div> <div> <a href="xpf_doc.html">doc</a> </div> <div> <a href="xpf_document.html">document</a> </div> <div> <a href="xpf_document_literal.html">document-literal</a> </div> <div> <a href="xpf_empty.html">empty</a> </div> <div> <a href="xpf_ends_with.html">ends-with</a> </div> <div> <a href="xpf_every.html">every</a> </div> <div> <a href="xpf_except.html">except</a> </div> <div> <a href="xpf_false.html">false</a> </div> <div> <a href="xpf_filter.html">filter</a> </div> <div> <a href="xpf_floor.html">floor</a> </div> <div> <a href="xpf_collection.html">fn:collection</a> </div> <div> <a href="xpf_for.html">for</a> </div> <div> <a href="xpf_format_number.html">format-number</a> </div> <div> <a href="xpf_function_available.html">function-available</a> </div> <div> <a href="xpf_generate_id.html">generate-id</a> </div> <div> <a href="xpf_id.html">id</a> </div> <div> <a href="xpf_if.html">if</a> </div> <div> <a href="xpf_intersect.html">intersect</a> </div> <div> <a href="xpf_is_after.html">is_after()</a> </div> <div> <a href="xpf_is_before.html">is_before()</a> </div> <div> <a href="xpf_key.html">key</a> </div> <div> <a href="xpf_lang.html">lang</a> </div> <div> <a href="xpf_last.html">last</a> </div> <div> <a href="xpf_let.html">let</a> </div> <div> <a href="xpf_list.html">list()</a> </div> <div> <a href="xpf_local_name.html">local-name</a> </div> <div> <a href="xpf_max.html">max</a> </div> <div> <a href="xpf_min.html">min</a> </div> <div> <a href="xpf_name.html">name</a> </div> <div> <a href="xpf_namespace_uri.html">namespace-uri</a> </div> <div> <a href="xpf_normalize_space.html">normalize-space</a> </div> <div> <a href="xpf_not.html">not</a> </div> <div> <a href="xpf_number.html">number</a> </div> <div> <a href="xpf_or.html">or</a> </div> <div> <a href="xpf_position.html">position</a> </div> <div> <a class="selected" href="xpf_processXQuery.html">processxquery</a> </div> <div> <a href="xpf_processXSLT.html">processxslt</a> </div> <div> <a href="xpf_processXSQL.html">processxsql</a> </div> <div> <a href="xpf_progn.html">progn()</a> </div> <div> <a href="xpf_replace.html">replace()</a> </div> <div> <a href="xpf_round.html">round</a> </div> <div> <a href="xpf_serialize.html">serialize</a> </div> <div> <a href="xpf_shallow.html">shallow</a> </div> <div> <a href="xpf_some.html">some</a> </div> <div> <a href="xpf_starts_with.html">starts-with</a> </div> <div> <a href="xpf_string.html">string</a> </div> <div> <a href="xpf_string_length.html">string-length</a> </div> <div> <a href="xpf_substring.html">substring</a> </div> <div> <a href="xpf_substring_after.html">substring-after</a> </div> <div> <a href="xpf_substring_before.html">substring-before</a> </div> <div> <a href="xpf_sum.html">sum</a> </div> <div> <a href="xpf_system_property.html">system-property</a> </div> <div> <a href="xpf_text_contains.html">text_contains()</a> </div> <div> <a href="xpf_translate.html">translate</a> </div> <div> <a href="xpf_true.html">true</a> </div> <div> <a href="xpf_tuple.html">tuple()</a> </div> <div> <a href="xpf_union.html">union</a> </div> <div> <a href="xpf_unordered.html">unordered</a> </div> <div> <a href="xpf_unparsed_entity_uri.html">unparsed-entity-uri</a> </div> <div> <a href="xpf_urlify.html">urlify</a> </div> <div> <a href="xpf_xmlview.html">xmlview</a> </div> </div> <br /> <div> <a href="functionidx.html">Functions Index</a> </div> <br /> </div> <div id="text"> <h2>processXQuery</h2> <div class="refpurpose">Calls an XQuery module from XPath expression, e.g. from some XSLT or BPEL code.</div> <div class="funcsynopsis"> <span class="funcdef">any <span class="function">processXQuery</span> </span> (<span class="paramdef"> <span class="parameter">module_uri</span> string</span>, <span class="paramdefoptional">[<span class="optional">context</span> entity]</span>, <span class="paramdefoptional">[<span class="optional">index</span> integer]</span>, <span class="paramdefoptional">[<span class="optional">param1_name</span> string]</span>, <span class="paramdefoptional">[<span class="optional">param1_value</span> any]</span>, ... <span class="paramdefoptional">[<span class="optional">paramN_name</span> string]</span>, <span class="paramdefoptional">[<span class="optional">paramN_value</span> any]</span>); </div> <div class="refsect1"> <div class="refsect1title">Description</div> <p> This function takes a URI of an XQuery module and an XML entity and calls the module with the entity as a context. Depending on value of <span class="computeroutput">index</span> parameter, either the result of the module is returned 'as is' or the sequence of results is returned. </p> <p> Parameters can be passed to the module by specifying additional arguments to <span class="computeroutput">processXQuery()</span>. The names of parameters should appear in argument list without the leading '$' sign. Unlike <a href="fn_xquery_eval.html">xquery_eval()</a> function, parameter can not be ignored depending on the type of its value. If the same name appears more than once in the vector, the last name/value pair is used and all preceding pairs with this name are silently ignored. Obviously, names should be strings that are valid XPath variable names. </p> <p> The XQuery standard does not offer a way of calling of a module from other XQuery expression. The reason is that there's no need for such calling if the code is designed properly. If an expression is re-used in various places then it should be turned into a function and placed into an XQuery library module; one should import the module and call the function instead of calling a non-library module. It is possible to use <span class="computeroutput">processXQuery()</span> in XQuery expressions but it is much better to use library modules instead, and to use <span class="computeroutput">processXQuery()</span> only for tricks in XPATH expressions. </p> <p> For compatibility, the <span class="computeroutput">processXQuery()</span> function can also be called as <span class="computeroutput">http://schemas.oracle.com/xpath/extension:processXQuery()</span>. </p> </div> <div class="refsect1"> <div class="refsect1title">Parameters</div> <div class="refsect2"> <span class="refsect2title">module_uri – </span> URI pointing to the location of an XQuery module. It can be absolute or relative. A relative module_uri should be resolved before use, this requires base URI information. Base URI can be declared explicitly by "__base_uri" parameter in XPATH or "declare base-uri" setter in XQuery. If not declared but the expression is a part of some stylesheet or XQuery module then the URI of module is used as a base URI. A run-time error is signalled if the URI is relative and the expression does not contain explicit declaration and the expression is neither in a stylesheet nor in a module. </div> <div class="refsect2"> <span class="refsect2title">index – </span> Result index. If omitted a value of 1 is assumed, meaning only the first result is returned. If a value of 0 is supplied then a (flatten) sequence of all results is returned. (Note that if a non-zero value is specified then the returned value still can be a sequence). </div> <div class="refsect2"> <span class="refsect2title">context – </span> XML entity that is the context node of module call. If the function is called with only one argument then the current context node of the <span class="computeroutput">processXQuery()</span> call is used as a context of module call. (In any case, context size and context position of module call are always set to 1 and not inherited from call of <span class="computeroutput">processXQuery()</span>.) </div> <div class="refsect2"> <span class="refsect2title">paramI_name – </span> Name of parameter to be passed to the XSLT engine for use in the transformation.</div> <div class="refsect2"> <span class="refsect2title">paramI_value – </span> Value of parameter with name specified by <span class="computeroutput">paramI_name</span>.</div> </div> <div class="refsect1"> <div class="refsect1title">Return Types</div> <p>The type of return value depends on type of value returned by module.</p> </div> <div class="refsect1"> <div class="refsect1title">Examples</div> <a name="xpf_ex_processXQuery" /> <div class="example"> <div class="exampletitle">Call of XQuery in XSLT</div> <p>Sample templates put the result of the call of module "mymodule.xq" for context node into the resulting document. This assumes that both the stylesheet and XQuery module "mymodule.xq" reside in the same directory so relative a URI "mymodule.xq" can be resolved using the URI of the stylesheet as base URI. </p> <div> <pre class="screen"> <xsl:template match="myelement"> <xsl:copy-of select="processXQuery('mymodule.xq')"/> </xsl:template> </pre> </div> <p>This is equivalent with the following template: </p> <div> <pre class="screen"> <xsl:template match="myelement"> <xsl:copy-of select="processXQuery('mymodule.xq', current(), 1)"/> </xsl:template> </pre> </div> </div> </div> <div class="refsect1"> <div class="refsect1title">See Also</div> <p> <a href="fn_xquery_eval.html">xquery_eval()</a> </p> <p> <a href="xpf_processXSLT.html">processXSLT()</a> </p> <p> <a href="xpf_processXSQL.html">processXSQL()</a> </p> </div> </div> <div id="footer"> <div>Copyright© 1999 - 2009 OpenLink Software All rights reserved.</div> <div id="validation"> <a href="http://validator.w3.org/check/referer"> <img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /> </a> <a href="http://jigsaw.w3.org/css-validator/"> <img src="http://jigsaw.w3.org/css-validator/images/vcss" alt="Valid CSS!" height="31" width="88" /> </a> </div> </div> </body> </html>