XSL由两部分组成:
一是转化XML文档;二是格式化XML文档。
如果你不理解这个意思,可以这样想:XSL是一种可以将XML转化成HTML的语言,一种可以过滤和选择XML数据的语言,一种能够格式化XML数据的语言。(比如用红色显示负数。)
这里不再讲XSL的语法结构,主要讲用XSLT格式化输出XML的三种方法:
第一:直接输出,需要XML和XSL两个文档,用户通过浏览器直接访问XML文档就可看到效果,但需要客户端浏览器支持XMLparser,所以这种方法限制性很大,这种方法的关键是在XML文件中要写入与XSL关联的行<?xml:stylesheettype="text/xsl"src="***.xsl">
第二:客户端控制:需要XML,XSL,HTML三个文档,在html文档中用js来实现转换过程,用户访问的也是这个html文件,这样由客户端浏览器处理转换,但是这样做需要以下功能的支持:
a.允许Javascript代替浏览器进行细节检测;
b.根据不同的需要和不同的浏览器使用不同的样式表。
js例子如下:
scriptlanguage="javascript">
//LoadXML
varxml=newActiveXObject("Microsoft.XMLDOM")
xml.async=false
xml.load("cd_catalog.xml")
//LoadtheXSL
varxsl=newActiveXObject("Microsoft.XMLDOM")
xsl.async=false
xsl.load("cd_catalog.xsl")
//Transform
document.write(xml.transformNode(xsl))
</script>
解释:第一步,建立一个MicrosoftParser(XMLDOM)解析的对象,并将XML文档读入内存;第二步,建立另外一个对象并导入XSL文档;最后一步将XML文档用XSL文档转换,并将结果输出到HTML文件中。
第三:服务端控制.前两种方法都需要浏览器解析插件(XMLparser)支持,所以只有服务端控制才能完全保证可以解析。服务端控制也需要三个文件:XML,XSL,ASP(或者其他类型的动态页),主要说ASP页怎么写,里面写一些服务端要执行的代码
<%
'LoadtheXML
setxml=Server.CreateObject("Microsoft.XMLDOM")
xml.async=false
xml.load(Server.MapPath("cd_catalog.xml"))
'LoadtheXSL
setxsl=Server.CreateObject("Microsoft.XMLDOM")
xsl.async=false
xsl.load(Server.MapPath("cd_catalog.xsl"))
Response.Write(xml.transformNode(xsl))
%>
---------------------------------------------------------------------------------------
接下来说说XSL文件的关键语法
第一:文件头<?xmlversion="1.0"encoding="gb2312"?>
第二:<xsl:stylesheetxmlns:xsl="http://www.w3.org/TR/WD-xsl">正文..</xsl:stylesheet>
第三:<xsl:templatematch="/">正文..</xsl:template>匹配XML文档中哪个节点
第四:<xsl:value-ofselect="###">输出格式,table等html标签</xsl>表示要输出元素的值
第五:<xsl:for-eachselect="###"></xsl:for-each>表示一个循环
第六:<xsl:ifmatch=".[ARTIST='BobDylan']"></xsl:if>条件控制语句
第七:选择控制语句
<xsl:choose>
<xsl:whenmatch=".[ARTIST='BobDylan']">
...somecode...
</xsl:when>
<xsl:otherwise>
...somecode....
</xsl:otherwise>
</xsl:choose>
第八:<xsl:for-eachselect="CATALOG/CD"order-by="+ARTIST">排序
第九:<xsl:for-eachselect="CATALOG/CD[ARTIST='BobDylan']">过滤查询
参数的逻辑选择有:
=(等于)
=!(不等于)
<&小于
>&大于等于