如何在XSLT的map-entry中指定null值以生成对应JSON
生成含null值的JSON对象的XSLT正确实现方法
要生成{"foo": null}这样的JSON结构,你可以用以下两种标准XSLT 3.0的实现方式——不存在xsl:null这个标准指令,你之前看到的<null key="foo"/>是非标准写法,所以会报错。
方法一:使用XPath map构造语法
直接通过XPath的map字面量语法,结合xs:null()函数生成空值,再输出即可:
<xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xsl:output method="json" indent="yes"/> <xsl:template match="/"> <xsl:sequence select="map { 'foo' : xs:null() }"/> </xsl:template> </xsl:stylesheet>
方法二:使用xsl:map搭配xsl:map-entry
在xsl:map-entry的select属性中调用xs:null()函数来指定空值:
<xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xsl:output method="json" indent="yes"/> <xsl:template match="/"> <xsl:map> <xsl:map-entry key="'foo'" select="xs:null()"/> </xsl:map> </xsl:template> </xsl:stylesheet>
关键说明
xs:null()是XPath 3.1引入的标准函数,专门用于创建对应JSON null的空值,序列化后会自动转为JSON的null。- 确保你的XSLT处理器支持XSLT 3.0和XPath 3.1(比如Saxon-HE 9.8及以上版本),低版本处理器可能不支持这些语法。
内容的提问来源于stack exchange,提问作者MrD at KookerellaLtd
相关产品推荐
相关产品推荐

