XSL语法

网友投稿 245 2022-09-06

XSL语法

    ………   

这里实际上是表示了XSL解析器对XML文档的处理过程,它从根节点(由match="/"决定,这里"/"就表示根节点)开始,对XML文档进行遍历,并根据具体的代码从XML文档中取出相关的内容。这里关于属性match的取值是一个比较复杂的问题。它实际上表示的含义是从XML文档中取出一个特定的节点集合(XML文档可以被看成一个树的结构,这个在后面关于XML解析器分析中有详细的介绍)。这里,我们通过几个简单的例子来说明属性match的取值。        比如下面一行代码:

这行代码的意思是告诉XSL解析程序,当前需要处理的节点是根节点下的内容(用"/"来表示根节点),其实这里的match值内容的编写是要符合XPath的语意。关于XPath我们在后面的章节中会进行详细的介绍。        再举一个例子:

这行代码要匹配的是shoppingcart元素下的item元素。而不管shoppingcart在XML文档结构树下的哪一个位置。比如XML文档的其中一段是这样的。

     3333   屠龙刀         4444   离别钩      

那么它匹配的内容就是

   3333    屠龙刀            4444    离别钩    

而下面这个例子:

表示只匹配XML文档根节点下的shoppingcart这个节点下的所有item元素。也就是说如果shoppingcart不是直接在根节点下的,它就不符合这个匹配条件。        再看一个例子:

这个例子说明要匹配的是这样的节点:一个带unit属性的元素price,而且unit的值必须为"USD"。比如一段XML代码是这样的。

   USD    100          RMB    300   

那么它匹配的内容就是:

   USD    100   

实际上,存在许多各种符号用来表示匹配规则,我们在XPath语法介绍中会详细涉及到。现在知道这么一个大概的概念就可以了。        我们用这条语句找到了一些节点集合以后,我们就要从这个集合中找到特定的元素或者元素属性的值,那么采用什么语句呢?就是用xsl:value-of select = ""这样的语句来寻找特定的内容。        比如下面的例子中这行代码就是表示定位XML文档中的名称元素的内容。在指定集合中可能存在多个名字元素,如果我们需要把它们一一列举出来进行处理的话,就需要用到语句xsl:for-each select = "",注意这里涉及到一个作用范围的概念,也就是说xsl:for-each select = ""这条语句是在一个指定的集合空间中执行的。比如上面例子中如下的代码

这里的是在所指定的集合空间里面寻找元素"词语"的。

同时,我们需要注意的是上面的代码中,出现了一条语句

它表示什么意思呢,它实际上相当于C++中的一个过程调用,当XSL解析器执行到该语句的时候,它就会在代码中寻找以开头的代码,所以在上面的例子程序中,以下的代码可以看成是过程的实现。             把看成是一个过程调用,把

…….   

看成是过程的实现,有助于我们对XSL解析器执行过程的理解。这里match="网络用语集合"可以理解为是传递给过程的参数,它表示过程实现体的集合范围是该match所匹配的节点集合空间("网络用语集合")。        如果我们要对表格中的元素进行排序该什么办呢?比如说,在上面的例子中,我们需要按照名称进行排序。很简单对,改写为如下的形式即可:        ,其中"+"表示按降序排列;"-"表示按升序排列。"order-by"是XSL语法中的关键字。        如果我们只想在列表中取出某几行该怎么操作呢?比如我们只想取出名称为"恐龙"的行,见下面的代码:        这里有一个新的句法为:

                                
  

它表示如果".[名称='恐龙']"为真(TRUE)的话,就执行该段里面的语句,要是为假(FALSE)的话就不执行。它和C++中的if语句的概念基本是一样的。        前面我们用取出的都是一个元素的值,但是我们要取出元素某一个属性的值该怎么做呢?采用下面的形式:                比如一段XML代码是这样的:        <王朔 网址="wangshuo.com">知名作家加著名评论家王朔先生的地方        我们可以用来得到值"wangshuo.com"。        以上包括了XSL的大多数基本的语法,更加详细和完整的介绍需要参看W3C相关的最新的文档,可以在WWW.W3C.ORG/TR下找到。        根据上面的分析,我们可以看到XSL实际上采用的是一种转换的思想,它最终将XML文档转换为另一种可用于输出的文档,而CSS则没有任何转换动作,在整个过程中没有任何新码产生。 另外,在XSL中90%的样式规定在CSS中都有定义,但仍然有一些效果是CSS无法描述的,必须使用XSL不可。这些功能包括文本的置换、根据文本内容决定显示方式、文档内容排序等,都是XSL所独有的。再者,XSL遵从XML的语法,而CSS的语法自成体系。        选择样式单还要考虑不同浏览器对样式单的支持程度。目前IE5与Netscape的最新版本都支持CSS,但支持的程度都有限。至今为止,IE5尚不能完全支持CSS1,即便是支持的部分也存在很多错误,对于CSS2也只提供部分支持。Netscape在对CSS的支持上已经优于IE5,它采用新一代的Raptor/Gecko引擎技术,已经能够完全支持CSS1,但对CSS2的支持计划尚不明朗。而对XSLT而言,只有IE5支持,Netscape5并不支持。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:智能ABC输入法超酷技巧
下一篇:最新“带货一姐”诞生?直播13次创476亿销售额,获曹德旺盛赞!
相关文章

 发表评论

暂时没有评论,来抢沙发吧~