ÍøÂçѧԺ w3popÉçÇø ÍøÂç×ÊÔ´ ITÐÂÎÅ

w3pop.com :: ÍøÂçѧԺ :: Xquery :: XQuery º¯Êý

»áÔ±µÇ½

ÕʺÅ

ÃÜÂë

»Ø´ð

¼ÇסÃÜÂë

Íü¼ÇÃÜÂë? ×¢²á

Xquery
XQuery ½éÉÜ
XQuery ʵÀý
XQuery FLWOR ±í´..
XQuery FLWOR + H..
XQuery ÊõÓï
XQuery Óï·¨
XQuery Ìí¼ÓÔªËØº..
XQuery Ñ¡ÔñºÍ¹ýÂ..
XQuery º¯Êý
XQuery ÕªÒª
XQuery ²Î¿¼

XQuery º¯Êý


×÷Õß:w3pop.com ·­Òë/ÕûÀí:w3pop.com ·¢²¼:2007-04-29 ÐÞ¸Ä:2007-08-22 ä¯ÀÀ:2618 :: ::

XQuery 1.0, XPath 2.0, and XSLT 2.0 share the same functions library.
XQuery 1.0¡¢XPath 2.0 ºÍ XSLT 2.0 °üº¬ÏàͬµÄº¯Êý¿â¡£


XQuery Functions
XQuery º¯Êý

XQuery includes over 100 built-in functions. There are functions for string values, numeric values, date and time comparison, node and QName manipulation, sequence manipulation, Boolean values, and more. You can also define your own functions in XQuery.
XQuery °üÀ¨³¬¹ý100¸öÄÚÖú¯Êý£¬¾ßÌåÈçÏ£º×Ö·û´®Öµ¡¢ÊýÖµ¡¢ÈÕÆÚʱ¼äÖµ¡¢½ÚµãÒÔ¼°QName²Ù×÷¡¢ÅÅÐò²Ù×÷¡¢Âß¼­ÖµµÈº¯Êý¡£ÄãÒ²¿ÉÒÔÔÚXQueryÄÚ¶¨Òå×Ô¼ºµÄº¯Êý¡£

XQuery Built-in Functions
XQuery ÄÚÖú¯Êý

The URI of the XQuery function namespace is:
http://www.w3.org/2005/02/xpath-functions

XQueryº¯ÊýÃû³Æ¿Õ¼ä£¨namespaces£©µÄURIÊÇ£º
http://www.w3.org/2005/02/xpath-functions

The default prefix for the function namespace is fn:.
ĬÈϵĺ¯ÊýÃüÃû¿Õ¼äǰ׺ÊÇfn:.

Tip: Functions are often called with the fn: prefix, such as fn:string(). However, since fn: is the default prefix of the namespace, the function names do not need to be prefixed when called.
Ìáʾ£ºº¯Êý³£³£ÒÔ“fn:”Ϊǰ׺Ãûµ÷Óã¬ÀýÈçfn:string()£»È»¶ø£¬ÒòΪfn:ÊÇÃüÃû¿Õ¼äµÄĬÈÏǰ׺£¬ËùÒÔÕâ¸öº¯ÊýµÄÃû³Æ²¢²»ÐèҪͨ¹ýǰ׺ÃûÀ´µ÷Óá£

The reference of all the built-in XQuery 1.0 functions is located in our XPath tutorial.
XQuery 1.0ÄÚÖú¯Êý²Î¿¼¡£


Examples of Function Calls
º¯Êýµ÷ÓÃʵÀý

A call to a function can appear where an expression may appear. Look at the examples below:
º¯Êýµ÷ÓÿÉÒÔ³öÏÖÔÚÒ»¸ö±í´ïʽÖÐËùÓпÉÄܳöÏֵĵط½£¬¿´ÏÂÃæµÄ°¸Àý£º

Example 1: In an element
Àý1£ºÔÚÒ»¸öÔªËØÖУº

<name>{uppercase($booktitle)}</name>

Example 2: In the predicate of a path expression
Àý2£ºÔÚ·¾¶±í´ïµÄÌõ¼þνÓïÏîÖУº

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

Example 3: In a let clause
Àý3£ºÔÚlet×Ó¾äÖУº

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

 


XQuery User-Defined Functions
XQuery Óû§×Ô¶¨Ò庯Êý

If you cannot find the XQuery function you need, you can write your own.
Èç¹ûÄãÕÒ²»µ½ÐèҪʹÓõÄXQueryº¯Êý£¬Äã¿ÉÒÔ×Ô¼ºÊéд¡£

User-defined functions can be defined in the query or in a separate library.
Óû§×Ô¶¨Ò庯Êý¿ÉÒÔÔÚ²éѯÓï¾ä»ò¶ÀÁ¢¿âÖнøÐж¨Òå¡£

Syntax
Óï·¨

declare function prefix:function_name($parameter AS datatype)
AS returnDatatype
{
(: ...function code here... :)
};

Notes on user-defined functions:
Óû§×Ô¶¨Ò庯ÊýÐèҪעÒâÒÔϼ¸µã£º

  • Use the declare function keyword
    ʹÓà “declare function£¨º¯ÊýÉùÃ÷£©” ¹Ø¼ü´Ê
  • The name of the function must be prefixed
    º¯ÊýÃû³ÆÒª±ØÐë°üº¬Ç°×º
  • The data type of the parameters are mostly the same as the data types defined in XML Schema
    ²ÎÊýµÄÊý¾ÝÀàÐÍÒªºÍÔÚXML SchemaÖж¨ÒåµÄÊý¾ÝÀàÐÍ»ù±¾Ò»ÖÂ
  • The body of the function must be surrounded by curly braces
    º¯ÊýµÄÖ÷Ì岿·Ö±ØÐëÔÚÔ²À¨ºÅÄÚÊéд

Example of a User-defined Function Declared in the Query
ÔÚ²éѯÓï¾äÀïÉùÃ÷µÄÓû§×Ô¶¨Ò庯Êý°¸Àý

declare function local:minPrice(
$price as xs:decimal?,
$discount as xs:decimal?)
AS xs:decimal?
{
let $disc := ($price * $discount) div 100
return ($price - $disc)
};
(: Below is an example of how to call the function above :)
<minPrice>{local:minPrice($book/price, $book/discount)}</minPrice>

ÆÀÂÛ (0) All