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为关键字按小写优先排序 按字母顺序排序?
转换后生成如下代码:
<!-- 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