《第3章文档查询和转换理论优秀课件.ppt》由会员分享,可在线阅读,更多相关《第3章文档查询和转换理论优秀课件.ppt(32页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第3章文档查询和转章文档查询和转换理论换理论第1页,本讲稿共32页课程回顾课程回顾u文档对象模型(DOM)定义了访问诸如 XML 和 XHTML 文档的标准uW3C组织为DOM规范定义了3个级别:nDOM级别1nDOM级别2nDOM级别3uXML文档中每一个单元(元素、属性、实体、备注等)都是节点uXML DOM 把 XML 文档视为一种树结构,即节点树。节点之间的关系包括父节点、子节点、同级节点、前一个节点和后一个节点uXML Document对象的load()方法用于加载XML文档,loadXML()方法用于加载XML字符串uXML DOM对象中常用的操作XML文档节点的方法和属性包括:
2、ngetElementsByTagName()nappendChild()ninsertBefore()ncreateElement()nremoveChild()nnodeTypennodeValuennodeName第2页,本讲稿共32页本章内容本章内容uXPathuXQueryuXSLT第3页,本讲稿共32页本章目标本章目标u了解XPath的基本语法u能够使用XPath选择节点u能够使用XQuery FLWOR表达式查询XML文档u能够使用XSLT转换简单的XML文档第4页,本讲稿共32页1.XPath 1.1 XPath简介 uXPath是在XML文档中查找信息的路径语言uXPath
3、使用路径表达式在 XML 文档中进行导航uXPath 包含一个标准函数库uXPath 是 XSLT(可扩展的样式表语言转换)中的主要元素uXPath 是W3C 标准xmlDoc.selectNodes(/bookstore/book)XPath路径表达式第5页,本讲稿共32页1.2 XPath语法语法 uXPath运算符 运算符描述示例表达式示例表达式的返回值|计算两个节点集/student|/teacher返回所有带student元素和teacher元素的节点集+加2+35-减5-23*乘2*36div除6 div 32=等于price=15.5true或false!=不等于price!=1
4、5.5true或false小于price15.5true或false=小于或等于price大于price15.5true或false=大于或等于price=15.5true或falseor或price=15 or price=10true或falseand与price15 and price20true或falsemod计算除法的余数6 mod 30第6页,本讲稿共32页XPath语法语法 uXPath选择节点 u路径选择 表达式描述示例返回结果nodename选取此节点的所有子节点bookstore选取 bookstore 元素的所有子节点/从根节点选取,即绝对路径选择/bookstore选
5、取根元素 bookstore/从选择的当前节点匹配选择文档中的节点,即相对路径选择/book选取所有 book 子元素,而不管它们在文档中的位置,不分层次.选取当前节点bookstore/book选取所有属于 bookstore 的子元素的 book 元素.选取当前节点的父节点bookstore/book选择所有属于 bookstore 元素的后代的 book 元素,而不管它们位于 bookstore 之下的什么位置选取属性/lang选取所有名为 lang 的属性第7页,本讲稿共32页XPath语法语法 uXPath选择节点 u使用谓词 路径表达式(内属于谓词)返回结果/bookstore/b
6、ook0bookstore 子元素的第一个 book 元素/bookstore/booklast()bookstore 子元素的最后一个 book 元素/bookstore/booklast()-1bookstore 子元素的倒数第二个 book 元素/bookstore/bookposition()30.00所有 bookstore 元素的 book 元素,且其中的 price 元素的值须大于 30.00/bookstore/bookprice30.00/title所有 bookstore 元素中的 book 元素的 title 元素,且其中的 price 元素的值须大于 30.00var
7、nodes=xmlDoc.selectNodes(/bookstore/book1)第8页,本讲稿共32页XPath语法语法 uXPath选择节点 u使用通配符和“|”运算符n*:匹配任何元素节点 n*:匹配任何属性节点 nnode():匹配任何类型的节点 n|:选择多条路径 var nodes=xmlDoc.selectNodes(/title*)匹配所有带属性的title节点第9页,本讲稿共32页1.3 XPath轴轴 uXPath Axes用于定义所选节点与当前节点之间的树关系轴名称说明ancestor选取当前节点的所有先辈(父、祖父等)ancestor-or-self选取当前节点的所有
8、先辈(父、祖父等)以及当前节点本身attribute选取当前节点的所有属性child选取当前节点的所有子元素descendant选取当前节点的所有后代元素(子、孙等)descendant-or-self选取当前节点的所有后代元素(子、孙等)以及当前节点本身following选取文档中当前节点的结束标签之后的所有节点namespace选取当前节点的所有命名空间节点parent选取当前节点的父节点preceding选取文档中当前节点的开始标签之前的所有节点preceding-sibling选取当前节点之前的所有同级节点self选取当前节点attribute选择当前元素的属性第10页,本讲稿共32页
9、XPath轴轴 u步表达式轴名称:节点测试谓词 nchild:book:选取所有属于当前节点的子元素的 book 节点nattribute:lang:选取当前节点的 lang 属性nchild:*:选取当前节点的所有子元素nattribute:*:选取当前节点的所有属性nchild:text():选取当前节点的所有文本子节点nchild:node():选取当前节点的所有子节点ndescendant:book:选取当前节点的所有 book 后代节点nancestor:book:选择当前节点的所有 book 先辈节点nancestor-or-self:book:选取当前节点的所有book先辈节点以
10、及当前节点(假如此节点是book节点的话)nchild:*/child:price:选取当前节点的所有 price 孙节点第11页,本讲稿共32页XPath轴轴 xmlDoc.SelectNodes(/item-info/descendant:item-name);查询所有以item-info为祖先节点的item-name节点 xmlDoc.SelectNodes(/order/item/quantity/preceding-sibling:*);xmlDoc.SelectNodes(/order/item/ancestor-or-self:*);按绝对路径查询quantity之前的同级节点
11、按绝对路径查询所有“/order/item”的先辈节点和它自身 第12页,本讲稿共32页小结小结1uXPath表达式中“/”和“/”的区别在哪里?u如何使用XPath表达式选择属性?u如何在步表达式中使用XPath轴?第13页,本讲稿共32页2.XQuery 2.1 XQuery简介 uXQuery是XML的查询语言uXQuery的语法规则nXQuery 对大小写敏感 nXQuery 的元素、属性以及变量必须是合法的 XML 名称。nXQuery 字符串值可使用单引号或双引号。nXQuery 变量由“$”并跟随一个名称来进行定义,nXQuery 注释被(:和:)分割,举例,(:XQuery 注
12、释:)doc(books.xml)/bookstore/book/title第14页,本讲稿共32页2.2 FLWOR表达式表达式 ufor子句 for$i in(1,2,3,4)return$iufor子句向每个由 in 表达式返回的项目捆绑一个变量u使用forin或者for in to 语句能够查询节点存入到XQuery变量中第15页,本讲稿共32页FLWOR表达式表达式 ufor子句 WidgetGadgetKnifeSpoonfor$i in(1,2,doc(Products.xml)/Products/Product/text(),3,4)return$i第16页,本讲稿共32页FL
13、WOR表达式表达式 ulet子句 let$x:=(1 to 5)return$x 结果1 2 3 4 5第17页,本讲稿共32页FLWOR表达式表达式 uwhere过滤子句 for$x in doc(books.xml)/bookstore/bookwhere$x/price30return$x/title查询books.xml中bookstore节点下子节点book的子节点price大于30的节点,返回满足条件的book的子节点title节点 第18页,本讲稿共32页FLWOR表达式表达式 uwhere过滤子句 for$book in doc(books.xml)/bookstore/boo
14、kwhere$book/year2003 returnelement book attribute category$book/categoryelement titleattribute lang$book/title/langtext$book/title/text(),element year$book/year/text(),element price$book/price/text()使用构造器构造book元素第19页,本讲稿共32页FLWOR表达式表达式 u用order by子句排序 for$book in doc(books.xml)/bookstore/booklet$p:=$
15、book/price/text()order by$p return$p按price的文本值进行排序 第20页,本讲稿共32页FLWOR表达式表达式 ureturn子句和条件表达式 for$book in doc(books.xml)/bookstore/bookreturn if(count($book/author)gt 2)then$book/title/text()count($book/author)else()只有书的作者多于2个时才被查询出来。return子句返回中构造一个book节点,该节点内包含满足条件的book的title节点的文本和作者数 第21页,本讲稿共32页FLWO
16、R表达式表达式 u使用FLWOR为HTML文件添加元素和属性Bookstorefor$x in doc(books.xml)/bookstore/bookorder by$x/titlereturn data($x/title).Category:data($x/category)添加了HTML元素,并将查询的结果存放到标记内 第22页,本讲稿共32页FLWOR表达式表达式 u使用FLWOR为HTML文件添加元素和属性自行车赛for$x in doc(cyclings.xml)/cyclings/cyclingreturn data($x)为HTML元素添加了属性style,属性值来自于查询结
17、果第23页,本讲稿共32页小结小结2uXQuery是什么?其作用是什么?ufor子句和let子句的异同点在哪里?第24页,本讲稿共32页3.XSLT基础基础 3.1 XSLT简介 uXSL:可扩展样式表语言。XSL语言包含3部分:nXSLT:用于转换XML文档的语言规范nXPath:用于在文档中进行导航的路径语言(本章前面已介绍)nXSL-FO:用于格式化XML文档的语言 uXSLT:通过Xpath在XML文档中导航,将XML文档转换成另外的、可被浏览器识别的格式的文档 第25页,本讲稿共32页XSLT简介简介 Made in India Alisa India Bollywood 10 20
18、06 我的CD收藏 第26页,本讲稿共32页3.2 XSLT常用元素常用元素 u n为样式定义模板nmatch 属性用于关联 XML 元素和模板 订单产品定义的模板规则匹配元素item-info第27页,本讲稿共32页XSLT常用元素常用元素 un元素用于提取某个选定节点的值。属性select通过XPath表达式定位要取值的元素或属性 un元素用于对节点进行循环。属性select通过XPath表达式,用于定位要循环的节点。un 元素用于对结果进行排序 un元素用于放置针对 XML 文件内容的条件测试 un 元素用于结合 和 来表达多重条件测试 第28页,本讲稿共32页3.2 XSLT常用元素常
19、用元素 un元素可以把一个模板应用于当前的节点或者当前节点的子节点 我的CD收藏 处理根节点下的所有节点 处理cd节点下的title节点和artist节点Title:定义处理title节点的规则(模板)第29页,本讲稿共32页小结小结3uXSL是什么?XSLT是什么?uXSLT常用元素有哪些?第30页,本讲稿共32页本章总结本章总结uXPath 使用路径表达式在 XML 文档中进行导航uXPath常用的表达式如下:n“/”从根节点选取,即绝对路径选择n“/”从选择的当前节点匹配选择文档中的节点,即相对路径选择n“”依据属性选择节点n使用谓词进行过滤n使用通配符选择未知节点n使用“|”选择多条路径uXQuery是XML文档的查询语言,主要使用“FLWOR”表达式对XML格式的数据进行查询uXSL是XML的样式表语言,决定XML的输出和显示uXSLT是XSL转换,是XSL最重要的组成部分。使用它,可以将XML文档转换为其他格式的文档uXSLT常用的元素包括:n:定义模板n:用于提取某个选定节点的值n:对节点进行循环n:把一个模板应用于当前的节点或者当前节点的子节点n:用于条件测试n:对结果进行排序n:表达多重条件测试第31页,本讲稿共32页第32页,本讲稿共32页
限制150内