XQuery ఫంక్షన్స్

XQuery 1.0、XPath 2.0 以及 XSLT 2.0 共享相同的函数库。

XQuery ఫంక్షన్స్

XQuery 含有超过 100 个内建的函数。这些函数可用于字符串值、数值、日期以及时间比较、节点和 QName 操作、序列操作、逻辑值等等。您也可在 XQuery 中定义自己的函数。

XQuery 内建函数

XQuery 函数命名空间的 URI:

http://www.w3.org/2005/02/xpath-functions

函数命名空间的默认前缀是 fn:。

提示:函数经常被通过 fn: 前缀进行调用,例如 fn:string()。不过,由于 fn: 是命名空间的默认前缀,所以函数名称不必在被调用时使用前缀。

您可以在我们的 XPath 教程中找到完整的《内建 XQuery 函数参考手册》。

函数调用实例

函数调用可与表达式一同使用。请看下面的例子:

例1:在元素中

<name>{upper-case($booktitle)}</name>

例2: 在路径表达式的谓语中

doc("books.xml")/bookstore/book[substring(title,1,5)='Harry'

例3: 在 let 语句中

let $name := (substring($booktitle,1,4))

XQuery 用户定义函数

如果找不到所需的 XQuery 函数,你可以编写自己的函数。

క్వరీలో లేదా స్వతంత్ర లైబ్రరీలో వినియోగదారి నిర్మిత ఫంక్షన్స్ నిర్వచించబడవచ్చు.

సింతాక్స్

declare function ప్రిఫిక్స్:ఫంక్షన్నామం($పారామీటర్ AS డేటా టైప్)
  AS రిటర్న్ డేటా టైప్
{
(: ...ఫంక్షన్ కోడ్... :)
;

వినియోగదారి నిర్మిత ఫంక్షన్స్ గురించి గమనికలు:

  • దయచేసి declare function కీలకపదాన్ని ఉపయోగించండి
  • ఫంక్షన్ పేరు ప్రిఫిక్స్ ఉపయోగించబడింది
  • పారామీటర్ యొక్క డేటా టైప్స్ సాధారణంగా XML షేమాలో నిర్వచించబడిన డేటా టైప్స్ తో సమానంగా ఉంటాయి
  • ఫంక్షన్ ప్రాథమికం హోమ్ గర్ల్స్ అండర్ బ్రాకెట్స్ చుట్టబడి ఉంటుంది

ఒక క్వరీలో ప్రకటించబడిన వినియోగదారి నిర్మిత ఫంక్షన్ ఉదాహరణ:

declare function local:minPrice(
  $price as xs:decimal?,
  $discount as xs:decimal?
  AS xs:decimal?
{
let $disc := ($price * $discount) div 100;
return ($price - $disc);
;
(పైన ఫంక్షన్ యొక్క ఉదాహరణ ఇక్కడ ఉంది :)
<minPrice>{local:minPrice($book/price, $book/discount)}</minPrice>