首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > XML SOAP >

XML课程——XSL样式

2012-12-25 
XML教程——XSL样式至于具体的转换过程,既可以在服务器端进行,也可以在客户端进行。 ?xsl:value-of select

XML教程——XSL样式

至于具体的转换过程,既可以在服务器端进行,也可以在客户端进行。

?

xsl:value-of select = "" 赋值语句,取出引号中指定的属性值

?

接着,系统看到了<xsl:apply-templates select="学生花名册"/>的指示,于是,它在XML源树中寻找标记为“学生花名册”的节点进行匹配。就象函数调用一样,现在系统跳到了用<xsl:template match="学生花名册">括起的“函数”中继续生成下面的 HTML代码:

对于每一个“学生”子树中的内容,系统为其生成表中一行的内容。每一行包含四列,分别把标记为“名字”、“籍贯”、“年龄”、“电话号码”的子节点的内容填进去。其中“名字”下的内容还是粗体显示。对应到本例中的XML数据,生成的HTML代码为:

?

接下来是样式单部分:

?

xmlns:xsl指示了XSL的命名空间,在XSLT标准中,定义了XSLT的命名空间为 http://www.w3.org/1999/XSL/transform,然而在ie5中不支持这个名字空间,需要用到微软自己的名字空间http://www.w3.org/tr/WD-xsl。

XSLT在进行转换时,首先遍历XML源文档树,找到要处理的节点,然后将定义好的模板信息施加到该节点中。
下面将要介绍xslt样式单的语法。

?

如果要将TITLE输出为蓝色,则用下面语句匹配:
<xsl:apply-templates select="/" mode="blue"/>

如果要将title输出为红色,则写为:
<xsl:apply-templates select="/" mode="red"/>

此外,模板总是与节点相对应的,一个节点可能对应于不同的模板,那么如何确定各模板匹配的先后次序呢?XSLT中可为xsl:template设置优先级,写法是:
<xsl:template match="student" priority="n"> //n为优先级数

?

可以认为<xsl:for-each select="">能实现多个 <xsl:apply-templates select="">的功能。

<xsl:sort case-order="lower-first" select="@id"/> 以id为关键字按小写优先排序 按字母顺序排序
<xsl:sort order="ascending" select="@id "/> 以id为关键字按字母升序排序
<xsl:sort order="descending" select="@id "/> 以id为关键字按字母降序排序 按数据类型排序
<xsl:sort data-type="text" select="@id"/> 以id为关键字按文本类型排序,如对于一组id数据101,2,44,305 来说,排序结果是101,2,305,44
<xsl:sort data-type="number" select="@id"/> 以id为关键字按数据类型排序,上面一组数据的排序结果是2,44,101,305
另外,还有一种指定排序的方法,就是在前面学生花名册例中所使用的order-by: <xsl:for-each select="student" order-by="name"> 也可使得输出学生时按名字排序。

?

转换后生成如下代码:

<!-- CMA ID: 162351 --><!-- Site ID: 10 --><!-- XSLT stylesheet used to transform this file: dw-article-6.0-beta.xsl -->


以上例子,个人感觉有点问题,现给一个我已经调通了的例子,首先是XML文件:

?

?

?

然后,给出一个对应的样式文件,命名myStyle.xsl,注意:该文件和上面的XML文件放在同一个目录下。

?

最后,在浏览器上打开以上XML文件,则可看出经过样式修饰的页面。

?

样式深入学习网址:http://www.w3school.com.cn/xsl/xsl_for_each.asp

热点排行