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
相关产品推荐
相关产品推荐

