XSLT3.0解析JSON数据无法获取指定key对应值问题求助
问题原因
json-to-xml()函数返回的是临时节点树,你没有将其保存到变量中,后续XPath表达式//*[@key='car']是在原始输入文档的节点树中检索,原始输入仅包含<data>节点包裹的JSON文本,不存在带key属性的节点,因此检索不到结果。- 你设置了
<xsl:mode on-no-match="shallow-skip"/>,调用<xsl:apply-templates select="json-to-xml(.)/*"/>时,没有对应的匹配模板处理json-to-xml生成的节点,所有节点都会被直接跳过,不会产生任何输出。
解决方法
直接将json-to-xml()的输出存入变量,再从变量中检索对应key的节点值即可,修改后的XSLT代码如下:
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="3.0"> <xsl:output method="xml" indent="yes"/> <xsl:mode on-no-match="shallow-skip"/> <xsl:template match="data"> <!-- 将JSON转XML的结果存入变量 --> <xsl:variable name="json-xml" select="json-to-xml(.)"/> <!-- 从变量中检索car节点的值 --> <xsl:value-of select="$json-xml//*[@key='car']"/> </xsl:template> </xsl:stylesheet>
修改后运行即可得到预期的输出结果。
内容的提问来源于stack exchange,提问作者Toolbox
相关产品推荐
相关产品推荐

