您好,欢迎访问三七文档
使用XSL显示XML页面讲解内容1.XSL概述2.XSL文档的创建与应用3.XSL模板1XSL概述--XSL家族SGMLXMLHTMLXSLXSLFOXSLT•XSL的全称是ExtensibleStylesheetLanguage,即可扩展样式语言,是目前用来设计XML文档显示样式的主要技术之一。•XSL主要由两部分组成,即数据转换语言(XSLT)和数据格式化语言(XSL-FO)。目前主要使用数据转换语言XSLT,可以根据需要把XML文档转换成任何一种基于文本格式的文档。•XSL样式表文档的内容完全符合XML的语法规定,因而可以将其看成是一种特殊的XML文档。1.1基本概念XSL简介–实现一条语句的多次呈现;–提供了强大的数据定位能力;–循环、条件、选择等语言控制能力;–完全覆盖CSS功能;–可被脚本调用,对样式实现动态控制。使用XSL转换XML文档XML文档XSL样式表转化后的结果文档XSLT转换器CSS与XSL的比较CSSXSL适用在HTML可以不可以适用在XML可以可以使用的语法CSS样式语法XML语法是否是转换语言否是CSS只是一种格式化语言,具有很大局限性;XSL更为强大1.2XML文档结构树•XML文档的层次结构像是一颗倒挂的树,称为XML文档结构树。文档中的每一个组件,包括处理指令、注释或各个元素都是结构树中的一个节点。•XML文档结构树从代表整个文档的根节点开始,其下是XML文档声明及根元素等子节点,而在根元素之下则是各层次子元素构成的一系列子节点。•注意:根节点代表整个XML文档,而根元素则是指最上层的一个元素。XML文档结构树根元素节点rosterstudentSNnamesex2005133110张列男studentSNnamesex2005133115吴茗芳女......class属性节点数据节点Xpath位置路径/roster/student/roster/student/sex1.3XPath•XPath是XSLT的重要组成部分,是专门用来在XML文档中查找信息的语言。特殊符号含义范例说明/子节点操作符item/itemName匹配item节点下的itemName子节点//循环下降。符号后余下部分可能与文档中的任何节点相匹配item//itemName匹配item节点下,只要有itemName子节点*选择任何元素的通配符book/*book节点下的所有子节点[]可以在其内指定元素或属性,也可加上额外的测试条件book[@isbn]book节点下有属性isbn的节点|与多个节点匹配book|title与book或title匹配.当前节点.取得当前节点..父节点../itemName父节点下的itemName节点位置匹配举例含义匹配结果/student[1]student节点的第一个子节点name节点/student[last()]student节点的最后一个子节点skill节点/student[position()1]student节点下位置号大于1的子节点sex、birthday、score和skill节点属性与属性值匹配举例含义匹配结果//student[@ID]所有具有ID属性的student节点ID号为101、102、103、104、105的student节点//student[@ID=”103”]所有ID值等于103的student节点ID值等于103的student节点亲属关系匹配举例含义//skill/parent::*所有skill节点的父节点//skill/ancestor::*所有skill节点的祖先节点/student/child::*student节点的子节点//student/self::*所有student节点本身2XSL文档的创建与应用•XSL文档的组成?xmlversion=1.0encoding=gb2312?xsl:stylesheetxmlns:xsl=“:templatematch=/!--若干控制XML文档元素显示的规则--/xsl:template……/xsl:stylesheet2XSL文档的创建与应用–在XSL文档的开头,需要有XML声明语句,文档中的每一个元素和标记都必须符合XML规范。–必须有由xsl:stylesheet开始的XSL样式表声明语句。–XSL文档的模板(template)用来规定XML文档中所匹配元素的输出内容和输出格式。一个XSL文档至少应包含一个与根节点匹配的模板。–W3C为XSL定义了若干个特定的元素或标记,包括:stylesheet、template等,用来实现对XML文档元素的显示格式进行控制。–在XSL文档中也可以使用各种HTML标记。说明:XSL文档以.xsl为其文件扩展名,与XML文档一样也是一种文本文件,可用任何一种文本编辑软件进行创建和修改。•XSL文档的引用2XSL文档的创建与应用在XML文档中引用XSL样式表的方法是在序言部分添加如下形式的指令:?xml-stylesheettype=text/xslhref=URL?•XSL文档的创建3XSL模板•模板是XSL中最重要的概念,一个XSL文件至少含有一个模板。•XSL元素列表–xsl:stylesheetxsl:apply-templatesxsl:template–xsl:value-ofxsl:for-each–xsl:copyxsl:attributexsl:commentxsl:choose–xsl:whenxsl:otherwisexsl:if•使用模板的优点:–如同程序设计中的模块化设计–有利于人员分工、协作XSL模板元素•两个元素xsl:template和xsl:apply-templates•定义一个模板(函数定义)xsl:templatematch=匹配模式•调用一个模板(函数调用)xsl:apply-templatesselect=模式XPath表达式模式匹配与XPath表达式•XPath是专门用来在XML文档中查找信息的语言。–XML是数据库,XPath就是SQL语言–XML是文件系统,XPath就是目录导航命令•XSL的基本元素语句的select/match/test等属性通常把XPath表达式当作属性值XSL模板示例?xmlversion=1.0encoding=gb2312?xsl:stylesheetversion=1.0xmlns:xsl=:fo=:templatematch=/xsl:apply-templates//xsl:templatexsl:templatematch=学生列表xsl:apply-templates//xsl:templatexsl:templatematch=学生xsl:apply-templatesselect=姓名//xsl:template/xsl:stylesheet?xmlversion=1.0encoding=gb2312??xml-stylesheettype=text/xslhref=2.xsl?学生列表学生编号=10101120姓名张思/姓名年龄20/年龄成绩460/成绩/学生学生编号=10101121姓名李林/姓名年龄19/年龄成绩420/成绩/学生学生编号=10101122姓名Joe/姓名年龄18/年龄成绩450/成绩/学生/学生列表处理根节点的所有子节点处理学生列表节点的所有子节点只处理学生节点的姓名节点节点选择语句xsl:value-of•用来取出XML文件中被选择的元素或属性的内容•语法:xsl:value-of/xsl:value-ofselect=匹配模式/输出当前节点及其所有后继节点的取值输出指定节点的取值,用select属性进行限定XSL模板示例循环判断语句xsl:for-each•作用:循环选择多条数据•语法:xsl:for-eachselect=“匹配模式”order-by=“列表元素!--输出内容--/xsl:for-each排序:列表元素前面是+:升序-:降序xsl:for-each示例1?xmlversion=1.0encoding=GB2312?xsl:stylesheetxmlns:xsl=uri:xslxsl:templatematch=/xsl:for-eachselect=唐詩/五言絕句pstyle=color:blue;font-size:24pt;xsl:value-ofselect=作者/xsl:value-ofselect=標題//ppstyle=color:#ff0055;font-size:18ptxsl:value-ofselect=內容//p/xsl:for-each/xsl:template/xsl:stylesheet?xmlversion=1.0encoding=big5??xml-stylesheethref=poem4.xsltype=text/xsl?唐詩五言絕句作者王維/作者標題竹里館/標題內容獨坐幽篁裡,彈琴復長嘯。深林人不知,明月來相照。/內容/五言絕句五言絕句作者孟浩然/作者標題宿建德江/標題內容移舟泊煙渚,日暮客愁新。野曠天低樹,江清月近人。/內容/五言絕句五言絕句作者王之渙/作者標題登鸛雀樓/標題內容白日依山盡,黃河入海流。欲窮千里目,更上一層樓。/內容/五言絕句/唐詩poem1.xslpoem1.xmlxsl:for-each示例2(排序)?xmlversion=1.0encoding=big5?xsl:stylesheetversion=1.0xmlns:xsl=:templatematch=/tableborder=2xsl:for-eachselect=唐詩/五言絕句order-by=“-作者trtdwidth=15%xsl:value-ofselect=作者//tdtdwidth=20%xsl:value-ofselect=標題//tdtdxsl:value-ofselect=內容//td/tr/xsl:for-each/table/xsl:template/xsl:stylesheet?xmlversion=1.0encoding=big5??xml-stylesheethref=poem5.xsltype=text/xsl?唐詩五言絕句作者王維/作者標題竹里館/標題內容獨坐幽篁裡,彈琴復長嘯。深林人不知,明月來相照。/內容/五言絕句五言絕句作者孟浩然/作者標題宿建德江/標題內容移舟泊煙渚,日暮客愁新。野曠天低樹,江清月近人。/內容/五言絕句五言絕句作者王之渙/作者標題登鸛雀樓/標題內容白日依山盡,黃河入海流。欲窮千里目,更上一層樓。/內容/五言絕句poem2.xml/唐詩poem2.xsl单条件判断语句xsl:if•对匹配条件进行判断,如果为真就执行条件内部的规则。•语法–用元素的名称作为匹配条件•xsl:iftest=元素名称–用元素内容作为匹配条件•xsl:
本文标题:XML第5章
链接地址:https://www.777doc.com/doc-2868166 .html