资源预览内容
第1页 / 共69页
第2页 / 共69页
第3页 / 共69页
第4页 / 共69页
第5页 / 共69页
第6页 / 共69页
第7页 / 共69页
第8页 / 共69页
第9页 / 共69页
第10页 / 共69页
亲,该文档总共69页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
XML文档的显示XSL章前导读数据格式转换的重要思想是要把XML文档视为一种数状结构,转换的过程就 是从源树生成结构树的过程。XSL样式表定义了源树和结果树中对应部分的转 换规则,每条规则中包含了一个模板,并对应着一种模式。模板定义了转换 的结果,而模板则规定了需要进行转换的元素或属性对象。可扩展样式表语 言(Extensible Stylesheet Language,XSL)主要包括XSLT、Xpath和XSLF三 种语言。人们通常会将XSLT和Xpath混在一起,将可扩展样式语言分为变换语 言(Transformation Language)和格式换语言(Formatting Language)。其 中,每种语言都是一个XML应用程序。本章重要介绍XSL变换语言中的部分内 容。学习重点理解XSL、XSLT和模板计算节点的值处理多个元素用表达式选择节点理解默认的模板规则确定输出要包含的内容复制当前节点对节点进行计数、对输出元素分类以及插入CDATA和 大于号(实际使用) = 大于或等于(实际使用=)XPath3.字符串(string):它包含一系列字符的集合,XPath中提供了一系列的字符串函数。字符串 可与数值类型、布尔类型的数据相互转换。4.数值(number):在XPath中数值为浮点数,可以是双精度64为浮点数。另外包括一些数值 的特殊描述,如非数值NaN、正无穷大(infinity)、负无穷大(-infinity)、正负0等。 number的整数值可以通过函数取得。数值也可以和布尔类型、字符串类型的数据相互转换。XPath将节点划分为7种节点类型:1.根节点(Root Node) 根节点是一棵树的最上层,它是唯一的。在XSLT中对树的匹配总是先从根节点开始的。2.元素节点(Element Node) 元素节点对英语文档中的每一个元素。元素及诶但都可以有扩展名,他有两部分组成:一部 分是命名空间URI,另一部分是本地的命名。3.文本节点(Text Nodes) 文本节点包含了一组字符数据,即CDATA中包含的字符。任何一个文本节点都不会有紧邻的 兄弟文本节点,而且文本节点没有扩展名。4.属性节点(Attribute Nodes) 每个元素节点有一个相关联的属性节点集合,元素是每个属性节点的父节点,但属性节点却 不是其父元素的子节点。也就是说,通过查找元素的子节点可以匹配出元素的属性节点,但 反过来不成立。XPath5.命名空间节点(Namespace Nodes) 每一个元素节点都有一个相关的命名空间节点集。在XML文档中,命名空间是通过保留属性声 明的,因此在Xpath中,该类节点与属性节点极为相似。他们与父元素之间的关系是单向的。6.处理指令节点(Proessing Instruction Nodes) 处理指令节点对应于XML文档中的每一条处理指令。7.注释节点(Comment Nodes) 注释节点对英语文档中的注释。XPathXPath表达式 对一个文档使用XPath会得到以下几种结果:一个单独的节点、一组节点、一 个布尔值、一个浮点数或一个字符串。Xpath使用类似档案系统的路径命名方式。不过Xpath是一种模式,可以选出 XML文档中路径符合某个模式的所有节点。XPath1.定为节点 Xpath使用模式表达式识别XML文档中的节点。一个Xpath模式表达式是一个 以斜线分隔的子元素列表,用于描述XML文档的一个路径。模式选择匹配该 路径的元素。 Xpath表达式用来定为节点的两个表示方法:“/”时表示当前文档的节点。如:/PEOPLE表示选择根节点下的PEOPLE元素; PEOPLE/PERSON表示现则PEOPLE元素下所有的PERSON子元素。“/”表示当前文档所有的节点。例如:/PEOPLE表示现则文档中所有的PEOPLE元素,无论它 在什么层次;PEOPLE/PERSON表示选择在PEOPLE元素下所有的PERSON元素,无论它的层 次多深。XPath2.选择未知的元素 XPath表达式中,可以使用型号(*)选择未知的元素。例如:选择/catalog/cd下的所有子元素。 /catalog/cd/*选择所有catalog的子元素中包含有子元素price的元素。 /catalog/*/price选择有两层父节点,名为price的所有元素。 /*/*/price选择文件中的所有元素。 /*XPath3.选择分支 XPath表达式中,可以使用括号选择分支。 从catalog的子元素中取出第一个cd元素。XPath没有第0元素。 /catalog/cd1 选择catalog中的最后一个cd元素。 /catalog/cdlast() 现则含有price子元素的所有/catalog/cd元素。 /catalog/cdprice 选择price元素的值等于10.90的所有/catalog/cd元素。 /catalog/cdprice=10.90 选择price元素的值等于11.90的多有/catalog/cd元素的price元素。 /catalog/cdprice=11.90/price 选择price元素的值大于10.80的所有cd元素。 /catalog/cdprice10.80XPath4.选择一个以上的路径 如果要选择一个以上的路径,在Xpath表达式中就要使用OR操作符(|)。 例如: 选择所有title以及artist元素 /title|/artist选择所有title以及artist以及price元素 /title|/artist|/priceXPath5.选择属性 选择属性,属性都是以开头。 例如: 选择文件所有叫做country的属性。 /country选择所有含有country这个属性的cd元素。 /cdcountry选择含有属性的所有cd元素。 /cd*选择country属性值为HK的cd元素。 /cdcountry=HKXPathXPathXpath定位路径 一个Xpath定位路径表达式将返回一个节点集。1.定位路径表达式 对于定位路径既可以是绝对的也可以是相对的。 绝对定位路径以一个斜线(/)开头,而相对路径没有。 一个绝对定位路径:/step/step/ 一个相对定位路径:step/step/ 定位步骤从左到右,依次按顺序计算。 如果定位路径是绝对的,那么当前节点包含根节点。 如果定位路径是相对的,那么当前节点集包含使用表达式的节点。定位步骤:一个轴(指定当前定位步骤和当前节点选择的节点间的属关系) 、一个节点测试(指定定位步骤选择的节点的节点类型和扩展名)、零或多 个预测(使用表达式进一步抽取定位步骤限定的节点集)。XPath一个定位步骤的语法为 轴名:节点测试预测 如:child:priceprice=9.90XPath2.轴和节点测试 轴名及其含义XPathXPath3.预测 一个预测过滤一个节点集为一个新的节点集。预测要放在方括号中。 例如: 选取当前节点的子节点中price元素的值等于9.90的所有price元素。 child:priceprice=9.904.定位路径所写语法缩写定义示例直接省 略child:cd是child:cd的缩写attribute:cdtype=“classic”是child:cdattribute:type=“class”的缩写.self:node()./cd是self:node()/descendant-or-self:node()/child:cd的缩写parent:node()/cd是parent:node()/child:cd的缩写/desendant-or- self:node()/cd是/descendant-or-self:node()/child:cd的缩写XPath5.Xpath定位路径表达式综合示例 对于下面这棵XML文档结构树XPath示例含义匹配结果 /A/C/D指示节点路径节点点A的子节点C的子节点D /E /C/E /A/B/C/* /*/*/D /B|/C /* /A/B/C1 /A/B/Clast() /Bid /Bnot(*)所有不具有属性的B元素 /Bid=“b1” /E/parent:*所有E节点的父元素XPath/F/ancestor:* /A/child:* /A/descendant:*A的所有后代元素 /F/self:*所有F的自身元素 /F/ancestor-or-self:* /A/C/descendant-or-self:* /A/C/following-sibling:*A元素C元素的紧邻的后续所有 兄弟节电元素 /A/C/preceding-sibling:* /A/B/C/following:* /A/C/preceding:*XSL文档结构XSL文档包含一组模板规则和其他规则。 模板规则拥有模式(Pattern)以及模板(Template)。 模式用来指定模板规则所适用的数状结构,而模板用来在此模式匹配时进行 输出。 当XSL处理程序使用XSL样式表来格式化XML文档时,它对XML文档结构树进 行扫描,一次浏览每个子结构。当读完XML文档时,处理程序就把它与样式 表中每个模板规则的模式进行比较。当处理程序找到与模板规则的模式相匹 配的树状结构时,它就输出此规则的模板。这个模板通常包括扩一些标记、 新的数据和从原XML文档结构树中复制来的数据。XSL文档的标准格式:模板规则 输出模板XSL文档结构XSL文档本身就是格式良好的XML文档,所以在书写时要注意标记的匹配问题 。 即使XSL文档的声明语句,也是根元素,必须位于文件的首部 。 通常也要利用xmlns属性指明XSL的命名空间。 样式表中所有的模板规则都有标记标明。例6-1XSLT的元素语法XSL模板 XSLT文件就是由一个一个模板组成的。 任何一个XSLT文件至少包含一个模板。模板有两部分组成:匹配模式(Match Pattern)和执行。 其中,模式用来定义XML文档中那一个节点被处理;执行则是用来定义输出 的格式。两部分对应的语法元素分别是xsl:template和xsl:apply-templates。XSLT的元素语法1.xsl:template元素 由xsl:template元素定义模板规则。 每个xsl:templat元素都有一个match属性,用来指定要将此模板应用于输出文 档的哪个节点。假设要处理一个包含章节和段落的文档,用duanluo元素定义段落,用 zhangjie元素定义章节。 模板匹配所有的段落元素:模板匹配多有的段落元素和所有的章节元素:模板匹配根节点:XSLT的元素语法xsl:template元素的内容是要运用的实际模板。模板中既可以包含逐字显示在 输出文档中文本,也可以包含从输入XML文档将数据复制到结果的XSL指令。例如:当XSL处理程序读取此输入文档时,他所看到的 第一个节点就是根节点。下面的规则与根节点相 匹配,并告诉XSL处理程序发送此文本。XSLT的元素语法2.xsl:apply-templates元素 xsl:apply-templates元素用来指示处理器发现一个合适的模板,而且在每个选 择的元素上执行指定的任务。apply-templates语法:select属性用来定义确切的节点名称,是可选的,默认值是node(),意味着对 当前节点的所有子节点执行该模板。XSLT的元素语法xsl:apply-templates元素总是包含在xsl:template元素中,格式:上面代码说明模板匹配整个文档,具体执行时处理根节点下所有person元素 。上面的代码说明模板匹配person节点,即处理的是所有per
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号