gpt4 book ai didi

delphi - IXSLTemplate (MSXML 6) - 如何解析 xsl :import

转载 作者:行者123 更新时间:2023-12-01 16:39:14 26 4
gpt4 key购买 nike

我正在通过 COM 使用 mxsml 6 来执行转换。源样式表有一个 xs:import 语句,我知道如何包含该语句,但我如何告诉 MSXML 执行此操作?我似乎找不到一个地方来告诉 IXSLTemplate 加载已解析的源

详细信息:

  • 我收到错误“系统无法找到指定的对象”
  • 我在源文档上设置 ResolveExternals = true
  • 我正在尝试执行 schematron 验证
  • 我使用的是 Delphi,因此使用 msxml 似乎是我唯一的选择
  • 我在服务器环境中将所有内容都存储在内存中,因此我非常希望避免使用文件

代码:

var
v: variant;
doc : IXMLDOMDocument2;
xform: IXSLTemplate;
begin
v := CreateOLEObject('MSXML2.FreeThreadedDOMDocument.6.0')
doc := IUnknown(TVarData(v).VDispatch) as IXMLDomDocument2;
doc.async := false;
doc.resolveExternals := true;
doc.loadXML([my source for the first transform below]);
v := CreateOLEObject('MSXML2.XSLTemplate.6.0');
xform := IUnknown(TVarData(v).VDispatch) as IXSLTemplate;
xform.stylesheet := doc;
end;

转换的原始来源:

最佳答案

我不是一名 Delphi 程序员,但我经常使用 C++ for MSXML4 这样做。下面是来自 MSXML4 文档的 vb 代码示例,我只是将其翻译为 C++。

 Dim xslt As New Msxml2.XSLTemplate40
Dim xslDoc As New Msxml2.FreeThreadedDOMDocument40
Dim xmlDoc As New Msxml2.DOMDocument40
Dim xslProc As IXSLProcessor
xslDoc.async = False
xslDoc.Load "sample.xsl"
Set xslt.stylesheet = xslDoc
xmlDoc.async = False
xmlDoc.Load "books.xml"
Set xslProc = xslt.createProcessor()
xslProc.input = xmlDoc
xslProc.addParameter "param1", "Hello"
xslProc.Transform
MsgBox xslProc.output

关于delphi - IXSLTemplate (MSXML 6) - 如何解析 xsl :import,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17015368/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com