日期:2014-05-16  浏览次数:20416 次

XQuery笔记(三)-- 其它语法

?

一些基本的语法规则:

  • XQuery 对大小写敏感
  • XQuery 的元素、属性以及变量必须是合法的 XML 名称。
  • XQuery 字符串值可使用单引号或双引号。
  • XQuery 变量由 “$” 并跟随一个名称来进行定义,举例,$bookstore
  • XQuery 注释被 (: 和 :) 分割,举例,(: XQuery 注释 :)

?

本文示例用的dept.xml

<?xml version="1.0" encoding="UTF-8"?>
<table>
  <row>
    <DEPTNO>15</DEPTNO>
    <DNAME>ACCOUNTING</DNAME>
    <LOC field="parent">NEW YORK</LOC>
  </row>
  <row>
    <DEPTNO>20</DEPTNO>
    <DNAME>RESEARCH</DNAME>
    <LOC field="child">DALLAS</LOC>
  </row>
  <row>
    <DEPTNO>30</DEPTNO>
    <DNAME>SALES</DNAME>
    <LOC field="parent">CHICAGO</LOC>
  </row>
  <row>
    <DEPTNO>40</DEPTNO>
    <DNAME>OPERATIONS</DNAME>
    <LOC field="child">BOSTON</LOC>
  </row>
</table>
?

?和之前两篇文章中的dept.xml相比,多了field属性

?

*?If-Then-Else

和C/C++或Java或C#等的语法一样:

?

for $x in doc("sample2/dept.xml")/table/row
where $x/DEPTNO > 20
return if($x/LOC/@field="parent")
  then <parent>{data($x/LOC)}</parent>
  else <child>{data($x/LOC)}</child>

?结果:

?

<parent>CHICAGO</parent>
<child>BOSTON</child>
?

?