资源预览内容
第1页 / 共39页
第2页 / 共39页
第3页 / 共39页
第4页 / 共39页
第5页 / 共39页
第6页 / 共39页
第7页 / 共39页
第8页 / 共39页
第9页 / 共39页
第10页 / 共39页
亲,该文档总共39页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
1,XML网页技术实用教程,主编 余以胜,中国水利水电出版社,2,项目4 个人网上图书馆网页设计,用XSL实现个性化显示 小结,3,4.2 XSL变换的基本步骤,在XSL变换中,XSL处理程序读取XML文档和XSL样式表。基于处理程序在XSL样式单中找到的指令,输出新的XML文档。,4,4.3 XSL文件的结构, . . . ,5,4.3.1 XSL样式表中的模板,1、模板标记 XSL样式表的基本结构就是由若干个称为“模板”的标记组成,简称模板。模板都是根标记的子标记,模板标记的名称都是template,例如: 模板内容. ,6,2、根模板,一个XSL样式表必须要有一个根模板。所谓根模板就是和XML文件中的根标记匹配的模板,但是,如果使用浏览器来处理XSL变换,根模板的“标记匹配模式”必须是“/”,如: 模板内容. ,7,8,4.3.2 XSL模板的调用,9,4.4 进行XSL变换的方法,4.4.1 关联XSL 关联XSL文件的方法很简单,只在需要使用XSL文件来定义样式的XML文档中添加如下格式的处理指令就行了: ,10,4.4.2 XSL文件中使用HTML标记,11,4.4.3 在XSL样式表中使用CSS,在XSL文件中使用CSS有两种方式:一种是可以直接设置在文件中使用的HTML标记的Style属性;另外一种是在文件中使用、标记来单独定义HTML标记的样式。使用、标记的方式如下所示:,12, #text display:block; position:absolute; top:30%; left:20%; width:60%; height:60%; border:2px solid; ,13,4.5 常用的XSL标记,样式表的基本结构就是模板,模板也是一种语言,模板中有一个重要的参数就是“match”,该参数的值决定了哪些XML标记和该模板相匹配。 模板变换过程中,还可以使用许多重要的子孙标记,比如,前面用过的“xsl:value-of”标记,“xsl:apply-templates”标记和“xsl:for-each”标记等等。它们都可以作为模板标记的子标记,而且这些XSL标记还可以形成父子关系。,14,4.5.1使用xsl:value-of 标记,定义和用法: 元素可提取选定节点的值。 元素可用于选取某个 XML 元素的值,并把它输出。 注释:select 属性(必选)的值是一个 XPath 表达式。它的工作原理类似对文件系统的定位,比如用一个斜杠来选择子目录。,15,4.5.2使用xsl:for-each 标记,定义和用法: 元素可遍历指定的节点集中的每个节点。 语法: 属性: 属性值描述selectexpression必需。被处理的节点集。,16,4.5.3使用xsl:element标记,xsl:element元素将元素插入到输出文档中。元素名由xsl:element元素的name特性中的特性值模板给出。元素的内容来自于xsl:element元素的内容,此元素可能包括要插入这些项的xsl:attribute、xsl:pi和xsl:comment指令.,17,4.5.4使用xsl:attribute标记,只使用文字特性,就可以将特性包括在输出文档中。例如,要插入带有ALIGN特性(其值为CENTER)的DIV元素,只需在样式单的适当位置处键入和即可。但是,为了确定特性值,有时甚至是为了确定特性名,常常不得不依赖于从输入文档中读取的数据。,18,4.5.5使用xsl:pi生成处理指令标记,xsl:pi元素将指令放在输出文档中。处理指令的目标由所需的name特性指定。xsl:pi元素的内容成为处理指令的内容。例如,下面的规则将PROGRAM元素用gcc处理指令代替: -04 ,19,4.5.6使用xsl:comment生成注释标记,xsl:comment元素在输出文档中插入注释。它没有特性。其内容为注释文本。例如, There was an atom here once. ,20,4.5.7使用xsl:text生成文本,xsl:text元素将其内容作为文字文本插入到输出文档中。例如,下面的规则将每个ATOM元素用字符串“There was an atom here once”代替。 There was an atom here once. ,21,4.5.8使用xsl:copy复制当前节点,xsl:copy元素将源代码复制到输出文档中。子元素、特性和其他内容不会自动复制。但是,xsl:copy元素的内容也是选择要复制这些内容的xsl:template元素。当将文档从某个标记符号集转换成相同的或相近的相关标记符号集时,这种方法通常是有用的。例如,下面的模板规则删除原子的特性和子元素,并用其内容值来代替: ,22,4.5.9使用xsl:number为节点计数,xsl:number在输出文档中插入格式化整数。由expr特性计算出来的数值,通过四舍五入成最接近的整数,然后根据format特性值,对此整数进行格式化,从而获得整数值。为这两个特性提供了恰当的缺省值。,23,4.5.10使用xsl:if 标记,xsl:if元素提供了根据模式来改变输出文档的简单途径。xsl:if的test特性含有选择表达式,用来计算布尔值。如果此表达式为true,即输出xsl:if元素的内容;否则,不输出xsl:if元素的内容。,24,4.5.11使用xsl:choose标记,根据几个可能的条件,xsl:choose元素从几个的输出结果中选择一个。xsl:when子元素提供各种条件及其相关的输出模板。xsl:when元素test特性为布尔值的选择表达式。如果多个条件都为真,那么只显示第一个为真的条件。如果xsl:when元素都不为真,那么显示xsl:otherwise子元素的内容。,25,4.6 匹配节点的模式,xsl:template元素的match特性支持复杂的语法,允许人们精确地表达想要和不想要与哪个节点匹配。xsl:apply-templates、xsl:value-of、xsl:for-each、xsl:copy-of和xsl:sort的select特性支持功能更加强大的语法的超集,允许人们精确地表达想要和不想要选择哪个节点。,26,4.6.1 匹配根节点,为了使输出的文档结构整洁。从XSL变换的第一个输出内容应为输出文档的根元素。因此,XSL样式单一般以应用于根节点的规则开始。要在规则中指定根节点,可将其match特性设置为合适的值。 ,27,4.6.2 匹配元素名,最基本的模式只包含一个元素名,用来匹配所有带有该名的元素。例如,下面的模板与ATOM元素相匹配,并将ATOM元素的ATOMIC_NUMBER的子元素标成粗体: ,28,4.6.3 使用/字符匹配子节点,在match特性中并不局限于当前节点的子节点,可使用/符号来匹配指定的元素后代。当单独使用/符号时,它表示引用根节点。但是,在两个名称之间使用此符号时,表示第二个是第一个的子代。例如,ATOM/NAME引用NAME元素,NAME元素为ATOM元素的子元素。 在xsl:template元素中,这种方法能够用来只与某些给定类型的元素进行匹配。例如,下面的模板规则将ATOM子元素的SYMBOL元素标记为strong。此规则与不是ATOM元素的直系子元素的SYMBOL元素无关。,29,4.6.4 使用/符号匹配子代,有时候,尤其是使用不规则的层次时,更容易的方法就是越过中间节点、只选择给定类型的所有元素而不管这些元素是不是直系子、孙、重孙或其他所有的元素。双斜杠(/)引用任意级别的后代元素。例如,下面的模板规则应用于PERIODIC_TABLE的所有NAME子代,而不管它们具有何种层次的关系: ,30,4.6.5 通过ID匹配,31,4.6.6 使用来匹配特性,符号根据特性名与特性相匹配,并选择节点。方法很简单,只需在要选择的特性前加上符号。,32,4.6.7 使用comments()来匹配注释,为了选择注释,可使用comment()模式。尽管此模式有类似函数的圆括号,但实际上决不带任何参数。要区分不同的注释不太容易。 ,33,4.6.8 使用pi()来匹配处理指令,pi()函数选择处理指令。pi()的参数是放在引号内的字符串,表示要选择的处理指令的名称。如果没有参数,则匹配当前节点的第一个处理指令子节点。但是,可以使用层次操作符。,34,4.6.9 用text()来匹配文本节点,尽管文本节点的值包括在选择的元素值部分中,但它们作为节点通常被忽视。但是,text()操作符确实能够明确选择一个元素的文本子元素。尽管这种操作符有圆括号,但不需要任何参数。,35,4.6.10 使用“或”操作符|,竖线(|)允许一条模板规则匹配多种模式。如果节点与某种模式相匹配,则此节点将激活该模板。,36,4.7 合并多个样式单,单一XML文档可以使用在许多不同的DTD中描述的许多不同的标记符号集。有时希望将不同的标准样式单用于那些不同的符号集。但是,也可能还要将样式规则用于特定的文档。xsl:import和xsl:include元素可用来合并多个样式单,以便组织和重新将样式单用于不同的符号集和目的。,37,4.7.1样式表导入,样式表导入可以使用xsl:import进行。xsl:import元素为顶级元素,其href特性提供导入的样式单的URI。所有的xsl:import元素都必须放在xsl:stylesheet根元素中的顶级元素中。,38,4.7.2样式表包含,样式表包含可以使用xsl:include进行。xsl:include元素也是顶级元素,它将另一个样式单复制到当前样式单中它所出现的位置处(更确切是说,它将远程文档中xsl-stylesheet元素的内容复制到当前文档中)。它的href特性提供要包括的样式单的URI。xsl:include元素可放在顶级处于最后那个xsl:import元素之后的任何地方。,39,4.7.3在文档中嵌入样式单,通常一个样式表就是一个完整的XML文档,xsl:stylesheet 元素作为文档的元素。然而一个XSL 样式表也可以嵌入在其它文档内容之中。内嵌的方式可能有两种:XSL 样式表可以原文嵌入在一个非XML 文档中或者xsl:stylesheet 不作为文档元素出现在一个XML文档中。在第二种情况增加了出现内嵌样式,即自己规定样式的文档的可能。XSL 还没有为之定义相应的机制。这是由于可以采用把样式表结合文档的通用方式来实现,只要满足: 该方式允许一部分内容可以规定为样式表,例如使用有片段标识符URI。,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号