【发布时间】:2019-09-09 20:15:19
【问题描述】:
我想用 XSLT 3.0 and its json-to-xml() function 试验(在 Delphi 代码中):
在 XSLT 3.0 中,入站文档可以是 JSON,而不是 XML。处理器可以获取该文档,使用 json-to-xml() 函数将其转换为特定的已知 XML 格式,通过模板对其进行处理,然后将结果输出转换回 JSON(或者可以将其转换为 HTML 5其他格式
但我被困在两个地方:
如何使用 JSON 字符串作为转换源?尝试将其加载到
TXMLDocument给我(当然?)“格式错误”错误然后我将如何应用“
json-to-xml()函数”。我发现的所有关于在 Delphi 中使用 XSLT 转换的示例都使用了 TransformNode 函数,如下面的代码。lDoc.Node.json-to-xml之类的东西不会编译。
.
var
lDoc, lXSL, lRes: IXMLDocument;
lUTF8Str : UTF8String;
begin
lDoc := LoadXMLData(AXMLString);
lXSL := LoadXMLData(cRemoveNSTransform);
lRes := NewXMLDocument;
lDoc.Node.TransformNode(lXSL.Node,lRes); // Param types IXMLNode, IXMLDocument
lRes.SaveToXML(lUTF8Str);
谁能指出我正确的方向?
【问题讨论】:
-
我怀疑是否有任何开发良好的 XSLT 3 API 或 Delphi 绑定。 XSLT 3 的主要主角是 Saxon 9.8 及更高版本(存在于 Java 版本、.NET 框架版本和 C/C++ 版本中)和 Altova Raptor。我猜 IXMLDocument 建议您在 Windows 上使用 Microsoft 的 MSXML,它是一个 XSLT 1 处理器。 Raptor 有一个 COM API,猜测 Windows 上的 Delphi 可以连接到它。不确定将 Delphi 连接到 Java 或 .NET 有多么容易,以便您可以使用开源的 Saxon HE。
标签: json delphi xslt transform delphi-10.3-rio