如果将数据和商业逻辑从布局中独立出来的话,你就可以创建不同的XSL 样式表来产生你所需要的不同布局。如果你正在构建不同布局的用户界面来处理处理浏览器之间的兼容性,那么这个东西对你将非常有帮助。如果你正在使用有别于常规HTTP 请求的技术工作,比如WML 或Web 服务,那么这个东西也非常有用。
经验不是很丰富的开发人员可能遇到的一个障碍是认为XSL 只限于转换可用的XML——但是事实并非如此。增加功能的一个简单方法是使用<param> XSLT 元素。使用这个元素可以向样式表中增加参数,你可以用它传入各种类型的信息。一旦XSL样式表读入内存,你就可以使用XPath 设置参数的值。毕竟样式表是另外一个DOM 文档。如果你身边没有XPath,你可以使用DOM 1 规范中的getElementsByName。
现在假设有一个参数叫做“browser”:<xsl:param name="browser"/>。在执行转换之前,需要给参数设置一个值以供样式表在产生合适输出时使用。简单地将文本设为一个在条件语句中将使用的值。下面是在ASP中的做法:
Dim xml, xsl
Set xml = Server.CreateObject("MSXML2.DOMDocument")
Set xsl = Server.CreateObject("MSXML2.DOMDocument")
xml.async = False
xsl.async = False
xml.load Server.MapPath("xmldata.xml")
xsl.load Server.MapPath("stylesheet.xsl")
xsl.selectSingleNode("//xsl:param[@name='browser']").text =
"ie"
Response.Write xml.transformNode(xsl)
Set xml = Nothing
Set xsl = Nothing
下面是XSL 样式表的内容:
<?xml
version="1.0"?>
. . .
<xsl:param name="browser"/>
. . .
<xsl:choose>
<xsl:when test="$browser='ie'">
<!-- Do something here
-->
</xsl:when>
<xsl:when test="$browser='mo'">
<!-- Do something else here
-->
</xsl:when>
</xsl:choose>
. . .