第5章__XSLT.ppt_第1页
第5章__XSLT.ppt_第2页
第5章__XSLT.ppt_第3页
第5章__XSLT.ppt_第4页
第5章__XSLT.ppt_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第5章 XSLT,样式表简介,为什么需要样式表 XML数据本身并不包含数据显示的信息 什么是样式表 描述结构文档表现方式的文档 使用样式表的意义 数据或内容与表示层分开 W3C推荐的样式表标准: CSS级联样式表 XSL可扩展样式表,样式表,定义:包含一个或多个XML文档的格式化规则的文档。包含指示WEB浏览器如何将原文档的结构翻译为一个能够显示的结构的代码。 任务: 将XML文档转换为另一种结构 描述如何表达被转换的信息,5.1 级联样式表CSSCascading Style Sheets,是一个文本,包含特殊元素格式特征的一个或者更多的规则和定义。它控制XML文档和HTML文档中的标签如何

2、被格式化。,Css的作用?,1. 能把XML文档翻译成特定的目标,将XML文档转换成另一种结构。包括: 创建一个不变的文本(比如标签和标题) 指定提取所需数据的过滤器 改变元素和属性的顺序 排列内容 完成复杂的转换,根据存在的内容计算值 2. 描述如何表达被转换的信息。包括: 屏幕或页面的布局 将转换的内容分配成列表和段落 属性的规范(例如间距、页边框、对齐和字体),XSL 指扩展样式表语言(EXtensible Stylesheet Language)。 CSS = HTML 样式表,XSL = XML 样式表 XSL 包括三部分: XSLT 一种用于转换 XML 文档的语言。 XPath

3、一种用于在 XML 文档中导航的语言。 XSLF 一种用于格式化 XML 文档的语言,作用类似于CSS在HTML中的作用。,5.2 可扩展样式表XSL,XSLT (eXtensible Stylesheet Language Transformations),XSLT 中的字母“T”表示“转换”,它是 XSL规范中的一部分。可以根据指定的转换规则将一个 XML 文档树或者其中的部分内容转换为另一种文档树形式。 XSLT 可以将 XML 文档转换为任何形式,包括 XML、HTML 和普通文本,以致于很多人使用 XSL 作为一种在浏览器中显示 XML 数据的工具,也就是利用这种转换功能,将 XML

4、 文档转换为 HTML(通常需要增加一些 HTML 中的有关显示的标记),然后在浏览器中进行显示。,XSLT 简介,XSLT 语言是一种声明性(Declarative)的语言,即 XSLT 程序本身只是包含了一些转换规则的 XML 文档。而这些规则可以被递归地应用到转换过程中。 XSLT 处理程序(或称之为执行引擎)将首先确定 XSLT 规则,然后根据规则的匹配条件(通过 XPath 表达式指定)、以及优先顺序完成相应的转换操作。 XSLT本身也是一个 XML 文档,所以它也必须严格遵守 XML 规范。其根元素的命名空间为:/1999/XSL/ Transfor

5、m。,XSLT 的工作原理,在进行 XSLT 的转换任务时,通常需要两个输入文档,一个是包含源数据的 XML 文档,一个是包含转换任务规则的 XSLT 文档; 由 XML 解析器对这两个文档进行解析,将包含源数据的 XML 文档转换为所对应的文档树结构,将 xslt (xsl) 文档中定义的处理模块看作是一系列的转换规则。 由 XSLT 引擎调用这些规则,对文档树进行遍历,分别处理其中指定的数据节点,将其转换为所需的结果集,并序列化为结果文档。,XSLT处理器的工作过程,XSLT样式表,XML文档,MSXML解析器,XSLT树,源树,XSLT处理器,结果树,XSLT和CSS,样式表声明,把文档

6、声明为 XSL 样式表的根元素是 或 。 注释: 和 是完全同义的,均可被使用! 根据 W3C 的 XSLT 标准,声明 XSL 样式表的正确方法是: 或者: ,一个简单 XSLT例子,对一个XML文件进行转换 现在要把下面这个 XML 文档(cdcatalog.xml)转换为 XHTML: 创建 XSL 样式表 然后创建一个带有转换模板的 XSL 样式表(cdcatalog.xsl):,把 XSL 样式表链接到 XML 文档,向 XML 文档(cdcatalog.xml)添加 XSL 样式表引用: 如果您使用的浏览器兼容 XSLT,它会很顺利地把您的 XML 转换为 XHTML。 Empir

7、e Burlesque Bob Dylan USA Columbia 10.90 1985 , 元素, 元素定义输出文档的格式。 注释: 是顶层元素(top-level element),必须是 或 的子节点。 属性method 可选。定义输出的格式,xml、html、text 。 属性version string 可选。设置输出格式的 W3C 版本号。(仅在 method=html or method=xml 时使用)。 属性encoding string 可选。设置输出中编码属性的值。 属性indent 可选。在输出结果树时是否要增加空白;该值必须为 yes 或 no。, 元素,例子 1,

8、输出是 XML 文档,版本为 1.0。字符编码方式被设置为 “ISO-8859-1”,对输出进行缩进,以增进可读性: . , 元素,例子 2,输出 HTML 文档,版本是 4.0。字符编码方式设置为 “ISO-8859-1”,对输出进行缩进,以增进可读性: . . , 元素, 元素用于构建模板。 模板在很多方面都与函数非常类似。在使用上,必须首先声明(可以指定模板的名称、参数、返回类型等等),然后在合适的地方显式地调用该模板(在遍历文档树节点的过程中、或者直接调用),才能够执行相应的转换规则。,模板的声明,完整的模板声明语法 :, . , 和 之间的内容相当于一个函数的函数体,表示在调用该模板

