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>
VUE