我通过 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;
转换的原始来源:
- http://gforge.hl7.org/gf/project/fhir/scmsvn/?action=browse&path=%2Ftrunk%2Fbuild%2Ftools%2Fschematron%2Fiso_svrl_for_xslt1.xsl&view=markup
- http://gforge.hl7.org/gf/project/fhir/scmsvn/?action=browse&path=%2Ftrunk%2Fbuild%2Ftools%2Fschematron%2Fiso_schematron_skeleton_for_xslt1.xsl&revision=1319&view=markup