第六章 XML高级语法(2)

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
➢ Xpath 2.0是XQuery1.0的一个句法子集,XQuery 被 构建在 XPath 表达式之上,XQuery 1.0 和 XPath 2.0 共享相同的数据模型,并支持相同的函数和运 算符。
XQuery的基本语法规则
6
➢ XQuery区分大小写 ➢ 它的元素,属性,变量必须是有效的XML名称 ➢ 一个XQuery字符串值可以写在单引号或双引号里 ➢ 一个XQuery变量定义是在“$”的符号后面跟上名
回的是标题(title)元素
let子句
11
XQuery:
返回结果:
let $x := (1 to 5) return <test>{$x}</test>
<test>1 2 3 4 5</test>
XQuery + HTML
12
➢ XQuery可以将查询结果以HTML的形式输出
➢ 在文档中需要用花括号({ 和 })将FLWOR 表达 式括起来,花括号用于将需要计算的表达式与周围 的文字 XML 分开,它告诉 XQuery 处理程序要将 包围起来的数据作为需要求值和替换的变量而不是 文字文本来处理。
示例XML文档
8
<?xml version="1.0" encoding="ISO-8859-1"?> <?xml-stylesheet type="text/xsl" href="books1.xsl"?> <bookstore>
<book category="COOKING"> <title lang="en">Everyday Italian</title> <author>Giada De Laurentiis</author> <year>2005</year> <price>30.00</price>
XQuery + HTML
13
XQuery: 用{ }括起 返回结果:
x<{/or<beqru/fouodtulu>olree>rkr$nrsybx<tyovilnier>$erdx{s/$boixooc}n(o<“k7"/l/1-it>bi.t0ol}e"o; kXsQ.xumel"ry)<<<<<<ulll/liiiiu>>>>l>l<<<<>ttttiiiittttlllleeee
➢ XQuery通过为 XPath返回的节点增加选择条件来实现复杂 的查询工作。XPath是XQuery的一个句法子集。
➢ XSLT和XQuery两者功能相当,都基于同一基础:Xpath, 都专用于操作 XML 文档,都借用脚本概念。 XSLT侧重于 转换,而XQuery侧重于查询。
➢ XLink和XPointer是可扩展链接语言的两个重要的部分。 XLink可实现一个文档与另一文档的链接。在XLink文档链 接的基础上,XPointer可以链接到XML文档的细节部分
lang="en">Everyday Italian</title></li> lang="en">Harry Potter</title></li> lang="en">Learning XML</title></li> lang="en">XQuery Kick Start</title></li>
XQuery自定义函数例题
18
xquery version "1.0";
6.7.xquery
declare function local:minPrice(
$price as xs:decimal?,
$discount as xs:decimal?)
as xs:decimal?
{
let $disc := $price * $discount
用data()函数来获得 title 元素内的数据
XQuery 条件表达式
14
➢ 在使用“if-then-else”条件语句时应注意的语法点:
if表达式需要圆括号,另外使用了“if”就必须用到
“else”关键词,可以是else()。
XQuery:
返回结果:
xquery version "1.0"; for $x in doc("books.xml")/bookstore/book return if ($x/@category="CHILDREN") then <child>{data($x/title)}</child> else <adult>{data($x/title)}</adult>
XML
技 术 基 础
《XML技术基础》
E
C J
第六章 XML高级语法
TBaidu Nhomakorabea
U N I V E R S I T Y
回顾
2
➢ XQuery、XLink、XPointer和XSLT都依赖于XPath进行数据 定位。
➢ XQuery是用于XML 数据查询的语言,用来从 XML文档查 找和提取元素及属性的语言。
XQuery自定义函数
17
➢ 自定义函数格式: declare function 前缀:函数名($参数 AS 数据类型)AS 返 回的数据类型
{ (: ...函数代码... :)
};
➢ 说明:
– 用户自定义函数是使用 declare function 关键词来声明的; – 函数名必须使用前缀; – 参数的数据类型通常是XML Schema 中定义的数据类型; – 函数主体须用花括号括起来。
称等,例如:$bookstore ➢ XQuery注释用“(: ”和“ :)”进行分界,例如(:
XQuery Comment :)
XQuery如何选择文档
7
➢ XQuery非常重要的一个特性是能够指定应用 XPath 的XML文档。XQuery 是使用 doc() 函数指定文档 的,其使用方法为: doc(XML文档URI) /路径表达式。
➢ 越来越多的数据使用XML标记,迫使数据库公司在产品中 增加XML存储和查询的能力。越来越多的数据库公司扩展 其核心数据库产品以提供XQuery能力。
➢ 但SQL 并不会消失,相反已经出现了XQuery扩展,并与之 互相补充的态势。
➢ 目前在软件开发中,查询XML数据有以下4种方案:
– 纯SQL(不包含 XQuery); – SQL/XML,即嵌入了XQuery的SQL; – XQuery作为独立语言(不包含 SQL); – 嵌入了SQL的XQuery。
缀,所以这个函数的名称并不需要以前缀名调用
➢ 例如:
– <name>{uppercase($booktitle)}</name>
– doc("books.xml")/bookstore/book[substring(title,1,5)='Harr y']
– let $name := (substring($booktitle,1,4))
return ($price - $disc)
};
(:以下是调用自定义函数local:minPrice的例子 :)
<price>{for $book in doc("books.xml")/bookstore/book
return <minPrice>{local:minPrice($book/price, 0.3)}</minPrice>}</price>
</book> <book category="CHILDREN">
<title lang="en">Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book> …… </bookstore>
XML FLWOR表达式
10
➢ 例 6.4.xquery,
xquery version “1.0”;
for $x in doc(“books.xml")/bookstore/book
where $x/price>30
order by $x/title return $x/title
For子句把bookstore元 素里的所有book元素送 W到he名re为子$句x的选变择量pri里ce元素 ord值e高r b于y子30句的定bo义o了k元“素排 序Re命tu令rn”子。句按详t细itle定子义元了素哪 些数据该被排返序回。这里返
本课目标
3
➢ 小结
XQuery
4
➢ XQuery是查询XML数据的语言
➢ XQuery相当于XML的SQL数据库
➢ XQuery 是建立在XPath表达式之上的
➢ 所有重要的数据库引擎(IBM, Oracle, Microsoft, 等等.)都 支持XQuery
➢ XQuery 的核心包括三部分:
<adult>Everyday Italian</adult> <child>Harry Potter</child> <adult>Learning XML</adult> <adult>XQuery Kick Start</adult>
XQuery函数
15
➢ XQuery包括超过100个内置函数。有针对字符串值, 数值,日期时间比较,节点和QName处理,排序 处理,逻辑值等等的函数。
XQuery
5
➢ Xquery 1.0、Xpath 2.0、XSL 2.0都是在 2007年1月 23日被确立为 W3C 推荐标准。
➢ 事实上是W3C的XSL 和XML Query 工作组在一起 工作,将XSL 2.0和Xquery 1.0两者之间的共同部分 抽取出来命名为XPath 2.0,以达到尽可能多的共享 内容的目标。
运行结果:
<price><minPrice>21</minPrice><minPrice>20.993</minPrice> <minPrice>34.993</minPrice><minPrice>27.965</minPrice></price>
XQuery在软件开发中的地位
19
➢ XQuery很像 SQL,XQuery 最适合于 XML,就像SQL最适 合于关系数据。
– where:where子句允许向节点集应用选择条件。
– order by:order by 子句不改变源数据,仅用于排序结果 集。XPath 只能按位置排序,而order by子句允许按照其 他数据排序。
– return:return 子句规定返回什么内容。return 子句总是 出现在FLWOR表达式的最后,每个FLWOR表达式必须 有一个return子句。
XML FLWOR表达式
9
➢ FLWOR是“For, Let, Where, Order by, Return”.的首 字母缩写
– for:使用for子句可以遍历节点集。一般情况下,for 将 节点集的当前值赋给变量从而操作该变量。
– let:使用 let子句可以为变量赋值。在FLWOR表达式中, let子句出现较少。
➢ 例如:doc("books.xml")/bookstore/book/title
– doc()函数用于打开“books.xml”文件,路径表达用于在 XML文档中选择标题(title)元素
➢ 这个函数可以使设计人员编写代码以编程的方式选 择文档,例如可以根据用户的输入来选择应用 XPath 的文档,或者遍历一组文档并分别应用 XQuery语句
x<{/or<beqru/fouodtulu>olree>rkr$nrsybx<tyovilnier>$erdx{s/dboiaooctn(oa“k7"($/1-tbxi.t0ol)e}"o<; k/lsi>.x}ml")<<<<<<ullll/iiiiu>>>>l>lEHLX>evQaaerurrryenydriPnyagoKytXtiIectMark<lLiS/a<litn>a/l<ir>t/<li>/li>
– XPath 规范,XPath是在 XML 文档中选择零个、一个或多个节点的 方法;
– 选择特定 XML 文档,为 XPath 返回的节点增加选择条件的附加语 法;
– API接口,如 XQJ(XQuery for Java API),应用XQuery需要使用 具体的编程语言对 XQuery 表达式求值。
➢ 也可以在XQuery上定义自己的函数
XQuery内置函数
16
➢ XQuery函数名称空间(namespaces)的URI是: http://www.w3.org/2005/02/xpath-functions
➢ 函数常常以fn:前缀名调用,例如fn:string(); ➢ 然而,因为fn:是名称空间(namespaces)的默认前
相关文档
最新文档