XQuery学习笔记(一)

数据模型是查询语言的基础。XQuery数据模型定义了包含在XSLTXQuery处理器输入中的信息,以及所有被允许出现在XSLTXQueryXPath表达式中的值。也就是说,XQuery数据模型规定了文档中什么样的信息可以被XML查询语言访问并处理。XQuery数据模型包含下面这些重要的值:

原子值(atomic value)一个原子值封装了一个XML Schema原子类型以及符合该类型一个值。

节点(Node)节点是数据模型的核心概念。XQuery数据模型定义了7 种类型的节点,分别是:DocumentElementAttributeNamespaceProcessing InstructionCommentText。此外,还定义了构造和访问节点的函数。constructor(构造器)类函数用于创建节点,而访问节点结构的函数被称为accessor(访问器)。节点的类型值(type)是零个或多个原子值的序列,节点的字符串值(string)是类型xs:string的一个值,节点的名称(name)是类型xs:QName的一个值。

序列(Sequence)一个序列是零个或多个项(item)构成的有序集合,而一个项既可以是一个节点,也可以是一个原子值。从数据模型的角度来看,只包含一个原子值的序列和原子值本身没有区别。

1是一个XML文档示例及其数据模型的图形表示。

其中,D1表示文档(document)节点,E1E2表示元素(element)节点,A1表示属性(Attribute)节点,T1T2T3代表文本(Text)节点。

下面,使用XQuery数据模型的构造器和访问器函数来表现上面的XML文档(这里,假定与该文档相关联的URI为“http://www.mytest.com/query/test.xml”)。 

//文档节点D1

dm:base-uri(D1) = xf:anyURI("http://www.mytest.com/xquery/test.xml")

dm:string-value(D1) = xf:string("/n Java Core/n")

dm:children(D1) = E1

//元素节点 E1

dm:name(E1) = xf:string("book")

dm:base-uri(E1) = xf:anyURI("http://www.mytest.com/xquery/test.xml")

dm:string-value(E1) = xf:string("/n Java Core/n")

dm:parent(E1) = D1

dm:children(E1) = (T1,E2,T3)

dm:attribute(E1) = A1

//元素节点E2

dm:name(E2) = xf:string("title")

dm:base-uri(E2) = xf:anyURI("http://www.mytest.com/xquery/test.xml")

dm:string-value(E2) = xf:string("Java Core")

dm:typed-value(E2) = xf:string("Java Core")

dm:parent(E2) = E1

dm:children(E2) = T2

dm:attribute(E2) = ()

//属性节点A1

dm:name(A1) = xf:Qname("year")

dm:string-value(A1) = xf:string("2002")

dm:typed-value(A1) =

dm:parent(A1) = E1

//文本节点T1

dm:string-value(T1) = xf:string("/n ")

dm:parent(T1) = E1

//文本节点T2

dm:string-value(T2) = xf:string("Java Core")

dm:parent(T2) = E2

//文本节点T3

dm:string-value(T3) = xf:string("/n ")

dm:parent(T3) = E1

 

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值