我是XSLT的新手,我想从soap响应中生成一个xml,我无法解析soap响应并因命名空间问题而从标记中获取数据。
我的意见:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ProcessResponse xmlns="KeyIntgration">
<ProcessResult xmlns="">
<AccessId xmlns="KeyIntgration">paul</AccessId>
<TransactionId xmlns="KeyIntgration">abcd</TransactionId>
<Payload xmlns="KeyIntgration">
<DeclaredValue>8.00</DeclaredValue>
</Payload>
</ProcessResult>
</ProcessResponse>
</s:Body>
</s:Envelope>
这是我的XSL文件:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:k="KeyIntgration/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
exclude-result-prefixes="s xsd xsi k">
<xsl:template match="/">
<rate>
<xsl:value-of
select="s:Envelope/s:Body/k:ProcessResponse/k:ProcessResult/k:Payload/k:DeclaredValue/text()" />
</rate>
</xsl:template>
</xsl:stylesheet>
我的输出来了:
<?xml version="1.0" encoding="UTF-8"?>
<rate/>
我的预期输出是:
<?xml version="1.0" encoding="UTF-8"?>
<rate>8.00</rate>
先谢谢
答案 0 :(得分:1)
xmlns:k="KeyIntgration"
的命名空间(最后没有/
)。 <ProcessResult xmlns="">
)//
(或明确添加所有元素)。尝试:
<xsl:value-of
select="s:Envelope/s:Body/k:ProcessResponse/ProcessResult/k:Payload//k:DeclaredValue/text()" />