资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,XML,实用教程,第5章,配合,例子源代码一起使用,Power point,制作:耿祥义 张跃平,XML,与,XSL,2024/10/4,1,本章主要内容,XSL,样式表文件与,XSL,变换,XSL,样式表文件中的模板,标记与模板匹配,模板调用,常用,XSL,标记,难点,模板调用,第5,章 导读,2024/10/4,2,概述,XML,关心的是数据的结构,并能很好、方便地描述数据。但是,数据的显示外观也是很重要的一个方面,,XML,能有效地分离数据结构和数据显示,,W3C,为,XML,数据显示发布了两个建议规范,CSS(,层迭样式表)和,XSL(,可扩展样式语言),上章重点讲述怎样用,CSS,显示,XML,标记中的文本内容,本章讲述,XSL。XSL,提供了比,CSS,更强大的显示数据的能力,利用,XSL,可以为,XML,提供像,HTML,那样美观的数据显示。,2024/10/4,3,5.1.1,初识,XSL,样式表文件,5.1,XSL,样式表文件与,XSL,变换,为了使用,XSL,语言为,XML,提供显示数据的外观,其关键点是编写一个称作,XSL,样式表的文件,简称,XSL,文件。,XSL,样式表文件是由一些特殊的标记构成的文本文件,浏览器通过处理这些特殊的标记来显示,XML,文件中数据。,2024/10/4,4,5.1.2,XML,关联,XSL,文件,XML,文件需使用使用操作指令:,将,XML,文件和,XSL,样式表关联。,例题5-1,p85,2024/10/4,5,5.1.3,XSL,变换与,HTML,XSL,处理器把,XSL,样式表文件转化为,HTML,文件的过程称做,XSL,变换(,XSL Tranformation,,,XSLT,)。,IE5.5,(,以上版本)带有,XSL,处理器。,通过关联,XSL,样式表,,XML,有效地分离了数据的结构和数据的显示,,,步骤如下:,1.首先针对,XML,文件编写,XSL,样式表文件。,2.将,XML,文件和,XSL,样式表关联。,3.将,XSL,样式表转化为,HTML,文件,(浏览器内置的,XSL,转化器负责,)。,2024/10/4,6,5.2,XSL,样式表文件中的模板,XSL,样式表是扩展名为“,.,xsl,”,的文本文件,和,XML,文件类似,,XSL,文件的内容也是由标记及其内容组成,只不过按着,W3C,规范,这些标记都有着特殊的意义,.,XSL,样式表的目的是为和其关联的,XML,文件提供数据显示的外观,为了不引起混淆,我们将,XSL,样式表中的标记称做,XSL,标记、将,XML,文件中的标记称做,XML,标记,。,XSL,样式表文件也必须有,XML,声明,且与其关联的,XML,文件有着同样的编码,,例如:,XSL,样式表文件的根标记的名称必须是,stylesheet,,如果准备让浏览器的,XSL,处理器来实现,XSL,变换,根标记必须有名称空间,,例如:,根标记的内容.,2024/10/4,7,5.2.1,模板,样式表的基本结构就是由标若干个称做“模板”的,XSL,标记组成,简称模板。模板都是根标记的子标记,模板标记的名称都是“,template”,,例如:,模板内容,一个模板的“模板内容”是由,HTML,标记和嵌入其中的,XSL,标记组成。,模板必须有属性,match,,该属性的值是一个特殊的字符串,称做模板的“标记匹配模式”。,如果,XML,文件中的一个,XML,标记匹配于,XSL,样式表文件中的某个模板的“标记匹配模式”,就称该模板是,XML,标记匹配的模板或称,XML,标记与该模板相匹配。,2024/10/4,8,5.2.2,主模板与,XSL,处理器_1,1,.主模板,:,在模板中有一个称作“主模板”的特殊模板,该模板中的,match,属性的值是“/”,,如下所示:,主模板的内容,一个,XSL,样式表文件有且仅有,一个主模板,所谓主模板就是与,XML,文件中根标记匹配的模板。,例题5-2,p88,2024/10/4,9,5.2.2,主模板与,XSL,处理器_2,2.,XSL,处理器:,XSL,处理器,总是从主模板开始实施,XSL,变换。主模板的内,容中可以包括调用其它,模板的“模板调用”标记。,2024/10/4,10,5.3,标记与模板匹配,XSL,样式表文件中的模板的格式中涉及到,“标记匹配模式”,,如下所示:,模板内容,“,标记匹配模式”,就是满足一定条件的一族,XML,标记,其中的每个,XML,标记都称做与“标记匹配模式”相匹配的,XML,标记。如果,XML,文件中的一个,XML,标记是模板的“标记匹配模式”的一个实例,就称该标记是与模板相匹配的,XML,标记,或称模板匹配于该,XML,标记。,XSL,处理器在工作中经常要处理“标记匹配模式”。,2024/10/4,11,5.3.1,XML,子标记匹配的模板,XSL,样式表为,XML,文件中根标记的子,标记提供输出数据的模板,这类模板中的,“标记匹配模式”,可以是子标记的名字或根标记的名字和子标记的名字用“/”分割。,假如,XML,文件的根标记的名字是,student,,它有,name,sex,和,birthday,三个子标记,那么下列三个模板分别是这三个子标记相匹配的模板:,(1),(2),模板的内 容模板的内容,(3),模板的内容,而下列模板是与三个子标记:,name,sex,和,birthday,都相匹配的模板:,模板的内容,2024/10/4,12,5.3.2,任意级别,XML,子标记匹配的模板,通过使用统配符“,*,”可以建立匹配于任何标记的模板,无论该标记是根标记的第几级子标记,。,下列模板:,模板的内容,是与根标记,student,的所有2级子标记(孙标记)相匹配的模板。,更多的与各级标记相匹配的模板,举例如91页。,XML,文件的标记是树型结构,使用“/”分割符必须从根标记出发才能确定出一类标记。,例题5-3,p92,2024/10/4,13,5.3.3,具有指定属性的,XML,子标记匹配的模板,通过使用,“标记属性”,或,“标记属性=属性值”,可以建立与具有指定属性的标记相匹配模板,这样,我们就让名字相同但属性不同的标记匹配于不同的模板。,下列模板:,模板的内容,是与名字为,name,且具有属性,ID,的标记相匹配的模板,无论,name,标记是根标记的哪一级子标记。,例题5-4,p94,2024/10/4,14,5.3.4,使用“”和“|”给出,XML,标记匹配的模板,可以使用“”来给出一个标记需满足的条件,例如:,模板的内容,是与名字为,book,且具有子标记,price,的标记相匹配的模板,无论,book,标记是根标记的哪一级子标记。,可以使用“|”给出几个可以选择的标记,例如:,模板的内容,是与标记名字为“单价”、“库存量”或“生产日期”等标记相匹配的模板,无论这些标记是根标记的哪一级子标记。,2024/10/4,15,5.4.1,模板调用标记,5.4,模板调用,1,.带,select,属性的模板调用标记。,称,是有条件的,XSL,模板调用标记。,例如:,2不带,select,属性的模板调用标记,称,是不带,select,属性的模板调用标记。由于该模板调用标记中没有“标记匹配模式”,所以不带参数,select,的模板调用标记需要作为“,xsl:for-each”,标记的子标记来使用,,例如:,2024/10/4,16,5.4.2,模板调用标记的执行过程_1,1.,对于带,select,属性的模板调用标记,,XSL,处理器首先根据,中的,“标记匹配模式”,到,XML,文件中寻找所有和,“标记匹配模式”,匹配的标记,然后,逐个地为这些标记到,XSL,样式表中寻找匹配的模板,一旦找到匹配的模板,就对该模板的内容实施,XSL,变换,并将变换后的文本嵌入到,HTML,文件中.,2024/10/4,17,5.4.2,模板调用标记的执行过程_2,2.,对于不带,select,属性的模板调用标记,应当作为“,xsl:for-each”,标记中的子标记来使用:,其它内容,其它内容,XSL,处理器首先根据,“,xsl:for-each”,标记中的中的,“标记匹配模式”,到,XML,文件中寻找第一个和,“标记匹配模式”,匹配的标记,假设该标记的名字为“,mateName”,,其路径表示为:“根标记/,mateName”,,一旦找到这样的标记就对“,xsl:for-each”,标记中的内容实施变换,如果“,xsl:for-each”,标记中的内容中有:,模板调用标记,就将该模板标记按着下列带,select,属性的来处理:,然后,再寻找下一个和,“标记匹配模式”,匹配的标记,直到没有匹配的标记为止。,XSL,处理器将依次将,“,xsl:for-each”,标记变换后的内容嵌入到,HTML,文件中。,例题5-5,p96,2024/10/4,18,5.5,常用的,XSL,标记,样式表的基本结构就是模板,模板也是一种标记,模板中有一个重要的参数就是,“,match,”,,,该参数的值决定了哪些,XML,标记和该模板相匹配,关于“,match,”,的取值和作用我们在,5.3,做了详细的介绍。,例题5-6,p98,2024/10/4,19,5.6,xsl:for-each,的用法,“,xsl,:for-each”,XSL,标记的格式如下:,内容,该,XSL,标记必须在模板中使用。,XSL,处理器根据,“,xsl,:for-each”,标记中的中的,“标记匹配模式”,到,XML,文件中寻找第一个与,“标记匹配模式”,匹配的,XML,标记,一旦找到这样的,XML,标记就对,“,xsl,:for-each”,标记中的,“内容”,实施变换,并将变换后的内容嵌入到,HTML,文件中。然后,再寻找下一个和,“标记匹配模式”,匹配的,XML,标记,直到没有匹配的标记为止。,例题5-7,p99,2024/10/4,20,5.7,xsl:value-of,的用法,“,xsl,:value-of”,XSL,标记的格式为,该,XSL,标记必须在模板中使用,即作为模板的子孙标记。当,“标记匹配模式”,是特殊的,“.”,时,可以将,简写为,XSL,处理器将,“,xsl,:value-of,”,标记变换为和,“标记匹配模式”,相匹配的,XML,标记及其子孙标记的文本内容。,对于下列模板:,其中的,将被变换为,“张三”,标记及其子标记的文本内容,张三一定是“大学生”的子标记。,将被变换为“大学生”标记及其子标记的文本内容。,例题5-8,p101 ,,例题5-9,p102,2024/10/4,21,5.8,xsl:copy,的用法,“,xsl,:copy,”,XSL,标记的格式为,或,文本内容,该,XSL,标记必须在模板中使用,即作为模板的子孙标记。,“,xsl:copy,”,的作用是获取和它的父标记中,“标记匹配模式”,匹配的,XML,标记的名称及标记符号。也就是说,如果一个,XSL,标记中有,“标记匹配模式”,,那么我们可以将,“,xsl:copy,”,做为子标记,以便获得和,“标记匹配模式”,匹配的,XML,标记的名称与符号。,例题5-10,p104,2024/10/4,22,5.9,xsl:if,的用法,“,xsl,:if,”,XSL,标记的格式如下:,标记内容,该,XSL,标记必须在模板中使用,即作为模板的子孙标记。,2024/10/4,23,5.9.1,属性条件,如果想判断和,“,.,”,匹配,XML,标记是否有某个属性(不管属性值如何),就可以使用,“,xsl:if,”,标记的下列格式:,内容,2024/10/4,24,5.9.2,属性值条件,如果想判断和“.”匹配,XML,标记是否有某个属性,并判断该属性值和某个特定属性值进行“关系比较”后的结果是否为真,就可以使用“,xsl:if”,标记的下列两种格式。,格式,1
展开阅读全文