VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - 通过向XSLT传送参数来定制输出
发表评论(0)作者:BUILDER.COM, 平台:VB6.0+Win98, 阅读:10854, 日期:2003-08-29
    当用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 & "\test.xml")
Call domTransform.Load(App.Path & "\test.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转换为不同的格式。