第5章之XSL转换XML文档

上传人:仙*** 文档编号:170973910 上传时间:2022-11-23 格式:PPT 页数:36 大小:238.50KB
返回 下载 相关 举报
第5章之XSL转换XML文档_第1页
第1页 / 共36页
第5章之XSL转换XML文档_第2页
第2页 / 共36页
第5章之XSL转换XML文档_第3页
第3页 / 共36页
点击查看更多>>
资源描述
第第5 5章章 使用使用XSLXSL转换转换XMLXML文档文档XSLXSL概述概述5.1XSLXSL模板模板5.2 XSL XSL节点选择节点选择5.3 XSL XSL控制指令控制指令5.4 XSL XSL应用实例应用实例5.55.1 XSL5.1 XSL概述概述5.1.1 XSL基本概念基本概念 XML关心的是数据的结构,并能很好、方便地关心的是数据的结构,并能很好、方便地描述数据。但是,数据的显示外观也是很重要的描述数据。但是,数据的显示外观也是很重要的一个方面,一个方面,W3C为为XML数据显示发布了两个建议数据显示发布了两个建议规范规范CSS(层迭样式表)和(层迭样式表)和XSL(可扩展样式语(可扩展样式语言)。言)。本章前半部分重点讲述怎样用本章前半部分重点讲述怎样用CSS显示显示XML标标记中的文本内容,下半部分讲述记中的文本内容,下半部分讲述XSL。XSL提供提供了比了比CSS更强大的显示数据的能力,利用更强大的显示数据的能力,利用XSL可可以把以把XML转换成转换成HTML从而有美观的数据显示。从而有美观的数据显示。XSL的全称是的全称是eXtensible Stylesheet Language,即可扩展样式语言,是目前用来设计即可扩展样式语言,是目前用来设计XML文档文档显示样式的主要技术之一。显示样式的主要技术之一。XSL样式表文档的内容完全符合样式表文档的内容完全符合XML的语法的语法规定,因而可以将其看成是一种特殊的规定,因而可以将其看成是一种特殊的XML文文档。档。在显示在显示XML文档时,文档时,XSL 样式表要比样式表要比CSS样样式表更具威力且更富弹性。一个式表更具威力且更富弹性。一个XML文档链接文档链接相关的相关的XSL样式表后,即可直接在样式表后,即可直接在IE 浏览器中浏览器中打开,并按样式表指定的格式显示出文档内容。打开,并按样式表指定的格式显示出文档内容。5.1.2 XML节点树节点树XML文档的层次结构像是一颗倒挂的树,称文档的层次结构像是一颗倒挂的树,称为为XML节点树。文档中的每一个组件,包括处节点树。文档中的每一个组件,包括处理指令、注释或各个元素都是节点树中的一个节理指令、注释或各个元素都是节点树中的一个节点。点。XML节点树从代表整个文档的根节点开始,节点树从代表整个文档的根节点开始,其下是其下是XML文档声明、处理指令及根元素等子文档声明、处理指令及根元素等子节点,而在根元素之下则是各层次子元素构成的节点,而在根元素之下则是各层次子元素构成的一系列子节点。一系列子节点。注意:根节点代表整个注意:根节点代表整个XML文档,而根元素文档,而根元素则是指最上层的一个元素,它只是根节点的一个则是指最上层的一个元素,它只是根节点的一个子节点。子节点。例例5.1.xml5.1.3 XSL文档的创建与应用文档的创建与应用1XSL文档的创建文档的创建XSL文档以文档以.xsl为其文件扩展名,与为其文件扩展名,与XML文档一样也是一种文本文件,可用任何一文档一样也是一种文本文件,可用任何一种文本编辑软件进行创建和修改。种文本编辑软件进行创建和修改。2XSL文档的组成文档的组成XSL文档基本组成形式:文档基本组成形式:说明:说明:因为因为XSL本身是一个本身是一个xml文档,所以在开头,文档,所以在开头,需要有需要有XML声明语句,文档中的每一个元素和声明语句,文档中的每一个元素和标记都必须符合标记都必须符合XML规范。规范。XSL文件的根元素必须是由文件的根元素必须是由 xsl:stylesheet 开始的开始的XSL样式表声明语句。样式表声明语句。在在XSL文档的根元素下有若干个模板文档的根元素下有若干个模板(template),),模板用来规定模板用来规定XML文档中所匹文档中所匹配元素的输出内容和输出格式。一个配元素的输出内容和输出格式。一个XSL文档文档至少应包含一个与根节点匹配的模板。至少应包含一个与根节点匹配的模板。在模板中也可以使用各种在模板中也可以使用各种HTML标记。标记。3XSL文档的引用文档的引用在在XML文档中引用文档中引用XSL样式表的方法是在样式表的方法是在序言部分添加如下形式的指令:序言部分添加如下形式的指令:例题例题5-1 p85XSL处理器把处理器把XSL样式表文件转化为样式表文件转化为HTML文件的过程称做文件的过程称做XSL变换(变换(XSL Tranformation,XSLT)。)。IE5.5(以上版本)带有(以上版本)带有XSL处理器。处理器。通过关联通过关联XSL样式表,样式表,XML有效地分离了有效地分离了数据的结构和数据的显示数据的结构和数据的显示,步骤如下:步骤如下:1.首先针对首先针对XML文件编写文件编写XSL样式表文件。样式表文件。2.将将XML文件和文件和XSL样式表关联。样式表关联。3.将将XSL样式表转化为样式表转化为HTML文件文件(浏览器内浏览器内置的置的XSL转化器负责转化器负责)。4 XSL变换与变换与HTML 5.2.15.2.1样式表文件中的模板样式表文件中的模板样式表的基本结构就是由标若干个称做样式表的基本结构就是由标若干个称做“模板模板”的的XSL标记组成,简称模板。模板都是根标记的标记组成,简称模板。模板都是根标记的子标记,模板标记的名称都是子标记,模板标记的名称都是“template”,例如:例如:模板内容模板内容 一个模板的一个模板的“模板内容模板内容”是由是由HTML标记和嵌标记和嵌入其中的入其中的XSL标记组成。标记组成。模板必须有属性模板必须有属性match,该属性的值是一个,该属性的值是一个特殊的字符串,称做模板的特殊的字符串,称做模板的“标记匹配模式标记匹配模式”。如果如果XML文件中的一个文件中的一个XML标记匹配于标记匹配于XSL样式表文件中的某个模板的样式表文件中的某个模板的“标记匹配模式标记匹配模式”,就称该模板是就称该模板是XML标记匹配的模板或称标记匹配的模板或称XML标标记与该模板相匹配。记与该模板相匹配。一旦匹配就可以使用该模板中的规则把匹配一旦匹配就可以使用该模板中的规则把匹配的的XML元素标记的内容转换成元素标记的内容转换成html从而以某种从而以某种格式显示在网页上格式显示在网页上5.2.2 主模板与主模板与XSLXSL处理器处理器_1_1 1.主模板主模板:在模板中有一个称作在模板中有一个称作“主模板主模板”(或者叫根模板)(或者叫根模板)的特殊模板的特殊模板,该模板中的该模板中的match属性的值是属性的值是“/”,如下所示:,如下所示:主模板的内容主模板的内容 一个一个XSL样式表文件有且仅有样式表文件有且仅有一个主模板,所谓主模板就是与一个主模板,所谓主模板就是与XML文件中根节点匹配的模板。文件中根节点匹配的模板。见下例:见下例:张大山张大山 1993年年11月月22日出生日出生 最终显示结果:最终显示结果:张大山张大山 1993年年11月月22日出生日出生 5.2.2 5.2.2 主模板与主模板与XSLXSL处理器处理器_2_22.XSL处理器处理器:XSL处理器总是从主模板开始实施处理器总是从主模板开始实施XSL变换。主模板的内容中可以包括调用其它模变换。主模板的内容中可以包括调用其它模板的板的“模板调用模板调用”标记标记:根据上面的根据上面的“标记匹配模式标记匹配模式”找到匹配的模板找到匹配的模板(即模板的(即模板的match属性值和该属性值和该select属性值相匹属性值相匹配),然后调用之。配),然后调用之。例题例题5-2 p88 5.2.2 主模板与主模板与XSLXSL处理器处理器_2 _2 找到匹配标记的模板找到匹配标记的模板主模板主模板模板调用标记模板调用标记模板模板1模板模板n标记标记1标记标记n执行和标记执行和标记1匹配的模板匹配的模板执行和标记执行和标记n匹配的模板匹配的模板 执行模板执行模板1的内容后得到的文本的内容后得到的文本 执行模板执行模板n的内容后得到的文本的内容后得到的文本 张大山张大山 李小林李小林转换后的结果:转换后的结果:张大山张大山 李小林李小林模板调用模板调用5.3 XSL5.3 XSL节点选择节点选择XSL样式表文件中的模板的格式中涉及到样式表文件中的模板的格式中涉及到“标记标记匹配模式匹配模式”,如下所示:,如下所示:模板内容模板内容 “标记匹配模式标记匹配模式”就是满足一定条件的一族就是满足一定条件的一族XML标记。如果标记。如果XML文件中的文件中的XML标记与模板标记与模板的的“标记匹配模式标记匹配模式”相匹配,就称模板匹配于该相匹配,就称模板匹配于该XML标记,该模板内容将对标记,该模板内容将对XML标记内容实行标记内容实行变换。变换。5.3.1 与与XML子标记匹配的模板子标记匹配的模板 XSL样式表为样式表为XML文件中根标记的子标记提供输出数文件中根标记的子标记提供输出数据的模板,这类模板中的据的模板,这类模板中的“标记匹配模式标记匹配模式”可以是子标可以是子标记的名字或根标记的名字和子标记的名字用记的名字或根标记的名字和子标记的名字用“/”分割。分割。假如假如XML文件的根标记的名字是文件的根标记的名字是student,它有,它有name,sex和和birthday三个子标记,三个子标记,name下又有下又有score子标记,那子标记,那么下列三个模板分别是这三个子标记相匹配的模板:么下列三个模板分别是这三个子标记相匹配的模板:(1)模板的内容模板的内容(2)模板的内容模板的内容(3)模板的内容模板的内容 而下列模板是与四个子标记:而下列模板是与四个子标记:name,score,sex和和birthday都相匹配的模板:都相匹配的模板:模板的内容模板的内容 5.3.2 与与xml任意级别的子标记匹配的任意级别的子标记匹配的模板模板通过使用统配符通过使用统配符“*”可以建立匹配于任何级别标可以建立匹配于任何级别标记的模板,无论该标记是根标记的第几级子标记。记的模板,无论该标记是根标记的第几级子标记。下列模板:下列模板:模板的内容模板的内容 是与根标记是与根标记student下的下的name标记下的所有级别标记下的所有级别的子标记相匹配的模板。的子标记相匹配的模板。5.3.2 与与xml任意级别的子标记匹配的任意级别的子标记匹配的模板模板 模板的内容模板的内容 XML文件的标记是树型结构,使用文件的标记是树型结构,使用“/”分割符必须从分割符必须从根标记出发根标记出发才能确定出一类标记。下列模板无效:才能确定出一类标记。下列模板无效:模板的内容模板的内容 5.3.2 与与xml任意级别的子标记匹任意级别的子标记匹配的模板配的模板建立匹配于根标记下的任意级别的建立匹配于根标记下的任意级别的xml子标记的子标记的模板还有一种简便的方法,使用模板还有一种简便的方法,使用“/”。模板的内容模板的内容 是与任何名字为是与任何名字为score的标记相匹配,无论该标记的标记相匹配,无论该标记是根标记下的哪一级子标记。是根标记下的哪一级子标记。又如:又如:5.3.2 与与xml任意级别的子标记匹配的任意级别的子标记匹配的模板模板 模板的内容模板的内容 模板的内容模板的内容 P92例例5-35.3.3 选择指定的元素属性选择指定的元素属性在一些在一些XSL样式表的特定标记中,同样可样式表的特定标记中,同样可以选择和输出以选择和输出XML文档元素的属性内容,文档元素的属性内容,其语法格式为:其语法格式为:属性名属性名例如:例如:5.3.3 匹配指定元素属性的模板匹配指定元素属性的模板通过使用通过使用“标记标记属性属性”或或“标记标记属性属性=属性值属性值”可以建立与具有指定属性的标记相匹配模板,这可以建立与具有指定属性的标记相匹配模板,这样,我们就让名字相同但属性不同的标记匹配于不样,我们就让名字相同但属性不同的标记匹配于不同的模板。同的模板。下列模板:下列模板:模板的内容模板的内容是与名字为是与名字为name且具有属性且具有属性ID的标记相匹配的模板,的标记相匹配的模板,无论无论name标记是根标记的哪一级子标记。标记是根标记的哪一级子标记。例题例题5-4 p945.3.45.3.4使用使用“”和和“|”|”给出给出XMLXML标记标记匹配的模板匹配的模板可以使用可以使用“”来给出一个标记需满足的条件,例如:来给出一个标记需满足的条件,例如:模板的内容模板的内容 是与名字为是与名字为book且具有子标记且具有子标记price的标记相匹配的模板,的标记相匹配的模板,无论无论book标记是根标记的哪一级子标记。标记是根标记的哪一级子标记。可以使用可以使用“|”给出几个可以选择的标记,例如:给出几个可以选择的标记,例如:模板的内容模板的内容是与标记名字为是与标记名字为“单价单价”、“库存量库存量”或或“生产日期生产日期”等标记相匹配的模板,无论这些标记是根标记的哪一级等标记相匹配的模板,无论这些标记是根标记的哪一级子标记。子标记。5.45.4常用的常用的XSLXSL标记标记5.4.1 xsl:for-each的用法的用法“xsl:for-each”XSL标记的格式如下:标记的格式如下:内容内容 该该XSL标记必须在模板中使用。标记必须在模板中使用。XSL处理器根据处理器根据“xsl:for-each”标记中的中的标记中的中的“标记匹配模式标记匹配模式”到到XML文件中寻找第一个文件中寻找第一个与与“标记匹配模式标记匹配模式”匹配的匹配的XML标记,标记,一旦找到这样的一旦找到这样的XML标记就对标记就对“xsl:for-each”标记中的标记中的“内容内容”实施变换,并将变换后的内容嵌入到实施变换,并将变换后的内容嵌入到HTML文件中。文件中。然后,再寻找下一个和然后,再寻找下一个和“标记匹配模式标记匹配模式”匹配的匹配的XML标记,直标记,直到没有匹配的标记为止。到没有匹配的标记为止。例题例题5-7 p99对于不带对于不带select属性的模板调用标记,应当作为属性的模板调用标记,应当作为“xsl:for-each”标记中的子标记来使用:标记中的子标记来使用:其它内容其它内容 其它内容其它内容 XSL处理器首先根据处理器首先根据“xsl:for-each”标记中的标记中的中的中的“标记匹配模式标记匹配模式”到到XML文件中寻找第一文件中寻找第一个和个和“标记匹配模式标记匹配模式”匹配的标记匹配的标记而而模板调用标记就模板调用标记就会调用与当前找到的标记下的所有级别子会调用与当前找到的标记下的所有级别子标记相匹配的模板。即相当于执行以下模标记相匹配的模板。即相当于执行以下模板调用:板调用:然后,再寻找下一个和然后,再寻找下一个和“标记匹配模式标记匹配模式”匹配的标记,直到没有匹配的标记为止。匹配的标记,直到没有匹配的标记为止。XSL处理器将依次将处理器将依次将“xsl:for-each”标记变标记变换后的内容嵌入到换后的内容嵌入到HTML文件中。文件中。例题例题5-5 p965.4.2 xsl:value-of的用法的用法 “xsl:value-of”XSL标记的格式为:标记的格式为:该该XSL标记必须在模板中使用,即作为模板的标记必须在模板中使用,即作为模板的子孙标记。当子孙标记。当“标记匹配模式标记匹配模式”是特殊的是特殊的“.”时,时,可以将可以将简写为简写为 XSL处理器将处理器将“xsl:value-of”标记变换为和标记变换为和“标记匹配模式标记匹配模式”相匹配的相匹配的XML标记及其子孙标记及其子孙标记的文本内容。标记的文本内容。5.4.2 xsl:value-of的用法的用法 其中的其中的将被变换将被变换为为“张三张三”标记及其子标记的文本内容,张三一定标记及其子标记的文本内容,张三一定是是“大学生大学生”的子标记。的子标记。将被变换为将被变换为“大学生大学生”标记及其子标记的文本内容。标记及其子标记的文本内容。注意:注意:xsl:value-of 标记只可能输出父标记及其子标记只可能输出父标记及其子孙标记的文本内容。孙标记的文本内容。例题例题5-8 p101 ,例题,例题5-9 p1025.4.3 xsl:if的用法的用法 内容内容 该该XSL标记必须在模板中使用,如果和标记必须在模板中使用,如果和“.”匹配匹配XML标记有该子标记,就可以使用就执行标记有该子标记,就可以使用就执行内容内容部分,否则就不执行。例如:部分,否则就不执行。例如:5.4.3 xsl:if的用法的用法 内容内容 表示当前标记下有子标记,并且子标记有表示当前标记下有子标记,并且子标记有内指定值的属性,内指定值的属性,则执行内容部分。如:则执行内容部分。如:5.5 XSL5.5 XSL应用实例应用实例P152例例5.16P170例例5.21练习题练习题(1)样式表的根元素为()样式表的根元素为()。)。A.xsl:stylesheet B.xsl:import C.xsl:include D.xsl:template(2)在)在xsl中,匹配中,匹配XML的根节点使用(的根节点使用()。)。A.*号号 B.号号 C./号号 D.XML中根元素名称中根元素名称(3)()()元素来访问所有符合条件的子节点。)元素来访问所有符合条件的子节点。A.xsl:if B.xsl:for-each C.xsl:choose D.xsl:otherwise(4)添加多个限制条件,使用()添加多个限制条件,使用()号分隔。)号分隔。A.|B.|C./D.ACBCA练习题练习题(1)将)将XML文档与文档与XSL文档链接,需要设置文档链接,需要设置stylesheet指令的指令的type属性为(属性为()。)。(2)应用模板元素使用()应用模板元素使用()。)。(3)匹配任意节点使用()匹配任意节点使用()。)。(4)()()用于匹配当前节点,包括处理)用于匹配当前节点,包括处理指令、注释和文本节点。指令、注释和文本节点。(5)对于不带)对于不带select属性的模板调用标记,应属性的模板调用标记,应当作为(当作为(for-each)标记中的子标记来使用)标记中的子标记来使用text/xsl xsl:apply-templates*点号点号
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!