-1

我有以下 SOAP 请求,我需要在 XSLT 模板中提取 IP 地址参数值。

肥皂请求:

<soapenv:Envelope
xmlns:ws="http://diamondip.com/ipcontrol/ws/"
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>
<soapenv:Header />
<soapenv:Body>
<ws:deleteDevice soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<inpDev xsi:type="ser:WSDevice"
xmlns:ser="http://service.ipcontrol.diamondip.com"
>
<ipAddress xsi:type="soapenc:string"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
>xxx.xxx.xx.xx</ipAddress>
</inpDev>
</ws:deleteDevice>
</soapenv:Body>
</soapenv:Envelope>

我尝试使用以下方法来获取值,但它没有用

<xsl:variable name="ipAddress" select="soapenv:Envelope/soapenv:Body/ws:deleteDevice/inpDev/ipAddress/text()"/>

感谢任何建议!

4

2 回答 2

0

我们从您的问题中不知道的一件事是当您执行 xsl:variable 时当前上下文节点是什么。如果您当前的上下文节点是根节点,它应该可以工作。

尝试将 XPath 更改为绝对路径(在开头放置一个正斜杠)。如果这不起作用,请确保在 XSLT 中正确定义了所有名称空间。

于 2015-02-25T14:25:37.380 回答
-1

您可以使用以下代码导航并获取输出。

<xsl:stylesheet version ="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match ='/'>
<xsl:variable name="ipAddress" select="/*[local-name() = 'Envelope']/*[local-name() = 'Body']/*[local-name() = 'deleteDevice']/*[local-name() = 'inpDev']/*[local-name() = 'ipAddress']/text()"/>
IP Adress: <xsl:value-of select = "$ipAddress"/>
</xsl:template>
</xsl:stylesheet>
于 2015-04-22T06:44:40.030 回答