读取XSLT2.0中的服务响应(json格式)

读取XSLT2.0中的服务响应(json格式),xslt,xpath,xslt-2.0,Xslt,Xpath,Xslt 2.0,需要读取xslt中的服务响应,其格式为: servicedata={“statusCode”:200,“loginMessage”:“欢迎用户”} 它的键值对,在这里我可以得到'servicedata'的值,但还需要得到一些条件检查的状态代码值 将2.0版用于xslt 阅读一些建议在3.0版xslt中使用parse-json()、json-to-xml的问题,但没有帮助 问题:首先,仅使用2.0版,我可以检索“statusCode”的值,如果没有,我可以指导如何实现它。如果您可以移动到Saxon

需要读取xslt中的服务响应,其格式为:

servicedata={“statusCode”:200,“loginMessage”:“欢迎用户”}

它的键值对,在这里我可以得到'servicedata'的值,但还需要得到一些条件检查的状态代码值

将2.0版用于xslt

阅读一些建议在3.0版xslt中使用parse-json()、json-to-xml的问题,但没有帮助


问题:首先,仅使用2.0版,我可以检索“statusCode”的值,如果没有,我可以指导如何实现它。

如果您可以移动到Saxon 9.7,那么您可以使用
json to xml
,例如:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:math="http://www.w3.org/2005/xpath-functions/math"
    exclude-result-prefixes="xs math"
    version="3.0">

    <xsl:template match="data">

        <xsl:value-of select="json-to-xml(substring-after(., 'servicedata='))//*[@key = 'statusCode']" xpath-default-namespace="http://www.w3.org/2005/xpath-functions"/>
    </xsl:template>

</xsl:stylesheet>

哪一个用于输入

<data>servicedata={"statusCode":200,"loginMessage":"Welcome User"}</data>
servicedata={“statusCode”:200,“loginMessage”:“欢迎用户”}
输出
200


我还没有检查Saxon 9的早期版本是否也支持这一点。

那么,您到底使用哪种XSLT 2.0处理器?如果是Altova或Saxon的最新版本,那么使用您提到的功能应该是可能的,并且应该会有所帮助。@MartinHonnen我正在使用Saxon HE 9.5I已转换为Saxon 9.7He,现在在maven clean安装后,我收到net.sf.Saxon.value.SingletonItem的错误,这个类在9.7中被弃用了吗?我能够从命令行运行我发布的代码,在Saxon 9.7中,他在Oxygen 19内部和Oxygen外部都运行得很好。您在运行Saxon 9.7时有问题吗,还是仅仅在使用我建议的代码时有问题?无论如何,如果问题与使用Java运行Saxon有关,那么最好发布一个新问题,解释并显示代码的所有细节,并为Saxon标记问题,以便Saxonica/Michael Kay能够提供帮助。在Saxon 9.7中,我们的项目(9.5)中未找到net.sf.Saxon.value.SingletonItem类。因此,我在9.5中搜索net.sf.saxon.value.SingletonItem的替代类,正如我所说的,如果在升级到当前版本时将saxon API与Java结合使用是一个问题,那么最好在Stackoverflow上或直接在他们的帮助论坛中作为一个单独的问题标记Java和saxon,我相信你会从他们那里得到建议。