我正在尝试创建一个 Javascript 工具,可以使用 Saxon-JS 将 AuthzForce 的 XACML 策略转换为 JSON 并返回。此文档提供了所需的 XSL 样式表。从 XML 转换为 JSON 可以顺利进行,但我在将 JSON 转换回 XML 时遇到问题。
转换函数返回包含所有值数据的响应,其中键已从“principalResult”的“textContent”中的 SEF 文件中剥离。
这是我编写的用于启动转换并返回 XML 字符串的函数:
function transformJsonToXml(input) {
//Convert JSON object to string
input = JSON.stringify(input);
//Options for SaxonJS transformer
var options = {
stylesheetLocation: jsonToXmlStylesheet,
sourceType: "json",
inJsonFile: input,
destination: "document",
logLevel: "2"
};
//Transformation of JSON to XML
let result = SaxonJS.transform(options);
let policyXml = SaxonJS.serialize(result.principalResult);
//Return the transformation result
return policyXml;
}
这是我在“policyXml”中返回的内容的开始,它只是来自 SEF 的数据,但没有任何 JSON 格式:
package301SaxonJS 2.6JS2TOP-LEVELtrue2024-04-03T14:59:27.482+01:00xml=~ xsl=~ xacml=urn:oasis:names:tc:xacml:3.0:core:schema:wd-17
This 是我使用命令
xslt3 -t -xsl:stylesheet.xsl -export:stylesheet.sef.json -nogo -relocate:on -ns:##html5
转换为 SEF 的 XSL 文件。生成的 SEF 文件可以在此处找到。
SaxonJS 的文档 https://www.saxonica.com/saxon-js/documentation2/index.html#!api/transform 显示了选项
sourceText
,我认为您想要将其设置为 sourceText : input
。
我不确定您在哪里找到该选项
inJsonFile
。