




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第六章XML高级语法,课程目标,什么是XPATHXPATH的基本语法,XPath简介,XPath是W3C定义的语言和正式的W3C推荐的语言,W3C拥有XMLPathLanguage(XPath)Version1.0规范。XPath诞生于1999年,作为对XSLT和XPointer语言的补充,但近来已成为流行的独立语言,因为单个XPath表达式可用于替代多行DOMAPI代码。使用XPath的目的:为了在匹配XML文档结构时能够准确地找到某一个节点元素。可以把XPath比作文件管理路径,通过文件管理路径,可以按照一定的规则查找到所需要的文件;同样,依据XPath所制定的规则,也可以很方便地找到XML结构文档树中的任何一个节点,显然这对XSLT来说是一个最最基本的功能。,XPath的基本语法,XPath中对元素和属性的匹配,主要有以下几种:,选择分支,定位节点,选择未知元素,选择属性,XPath语法主要是关于以下几方面:,XPath表达式,XPath中对元素和属性的匹配,XPath定位路径,XPath函数库,定位节点,每个XML文档都可看成是一棵树,该树与计算机中的树形文件夹非常类似,XPath使用以斜线分隔的子元素名的列表来描述某个XML文档的路径所匹配的元素。,/class/student,表示选择“class”元素下所有的“student”元素,/class/student/name,表示选择“student”元素下所有的“name”元素,选择未知元素,/class/student/*,用于选择“class”元素下所有的“student”元素的所有子元素,/class/*/name,用于选择“class”元素下所有的子元素下的所有“name”元素,/*/*/name,用于选择具有两个祖先的所有“name”元素,/*,用于选择该文档中的所有元素,在实际应用中我们经常会使用通配符“*”来选择未知的XML元素。如下:,选择分支,通过在XPath语句中使用中括号“”可以进一步指定某个元素。在中括号中可以使用各种函数、数值、表达式等来指定某个符合条件的元素。如下:,/class/student1,选择“class”元素下的第一个“student”子元素,/class/studentage,选择“class”元素下含有“age”元素的所有“student”元素,/class/studentage=20,选择“class”元素下“student”元素中的“age”元素值为20的所有“student”元素,/class/studentage=20/name,选择“class”元素下的“age”元素值为20的所有“student”元素下的所有“name”元素,/class/studentlast(),选择“class”元素下的最后一个“student”子元素,选择多个路径,通过在XPath语句中使用“|”操作符来选择多个路径。如下:,/class/student/name|/class/teacher/name,表示选择“class”元素下“student”元素中的所有“name”元素和“class”元素下“teacher”元素中的所有“name”元素,/name|/age|/email,选择文档中所有的“name”元素、“age”元素和“email”元素,/name|/class/student/age,选择文档中所有的“name”元素和“class”元素下“student”元素中的所有“age”元素,选择属性,在XPath语法中,要获得属性信息必须以前缀“”来指定,如下:,/id,表示选择所有属性名为“id”的属性,/class/studentid,表示选择“class”元素下包含有“id”属性的所有“student”元素,/class/student*,表示选择“class”元素下包含有属性的所有“student”元素,/class/studentid=ADR02,表示选择“class”元素下包含有“id”属性的值为“ADR02”的所有“student”元素,匹配元素和属性的示例XPath_a.xsl,该文档中的所有元素的字符数据:最后一个学生的姓名:所有的姓名:年龄为23的学生的姓名:学生的姓名和年龄:所有的id属性:,XPath定位路径,一个XPath定位路径表达式将返回一个符合条件的节点集。,定位路径可以是相对路径,也可以是绝对路径。绝对定位路径以一个斜线“/”开头,而相对定位路径则没有。定位路径是由一个或多个定位步骤组成,每个步骤用一个斜线分隔。,定位绝对路径的表达式如下所示:/class/student/name定位相对路径的表达式如下所示:class/student/name,定位步骤,定位步骤按照顺序从左到右依次求值。每一个定位步骤都是相对于上下文节点集中的节点进行求值的。,一个定位路径由若干个定位步骤组成。,一个定位步骤一般有三部分:,一个轴,它指定了定位步骤选择的节点与上下文节点之间的关系。,一个节点测试,它指定定位步骤选择的节点的节点类型以及节点扩展名。,零个或零个以上的判定语句,它使用专有的表达式进一步细化定位步骤选择的节点集合。,定位步骤的语法,定位步骤的语法是由两个冒号分开的轴名和节点测试组成,其后可跟随零个或零个以上在方括符内的表达式。,child:ageage=20,轴名,一般格式如下:,判定语句,节点测试,轴,用到的轴主要有以下几种:,child:当前节点所有的子节点。例如:child:*表示选择当前节点的所有子元素child:text()表示选择当前节点的文本节点。child:node()表示选择当前节点的所有子节点。descendant:该轴包含该节点的后裔;后裔是一个孩子或一个孩子的孩子,等等,后裔轴从来不包含属性或命名空间节点。例如:descendant:name表示选择当前节点的后代中所有name元素。parent:当前节点的所有父节点。ancestor:该轴包含该节点的所有祖先节点,该节点的祖先由该节点的父节点以及父节点的父节点等组成。这样,祖先轴将总是包括根节点,除非该节点是根节点;例如:ancestor:age表示选择当前节点的祖先节点中所有的age元素。following-sibling:包含该节点的所有在其后的兄弟,如果该节点是属性节点或命名空间节点,following-sibling则为空。,preceding-sibling:包含该节点的所有在其前的兄弟,如果该节点是属性节点或命名空间节点,则preceding-sibling轴为空。following:包含在该节点所在的同一文档中,所有依照文档顺序在该节点后的节点,但排除所有的后裔,也排除属性节点以及命名空间节点。preceding:包含在该节点所在的同一文档中,所有依照文档顺序在该节点前的节点,但排除所有的后裔,也排除属性节点以及命名空间节点。attribute:包含该节点的属性,除非该节点是元素,该轴将为空。例如:attribute:*表示选择当前节点的所有属性。namespace:包含该节点的命名空间节点,除非该节点是元素,该轴将为空。self:只包含该节点本身。ancestor-or-self:包含该节点和该节点的祖先;这样该轴将总是包括根节点。descendant-or-self:包含该节点和该节点的后裔。,节点测试,节点测试是一个条件,并且是路径表达式中定位步骤的第二个组件。在该轴中选定的所有节点都必须满足此条件。有以下两种,以节点名作为节点测试,以节点类型作为节点测试,有如下的路径表达式:,/child:name,以节点名“name”作为节点测试,child:text(),以节点类型作为节点测试,以节点类型作为节点测试,主要节点类型有:,node():任何类型的节点。,processing-instruction():处理指令节点。,text():文本类型节点。,comment():表示注释节点。,XPath表达式,XPath除了定位路径表达式外,还有许多其它的基本表达式结构,包括布尔、等式、关系和数值表达式。它们通常用于XPath谓词和各种XSLT结构中。,关系表达式,数值表达式,数值表达式的运算符主要包括:加(+)、减(-)、乘(*)、除(div)和取模(mod)。,一般格式如下:,操作数1运算符操作数2,关系表达式,关系表达式主要用于对两个值的比较,其中主要的运算符及其用法如表所示:,XPath函数库,XPath提供了函数库以方便计算表达式。我们可以使用XPath函数改进XPath的查询,并提高XPath的编程能力和其灵活性。,XPath函数库中的函数主要分为,字符串函数,节点集函数,布尔函数,数值函数,注意:使用XPath函数时必须严格区分函数名的大小写和参数信息。,节点集函数,XPath的节点集函数主要有以下几种:,count():该函数返回被选元素的数目。id():通过元素的唯一ID选择元素。last():返回最后一个节点是第几个节点。local-name():返回节点集中第一个节点的localname。name():返回元素的元素名。namespace-uri():返回节点集中第一个节点的命名空间URI。position():返回被选元素是第几个节点。,节点集函数示例XPath_b.xsl,将元素名和字符数据用等号连接:=“person”元素的数量:=,字符串函数,字符串函数有如下几种:,concat():返回字符串连接的结果。contains():如果第一个字符串包含第二个字符串,则返回真,否则返回假。normalize-space():返回去除了前后空白以及重复空白的参数字符串。starts-with():如果第一个字符串以第二个字符串开头则返回真,否则返回假。string():将对象转换为字符串。string-length():返回一个字符串的长度。substring():返回第一个参数中从第二个参数指定的位置开始、第三个参数指定的长度的字符串substring-after():返回字符串中从开始到某一字符串第一次出现的位置后的字符串。,字符串函数示例XPath_c.xsl,是否包含单词“May”:是否以数字“8”开头:单词的长度:,数值函数,数值函数主要有以下几种:,ceiling():返回不小于参数的最小整数。floor():返回不大于参数的最大整数。number():将参数转换为数字。round():返回与参数最接近的整数值。sum():返回节点集中所有节点的总和。每个节点在求和之前先转换为数值。,如:ceiling(4.3)将返回4。round(4.7)将返回5sum(class/student/money)返回学生的钱数的总和,布尔函数,布尔函数主要用于对参数表达式进行计算,并返回结果。有如下几种:,boolean():将参数转换为布尔值。如果参数是负数或正数,将转换为布尔值true。如果参数为零或NaN值,将转换为false。如果参数为非空的节点集,将转换为true;空节点集将转换为false。如果参数为非空的字符串,将转换为true;空字符串将转换为false。如果参数不属于四种基本类型的对象,将通过该类型相应的方式转换为布尔值。false():返回false。lang():如果该节点的xml:lang属性与参数字符串相同,则返回true。此函数不常用。not():如果参数为false,则返回true,否则,返回false。true():返回true。,6.3XML指针语言(XPointer),先学习XLink和XPointer教程.doc和HTML内部链接.htmlXML文档中的XPointer就具备上述功能,并在此基础上提供更加强大的功能。XPointer由说明元素在XML文档中位置的名词来表达。这里的位置可以是绝对位置,例如root,说明整个文档的开始处;或者相对位置,例如child;还可以通过直接指定元素的ID来定位。绝对位置的XPointer必须出现在XPointer的开始位置,即使在XPointer的开始处不注明绝对位置,也缺省地使用了一个绝对位置。,6.3XML指针语言(XPointer),例如:文档开始处的child(3,#element)相当于root().child(3,#element)都是说明根元素的第三个子元素。当前后两个相邻的位置名词相同时,后面一个位置名词可以省略。例如:id(ELEMENT1).child(3,#element)(1,#element)相当于id(ELEMENT1).child(3,#element).child(1,#element)XPointer的几种用法:如6_6.xml,6.3XML指针语言(XPointer),使用XPointer定位XML程序文档中的元素时,可以把整个XML程序文档看成一棵结构树,文档中的每个元素都是这棵树上的节点。使用XPointer定位树上的某个节点有不同的搜索路径,例如可以通过根节点逐级搜索,也可以通过元素的ID直接定位,还可以通过父元素的ID先定位父元素,再定位子元素。不同的搜索路径有不同的搜索效率,开发人员应该根据不同的情况选择合适的搜索路径,即选择使用不同类型的位置名词。,6.3XML指针语言(XPointer),下面介绍不同类型的位置名词的使用方法A、绝对位置是指向XML程序文档中的固定位置,通常相对位置都利用绝对位置做它的基准。绝对位置只能出现在XPointer的开始部分,而不能出现在XPointer的中间部分,它既可以作为其他位置的起点,也可以用来直接定位元素。常用的绝对位置有:,6.3XML指针语言(XPointer),1、root():指向XML程序文档的根元素。通常root()较少出现,因为它是所有位置的缺省绝对位置起点。例6.6中,root()指的是根元素DOCUMENT。2、origin():指向当前XPointer所在的元素。3、html():一般用来与HTML文档兼容,在XML程序文档中可以像在HTML文档中一样定义如下格式的XPointer:用html(指针名)来定位4、id():通过指定ID属性的取值,可以精确、快速定位XML中拥有绝对属性的元素。如:用id(possiblities)定位,6.3XML指针语言(XPointer),B、相对位置使用相对位置的XPointer首先定义一个绝对位置作为基准,然后在此基准的基础上说明预定位的节点与基准元素的相对位置关系。相对位置的XPointer提供了更为灵活和方便的定位方式。相对位置词的一般语法为:相对位置词(序号,节点类型)其中相对位置词说明相对于基准元素的搜索方式,如向前、向后等。节点类型则说明搜索的目标节点类型,如元素等。序号则说明所欲定位的节点是在按搜索方式搜索到的目标节点集合中的第几个,或者全部(用all说明),6.3XML指针语言(XPointer),1、结点的类型具体的元素名:如paragraph,代表该元素名指定的元素。#element:指任何一种XML的元素,是节点类型的缺省类型,若相对位置词不特别指定节点类型,则缺省的节点类型就是元素。#pi:指任何一种处理指令。#comment:指任何一种注释。#text:指在XML元素内部的文本内容。#cdata:指在CDDATA内部的文本内容。#all:指XML文档中的所有节点,如果相对位置词同时拥有属性名和属性值,则#all节点类型同于#element节点类型。,6.3XML指针语言(XPointer),2、相对位置
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年简单钢材买卖合同3篇
- 经纪人劳动合同(标准版)
- 2025年亳州市谯城区交投建工有限公司外包岗位公开招聘5名备考练习试题及答案解析
- 2025内蒙古乌海市消防救援支队招聘合同制工作人员1人备考练习题库及答案解析
- 2025昆明市官渡区东华二小教育集团教师招聘(8人)考试参考试题及答案解析
- 2025山东东营市育才学校招聘劳务派遣教师43人备考练习题库及答案解析
- 山东省德州市夏津县2024-2025学年八年级下学期期末考试英语试题(含答案无听力)
- 湿地公园水质监测与污染防控方案
- 2025年温度测量经典题目及答案
- 2025年抗原抗体血型题目及答案
- 2025-2030年中国功率器件市场发展趋势规划研究报告
- 2025农村租地合同农村租地合同范本
- 餐饮行业消防安全预案
- 部编高教版2023·职业模块 中职语文 2.《宁夏闽宁镇:昔日干沙滩今日金沙滩》 课件
- 2024考研 政治 思维导图(马原)
- 医疗设备定期检修方案
- 2023中电信数智科技有限公司白皮书
- 办公楼物业管理服务(技术方案)
- 私募股权投资基金的会计处理全解析
- 高级高炉炼铁操作工技能鉴定考试题及答案
- 前置公司协议书范本
评论
0/150
提交评论