<?xml version="1.0" encoding="UTF-8"?>
<Envelope>
<Body>
<RetrieveChangeKeysListResponse message="Success">
<keys>
<ChangeID type="String">C10286</ChangeID>
</keys>
<keys>
<ChangeID type="String">C10296</ChangeID>
</keys>
</RetrieveChangeKeysListResponse>
</Body>
</Envelope>
从上面的xml文件中,下面的xpath查询的输出给出了没有分隔符的值。
查询:
/Envelope/Body/RetrieveChangeKeysListResponse/keys/ChangeID/text()
输出: C10286C10296
如何在值之间使用分隔符获取输出。
示例:(C10286,C10296
)
需要你的帮助。
谢谢和问候
Riyas Hussain A
答案 0 :(得分:2)
看起来您有两个ChangeID
节点,如果您将XPATH
称为
/Envelope/Body/RetrieveChangeKeysListResponse/keys/ChangeID/text()
然后它将通过连接在一起输出所有值。
请将XPATH
称为
/Envelope/Body/RetrieveChangeKeysListResponse/keys/ChangeID
然后根据您的意愿concat()
text()
。
使用XSLT 1.0,您可以这样做: -
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:apply-templates select="/Envelope/Body/RetrieveChangeKeysListResponse/keys/ChangeID"/>
</xsl:template>
<xsl:template match="ChangeID">
<xsl:if test="position()='1'">
<xsl:value-of select="'('"/>
</xsl:if>
<xsl:choose>
<xsl:when test="position()=last()">
<xsl:value-of select="text()"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="concat(text(),',')"/>
</xsl:otherwise>
</xsl:choose>
<xsl:if test="position()=last()">
<xsl:value-of select="')'"/>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
(C10286,C10296)
答案 1 :(得分:0)
解决方案:
string-join((/ Envelope / Body / RetrieveChangeKeysListResponse / keys / ChangeID),',')
输出:
String ='C10286,C10296'