9、时应该执行的具体操作。 xsl:template 元素开始标记中的属性 match、name、mode 和 priority 则用于描述该模板的相关信息。,模板的属性,match 属性用于关联 XML 元素和模板。match 属性也可用来为整个文档定义模板。 match=/ 属性则把此模板与 XML 源文档的根相联系。 match 属性的值是 XPath 表达式。 元素内部的内容定义了写到输出结果的 HTML 代码。 name属性用于定义模板的名称。,模板调用的方式,在 XSLT 中,模板的调用分为两种方式:,根据模板的匹配路径(在遍历的过程中)进行调用,具体有两种情况: 对于模板 xsl:t

10、emplate match=/,XSLT 处理器将在碰到 XML 文档的文档节点时自动调用该模板;就好像作为程序执行的入口,Java 虚拟机自动调用主类的 main(.) 方法。 对于其他的模板 match=other-pattern,将在模板 xsl:template match=/ 的转换规则(函数体)中通过指出匹配路径的方式(使用 xsl:apply-templates)进行隐式地、或者显式地调用; 根据模板名称属性(name)进行调用,使用 xsl:call-template name=template-name 进行调用。,模板调用的示例,也可以使用 name 属性为模板指定一个名称

11、,使其成为命名模板 。, 命名模板 one 命名模板 another Hello ,XSLT 处理器将调用命名模板 one(实际上名称 one 没有作用,因为是自动调用的),然后在模板 one 中使用 xsl:call-template 直接调用名为 another 的模板,在模板 another 执行结束之后,继续执行模板 one 的后续指令,这个过程非常类似于函数的调用。, 元素, 元素用于提取某个选定节点的值,并把值添加到转换的输出流中 select 属性的值是一个 XPath 表达式。 对于文本节点和属性节点,xsl:value-of select=“.” 当然提取的是文本节点的内容和

12、属性节点的取值 对元素节点使用 ,那么将得到元素节点的 String-Value(该元素及其子元素的文本节点内容之和)。, 元素, 元素可用于选取指定的节点集中的每个 XML 元素。 select 属性的值是一个 XPath 表达式。 xsl:for-each 的开始标记和结束标记之间,是循环处理的过程体,相当于 C# 中 foreach 循环。 xsl:for-each 循环体中的 XSLT 转换指令将应用于 select 属性所选定的节点,每个选定的节点将成为新的上下文。, 元素,结果过滤 通过在 元素中添加一个选择属性的判别式,我们也可以过滤从 XML 文件输出的结果。 合法的过滤运算符

13、: = (等于) != (不等于) (大于), 元素, 元素用于对结果进行排序。 如需对结果进行排序,只要简单地在 XSL 文件中的 元素内部添加一个 元素 select 属性指示需要排序的 XML 元素。 data-type 可选。规定被排序的数据的数据类型。默认是 “text”。 Text,number,qname order 可选。规定排序顺序。默认是 ascending。 ascending,descending 查看此 XSL 文件, 元素, 元素用于放置针对 XML 文件内容的条件测试。 如需放置针对 XML 文件内容的条件测试,请向 XSL 文档添加 元素。 语法 . .如果条件

14、成立则输出. . , 元素,在何处放置 元素 如需添加有条件的测试,请在 XSL 文件中的 元素内部添加 元素: 必选的 test 属性的值包含了需要求值的表达式。 上面的代码仅仅会输出价格高于 10 的 CD 的 title 和 artist 元素。 例子,元素, 元素用于结合 和 来表达多重条件测试。 语法 . 输出 . . 输出 . ,xsl:choose条件分支选择,xsl:choose、xsl:otherwise 和 xsl:when 可以进行多个条件的测试,实际上就相当于 Java 中的 swtich 和 case。,元素, 元素应用实例 在 CD 的价格高于 10 时向 Arti

15、st 列添加粉色的背景颜色。 查看XSLT文件 在 CD 的价格高于 10 时向 Artist 列添加粉色的背景颜色,并在 CD 的价格高于 9 且低于等于 10 时向 Artist 列添加灰色的背景颜色。 另一个例子, 元素, 元素可把一个模板应用于当前的元素或者当前元素的子节点。 select 属性 包含一个XPath表达式,选定应用模板的节点集,就仅仅处理与属性值匹配的子元素。 当没有select属性时,表示选择当前节点的所有子节点。 另一例子,元素, 元素用于在输出文档中创建元素节点。 创建一个名为 singer 的元素,该元素包含每个 artist 元素的值:, ,元素, 元素用于向元素添加属性。 元素会替换名称相同的已有属性。 向 picture 元素添加 source 属性: 向 picture 元素添加 source 属性,并使用 images/name 中的值为其赋值: , 元素, 元素可创建当前节点的一个副本(拷贝)。 注释:当前节点的 Namespace 节点会被自动复制,但是当前节点的子节点和属性不会被自动复制! XML源文件Persons.xml 重构该XML文档,使得Person元素有一个FirstName属性和一个LastN

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论