如何用XSLT生成JSON

XSLT可通过字符串拼接(1.0/2.0)或原生map/array+xml-to-json(3.0)生成JSON;需严格遵循语法、转义特殊字符、控制逗号与空白,并确保UTF-8编码。

如何用xslt生成json

XSLT 本身不原生支持 JSON 输出,但可以通过字符串拼接和规范格式化,在 XSLT 1.0/2.0/3.0 中生成合法的 JSON 文本。关键在于:严格遵循 JSON 语法规则(如双引号、转义、无尾逗号)、正确处理特殊字符,并避免依赖外部扩展函数(除非明确环境支持)。

用 XSLT 2.0+ 手动构造 JSON 对象

适用于结构较固定、数据量不大的场景。核心是用 拼接键值对,手动添加引号、冒号、逗号和花括号。

  • 所有字符串键和值必须用双引号包裹,不能用单引号
  • 值中的双引号、反斜杠、换行符等需转义:"/"///
    /n
  • , 控制数组元素间逗号,避免末尾多余逗号

示例(XSLT 2.0):将 XML 中的 转为 JSON 对象


  {"name": "",
   "age": ,
   "active": 
  }

用 XSLT 3.0 的 map/array + json-to-xml 函数(推荐)

XSLT 3.0 内置了原生 JSON 支持:可先构建 map{}array{} 数据结构,再用 xml-to-json()(注意:是 xml-to-json,不是 json-to-xml)将其序列化为 JSON 字符串。

Glif

Glif

Glif.app 是一个有趣的AI沙盒工具,用于创建名为 glifs 的微型AI生成器,例如自拍生成器、Meme梗图、表情包、漫画、故事等

下载

  • 需将数据先转为符合 W3C JSON ML 格式 的 XML 结构(如
    Alice30

  • 然后调用 xml-to-json($json-ml, map{'indent':true()}) 输出美化后的 JSON
  • 此方式安全、可读性强,自动处理转义与类型推断

规避常见陷阱

手动生成 JSON 容易出错,以下细节必须检查:

  • 引号嵌套错误:不要在属性值中直接写双引号,改用 " 实体或 "
  • 空格与换行:XSLT 默认可能插入多余空白,用 控制输出纯净性
  • 数值类型混淆:JSON 中数字不带引号,字符串必须带;用 number() 或类型判断确保 age 不被当成字符串输出
  • 编码问题:确保 XSLT 处理器输出 UTF-8,且 显式声明

替代方案:XSLT 生成中间 XML 再转换

若 XSLT 环境受限(如仅支持 XSLT 1.0),更稳健的做法是:

  • 先用 XSLT 生成标准 XML(如符合 JSON ML 规范的结构)
  • 再用命令行工具(如 jqpython -m json.tool)或服务端代码(Java/Python)将该 XML 转为 JSON
  • 既保持 XSLT 简洁性,又避免手工拼接 JSON 的脆弱性

https://www.php.cn/faq/2023963.html

发表回复

Your email address will not be published. Required fields are marked *