XSLT从SOAP请求中获取属性值

时间:2015-02-25 06:15:52

标签: xslt soap ibm-datapower

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

SOAP REQUEST:

<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()"/>

感谢任何建议!

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:-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>