我想通过xslt获取以下文字。 输入是 -
{
"Contact Id":"3333333333",
"Contact No":"9811430620",
"Email Id":"abhishek.jain@homecredit.co.in",
"Last Name":"Jain","First Name":"Abhishek"
}
现在我只需要输出中的这个文字:3333333333
。
请告诉我如何在xslt中做。
由于
答案 0 :(得分:2)
输入不是XML而是JSON,所以你可能需要使用像Saxon 9.6 PE或EE这样的XSLT 3.0处理器和json-to-xml
功能
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="3.0">
<xsl:output method="text" />
<xsl:template match="json">
<xsl:value-of select="json-to-xml(.)//*[@key = 'Contact Id']"/>
</xsl:template>
</xsl:transform>
假设您的输入实际上在XML输入元素<json>{"Contact Id":"3333333333","Contact No":"9811430620","Email Id":"abhishek.jain@homecredit.co.in","Last Name":"Jain","First Name":"Abhishek"}</json>
中包含JSON,否则,您需要使用json-to-xml(unparsed-text('file.json'))//*[@key = 'Contact Id']
。
答案 1 :(得分:2)
这看起来像JSON数据。您将问题标记为XSLT 2.0,但如果您的处理器能够使用xslt-3.0,则可以使用parse-json()
获取地图,或json-to-xml()
将模板应用于该地图。
除此之外,使用正则表达式会有点难看,例如:
<xsl:value-of select="replace(., '.*Contact Id.:.(\d+).*', '$1')" />