第5章XML与XSL

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1第5章XML与XSL——使用XSL格式化XML2XML数据显示两种方法CSS层叠样式表XSL可扩展样式语言3什么是XSL?XSL(eXtensibleStylesheetLanguage)可扩展样式表语言XSL本身是一个完整的xml文档,用以实现文档内容和表现形式的分离XSL包含3部分:用于转换XML文档的语言——XSLT用于在XML文档中导航的语言——XPath格式化XML文档的语言——XSL-FO4XSL如何工作在转换的过程中,XSLT用XPath来定义源文档中与一个或多个预先确定的模板相匹配的部分。当找到了一个匹配时,XSLT就将源文档中的匹配部分转换成结果文档;而源文档中不与任何一个模板匹配的部分最终在结果中保持不变。5XSL特点只用于处理XML文档,即输入文档只是XML文档可扩展性强。语法实现均由特定名称空间中的元素和属性决定,扩展名称空间内的元素和属性较简单XSL编程能力远远达不到一门独立编程语言强大XSL编程主要工作是对需要处理的XML文档中的节点(元素或属性)定义处理模板,是面向对象的;控制程序执行是通过一个模板调用其它模板,是面向过程的6XML文档结构树一个结构完整的XML可以转换为一棵结构完整的结构树。结构树从根节点开始(注意,根节点不是根元素)。根节点在XSL中使用”/”来代表,根元素用其名称来代表。?xmlversion=1.0encoding=GB2312?商品列表商品商品名称星海电视机/商品名称商品价格6578元/台/商品价格/商品/商品列表7XML关联XSL文件链接XSL到XML要使用XSL样式单来显示XML文档内容,需要按照如下步骤进行:创建保存数据的XML文档。保存数据的XML文档的结构必须完整,但不一定要求有效。创建XSL样式单。链接XSL样式单到XML文档。8XSL样式单组成XSL样式单文件的扩展名为.xslXSL样式单的基本结构?xmlversion=“1.0”encoding=“gb2312”?xsl:stylesheetxmlns:xsl=……/xsl:stylesheet?xmlversion=1.0encoding=UTF-8?xsl:stylesheetversion=1.0xmlns:xsl=:templatematch=/HTMLH2xsl:value-ofselect=商品列表/商品/商品名称//H2H3xsl:value-ofselect=商品列表/商品/商品价格//H3/HTML/xsl:template/xsl:stylesheet9XML文档引用XSLXML文档使用xml:stylesheet处理指令引用样式单。结构如下:?xml-stylesheettype=“text/xsl”href=“url”?其中,url为XSL样式单文件的位置,该文件可以在本地计算机或WEB上,可以是绝对路径,也可以是相对路径。?xmlversion=1.0encoding=GB2312??xml-stylesheethref=oneXSL.xsltype=text/xsl?商品列表商品商品名称星海电视机/商品名称商品价格6578元/台/商品价格/商品/商品列表10XML关联XSL文件图示XML文件XSL文件HTML文件关联变换源文件目标文件11XSL模板:HTML标记关于XSL样式单中的HTML标记嵌入注意:在这里的HTML标记要严格遵守XML的语法规则。也有区分大小写,有开始标记,须有结束标记,属性值必须用单引号或双引号括起来等。12XSL模板概述XSL文件基本结构根标记xsl:stylesheet根标记内容/xsl:stylesheet根标记子标记:模板元素xsl:template模板内容/xsl:template模板是一系列规则的集合13模板定义元素模板的定义元素:由xsl:template元素定义的模板规则是xsl样式单的最重要的部分。每个模板规则都是一个xsl:template元素。语法格式:xsl:templatematch=“标记匹配模式”模板内容/xsl:template每个xsl:template元素都有一个match属性,用来指定要将此模板规则应用于输入文档的哪个节点。14主模板主模板:样式表文件有与XML文件根标记相匹配的模板,标记匹配模式必须为“/”示例:xsl:templatematch=“/”主模板内容/xsl:templateXSL处理器从主模板开始实施XSL变换15调用模板标记xsl:apply-templates元素用于调用模板,该元素有一个select属性,用来指定元素的处理节点集,调用模板。如果省略,处理引擎将处理元素的子节点。格式:xsl:apply-templatesselect=“标记匹配模式”/空标记16模板调用XSL样式表文件主模板调用模板1调用模板N模板1模板N……XML文件标记1标记N标记匹配标记匹配调用模板调用模板HTML文件转换17标记匹配XML子标记匹配的模板子标记名字或根标记和子标记的名字(用”/”分隔)任意级别的XML子标记匹配的模板使用通配符指定属性的XML标记匹配的模板标记[@属性]或标记[@属性=‘属性值’]使用“[]”和“|”给出XML标记匹配的模板[]给出标记需要的条件|给出几个可选择的标记18学生列表学生学号06041232/学号姓名王力/姓名性别男/性别出生年月1983年8月/出生年月/学生学生班级=“06网络1”学号06032123/学号姓名李熙/姓名性别女/性别/学生/学生列表19根节点匹配符合“/”是根节点匹配符号,可以单独使用。在样式单中,匹配根节点的模板必不可少。模板样式出现的顺序是没有关系。20根元素匹配符合“/*”用于匹配根元素。例如:如果学生列表为根元素,则xsl:templatematch=“学生列表”xsl:apply-templates//xsl:template可以改为:xsl:templatematch=“/*”xsl:apply-templates//xsl:template21直接使用元素名元素名是最直接的选择节点的方式。例如:xsl:templatematch=“学号”/xsl:templatexsl:templatematch=“姓名”/xsl:template22当前节点和当前节点的父节点“.”:代表当前节点;“..”:当前节点的父节点。例如:xsl:templatematch=“学号”xsl:value-ofselect=“.”xsl:value-ofselect=“../姓名”/xsl:template其中的xsl:value-ofselect=“.”取得的是当前节点,即学号的值;xsl:value-ofselect=“../姓名”取得的是当前节点的父节点”学生”的子节点”姓名”的值。23路径选择方式绝对路径:从根节点开始,“/”代表根节点。如:”姓名”节点的绝对路径为:/学生列表/学生/姓名相对路径:在当前节点出发。如果当前节点为”学生列表”,则”姓名”节点的相对路径为:学生/姓名24在路径中使用”*”“*”代表任意节点及其子节点如果只知道”学生列表”的孙子节点”姓名”,而不知道儿子节点,则可用如下来描述:xsl:templatematch=“/”xsl:apply-templatesselect=“学生列表/*/姓名”//xsl:template25在路径中使用”//”“*”只能代表某一层节点,而”//”代表任意多层节点。例如:xsl:templatematch=“//姓名”/xsl:template26选择元素的属性选择元素属性的格式:@属性名例如带有班级属性的学生元素xsl:templatematch=“//学号[@班级]”/xsl:template属性班级为“06网络1班”的学生元素xsl:templatematch=“//学号[@班级=’06网络1班’]”/xsl:template27为模板选择多个元素一个模板应用于某个选定的节点,xsl允许选择多个节点。方法:使用“|”来选择模板匹配多个元素。例如:xsl:templatematch=“姓名|性别|出生年月”xsl:value-ofselect=“.”//xsl:template28为选择的元素添加条件-1为选择的元素添加限制条件,如可以限制元素必须有给定的子元素、给定属性、给定属性值等。限制条件一般放在模板(xsl:template)的match中及xsl:apply-templates中的select中。当限制条件放在match中时,符合限制条件的按条件输出;当限制条件放在select中时,则只输出符合条件的元素。1.限制元素必须有子元素例如:如果需要选择具有“出生年月”子元素的“学生”元素,则可设置模板如下:xsl:apply-templatesselect=“学生[出生年月]”29为选择的元素添加条件-22、添加多个限制条件xsl允许在[]中使用”|”来组合多个限制条件,例如:xsl:apply-templatesselect=“学生[出生年月|性别]”/说明:“学生[出生年月|性别]”选择拥有”出生年月”或”性别”子元素的”学生”节点。30为选择的元素添加条件-33、在条件中使用星号可以使用星号(*)选择符合条件的任意元素。例如:xsl:apply-templatesselect=“*[出生年月]”31为选择的元素添加条件-4限制于元素必须带有给定的属性在[]中使用@来指定元素带有的属性,例如,要选择带有属性班级的学生,可使用如下模板:xsl:apply-templatesselect=“学生[@班级]”/32为选择的元素添加条件-55、限制元素内容为给定字符串在[]中可以使用”=”来判断元素内容是否与给定字符串完全匹配。例如:需要获得班级为”06网络1”的学生的所有数据,可以使用如下模板:xsl:apply-templatesselect=“学生[@班级=’06网络1’]”/33为选择的元素添加条件-66、添加多个限制条件多个条件的连接符:连接符说明举例and连接的条件同时成立@班级=’06网络1’and性别=‘男’or两个条件只要一个条件成立即可@班级=’06网络1’or性别=‘男’not跟当前条件相反not性别=‘男’<小于@成绩<90>大于@成绩>6034访问节点访问单个节点访问多个节点35模式化查询语言所谓模式化查询语言,就是通过相关的模式标记匹配规则表达式从XML里提取数据的特定语句选择模式:xsl:for-each、xsl:value-of和xsl:apply-templates测试模式:xsl:if和xsl:choose匹配模式:xsl:template36访问单个节点xsl:value-of指令用于将节点的内容复制到输出结果中,指令的select属性用于选择被提取值的节点。即具体元素的内容提取出来。它与xsl:apply-templates组合在一起完成搜索节点中指定子节点的值。模板不允许嵌套,如果搜索更深层次的子节点,需要多个模板进行组合。(即模板中不包含其他模板,每个模板都是独立的)。37访问多个节点使用x

1 / 42
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功