使用XSLT参数控制转换

ZDNet软件频道 时间:2004-11-03 作者:Builder.com |  我要评论()
本文关键词:xmltips PhillipPerkins
如果你没有使用XSLT 转换来获取数据内容和生成布局的习惯,那么你可能需要观察一下XSLT 的强大功能。使用XSLT 控制布局的最大一个优点是可以不用再将数据限制到一个特定的布局中。
本文译自Builder.com,未经许可请勿转载 如果你没有使用XSLT 转换来获取数据内容和生成布局的习惯,那么你可能需要观察一下XSLT 的强大功能。使用XSLT 控制布局的最大一个优点是可以不用再将数据限制到一个特定的布局中。

如果将数据和商业逻辑从布局中独立出来的话,你就可以创建不同的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>
. . .


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134