-1

次の SOAP リクエストがあり、XSLT テンプレート内の IP アドレス パラメータ値を抽出する必要があります。

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

アドバイスをいただければ幸いです。

4

2 に答える 2

0

あなたの質問から私たちが知らないことの 1 つは、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 に答える