XSL简介(一)
XSL(一)
有人说XSL是CSS的替换者,真的吗?
1、简介
XSL是一种描述样式单的语言,包括XSLT、XPath和XML格式对象三部分。
与HTML不同,XML没有预定义的标签,所以浏览器不知道如何显示XML文档,而XSL就是XML之外用以说明如何显示的。
2、XSLT
XSLT是一种将XML文档转换为另一种格式XML文档的语言。XML利用XSLT将源XML树转换为结果XML树。
3、浏览器差异
与IE6一起MSXML解析器完全支持XSLT1.0和XPath1.0,NetScape6不完全支持XSL(NS7呢?)
4、XSL样式单
一个XSL文件也是XML文件,所以第一行也要声明XML:
第二行XSL声明,下述声明方式是完全一致的:
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
当用上述命名空间时,必须有version="1.0"的说明。
看
5、<xsl:template>元素
XSL样式单是由模板组成,每个模板就是一组规则。
模板的match属性,用以将模板和XML中的元素关联起来。如match="/"则将此模板与XML的根关联起来了。
6、<xsl:value-of>元素
该元素用于取得选定XML节点的值。
对节点的选取,由其select属性完成,select的值是一个XPath表达式。XPath表达式非常象*nix系统的多级目录的写法。如例中的“breakfast_menu/food”等。
7、<xsl:for-each>元素
完成在XSL中的循环动作。其属性select同6中所述。
此元素可以完成简单的过滤,例如:
8、<xsl:sort>元素
用于对输出进行排序,只需要将其放入<xsl:for-each>以内,并用select指明比较的元素即可。
9、<xsl:if>元素
当指定条件满足时,<xsl:if>包含的模板将派上用场。条件的定义,由其test属性指明,其操作符同7。
一般说来,<xsl:if>常出现在<xsl:for-each>内部。
10、<xsl:choose>、<xsl:when>、<xsl:otherwise>元素
三者联合,实现多条件选择,类似C语言里的case语句。如例:
<xsl:when test="price > 10">
... some code ...
</xsl:when>
<xsl:otherwise>
... some code ....
</xsl:otherwise>
</xsl:choose>
10、<xsl:apply-templates>元素
对当前元素和其子元素使用某一模板规则,象C里的递规函数,暗含着循环的功能。其用select属性指明元素。相对应的模板,则需要用match来判断传来的是什么元素,从这一点看模板象是C++里的重载函数。
11、XSL在客户端
当我们用浏览器打开一个引用XSL的XML文件时,浏览器在显示前做了一个将XML转换为XHTML的隐蔽动作。
这个动作可以用Javascript在IE上显式的完成,前提是XML中不要含有对XSL的引用。代码如下:
var xml = new ActiveXObject("Microsoft.XMLDOM")
xml.async = false
xml.load("cdcatalog.xml")
var xsl = new ActiveXObject("Microsoft.XMLDOM")
xsl.async = false
xsl.load("cdcatalog.xsl")
document.write(xml.transformNode(xsl))
</script>
12、XSL在服务器端
对于IIS而言,可以很方便地在服务器端实现XML的转换。如下:
set xml = Server.CreateObject("Microsoft.XMLDOM")
xml.async = false
xml.load(Server.MapPath("cdcatalog.xml"))
set xsl = Server.CreateObject("Microsoft.XMLDOM")
xsl.async = false
xsl.load(Server.MapPath("cdcatalog.xsl"))
Response.Write(xml.transformNode(xsl))
%>
对于其它类型的服务器呢?
以上只是基本内容,高级学习在后面呢。:)
主要是元素没讲全,还XSL函数没讲。
http://www.w3schools.com/xsl/xsl_w3celementref.asp
http://www.w3schools.com/xsl/xsl_functions.asp