2015-02-25 2 views
-1

У меня есть следующий запрос SOAP, и мне нужно извлечь значение параметра IP-адреса внутри шаблона XSLT.XSLT, чтобы получить значение атрибута из запроса SOAP

SOAP ЗАПРОС:

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

Цените любой посоветуйте!

+0

Пожалуйста, покажите весь ваш XSLT-код и объясните, что именно___открывается. –

ответ

0

Единственное, что мы не знаем из вашего вопроса, - это то, что текущий узел контекста, когда вы используете переменную xsl:. Он должен работать, если ваш текущий узел контекста является корневым узлом.

Попробуйте изменить XPath на абсолютный путь (сначала поставьте косую черту). Если это не работает, убедитесь, что все пространства имен правильно определены в XSLT.

-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> 
Смежные вопросы