VB技巧:通过向XSLT传送参数来定制输出

ZDNet软件频道 时间:2002-12-12 作者:BUILDER.COM |  我要评论()
本文关键词:vb
当用XSLT转换XML数据时,你可能想用参数来定制输出。想用VB做这件事的话,你可以用Microsoft XML Parser组件中的两个对象XSLTemplate和IXSLProcessor来实现。

当用XSLT转换XML数据时,你可能想用参数来定制输出。想用vb做这件事的话,你可以用Microsoft XML Parser组件中的两个对象XSLTemplate和IXSLProcessor来实现。

XSLTemplate对象用于存储一个转换的副本。为在服务器环境下使用,该转换可以被暂时存储起来。一旦XSLTemplate读取了这个转换,你就可以用createProcessor函数创建一个IXSLProcessor。

把输入输出DOMDocuments设置为IXSLProcessor对象;然后你就可以用addParameter函数添加参数了。addParameter函数的参数是你要添加的那个参数的名称和参数值,还有命名空间是可选项。

在IXSLProcessor上调用转换函数将会执行转换过程,同时把你指定的参数传送过去。

XML

<?xml version="1.0"?>
<Employees Id="1"
  xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance">
  <Employee Id="1">
    <Name>John Smith</Name>
  </Employee>
  <Employee Id="2">
    <Name>John Doe</Name>
  </Employee>
</Employees>
XSLT
<?xml version="1.0"?>
<xsl:stylesheet
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output method="xml"/>
  <xsl:param name="EmpId"/>
  <xsl:template match="/">
    <EmployeeName>
      <xsl:apply-templates select="//Employees/Employee[@Id=$EmpId]"/>
    </EmployeeName>
  </xsl:template>
  <xsl:template match="Employee">
    <xsl:value-of select="Name"/>
  </xsl:template>
</xsl:stylesheet>
vb
Dim domSource As DOMDocument
Dim domTransform As FreeThreadedDOMDocument
Dim domOutput As DOMDocument
Dim objTemplate As XSLTemplate
Dim objProcessor As IXSLProcessor

Set domSource = New DOMDocument
Set domTransform = New FreeThreadedDOMDocument
Set domOutput = New DOMDocument
Set objTemplate = New XSLTemplate

Call domSource.Load(App.Path & "	est.xml")
Call domTransform.Load(App.Path & "	est.xsl")

Set objTemplate.stylesheet = domTransform
Set objProcessor = objTemplate.createProcessor()


objProcessor.input = domSource
objProcessor.output = domOutput
Call objProcessor.addParameter("EmpId", "1")
Call objProcessor.Transform

Call MsgBox(domOutput.xml) 

在XSLT中使用参数使你可以再次使用相同的XSLT却得到不同的输出结果。通过vb实现这个功能意味着你的应用程序可以用XSLT来产生自定义的Web页,动态过滤XML文件,以及根据参数把XML转换为不同的格式。

 



责任编辑:炒饭

欢迎评论或投稿


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