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 Schema Öж¨ÒåµÄÊý¾ÝÀàÐÍÒ»ÖÂ
- º¯ÊýÖ÷ÌåÐë±»»¨À¨ºÅ°üΧ
Ò»¸öÔÚ²éѯÖÐÉùÃ÷µÄÓû§×Ô¶¨Ò庯ÊýµÄÀý×Ó£º
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>