You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XSLT 3.0 XML转JSON转换:如何输出无引号的布尔值

解决XSLT转JSON时输出不带引号的布尔值问题

嘿,我之前做XML转JSON的时候也碰到过这个坑!要让isEmpty输出成不带引号的布尔值true,而不是字符串"true",你需要调整代码里的元素类型,或者用更标准的XSLT 3.0方法,具体看你的处理器支持情况:

方法1:使用布尔类型节点(适用于支持扩展JSON输出的处理器,比如Saxon)

把你原来的<string>元素换成<boolean>,处理器会自动识别这个类型并输出正确的布尔值:

<map>
  <boolean key="isEmpty">true</boolean>
</map>

这样输出的JSON就是你想要的:{ "isEmpty":true }

方法2:用XSLT 3.0原生JSON序列化(更推荐)

如果你的环境支持XSLT 3.0,可以直接构造XDM布尔值,然后用json:serialize函数生成标准JSON:

<xsl:template match="/">
  <!-- 构造一个包含布尔值的map -->
  <xsl:variable name="data-map" as="map(xs:string, xs:boolean)">
    <xsl:map>
      <xsl:map-entry key="'isEmpty'" select="true()"/>
    </xsl:map>
  </xsl:variable>
  <!-- 序列化map为JSON -->
  <xsl:value-of select="json:serialize($data-map)"/>
</xsl:template>

这种方式更规范,还能避免手动拼接JSON的各种问题,输出结果同样是{ "isEmpty":true }

注意事项

  • 确保你的XSLT处理器支持这些特性:比如Saxon-PE/EE或者最新的开源版本都支持上述两种方法;
  • 尽量不要手动拼接JSON字符串(比如直接输出{ "isEmpty":true }),这种方式在复杂结构下容易出错,维护性差。

内容的提问来源于stack exchange,提问作者manu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 11:42:29