そこで、SOAP ドキュメントのボディ内のすべての要素を XSLT を使用して XML に変換 (抽出) しようとしています。これが私のSOAPドキュメントです(完全)
<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="dealercode.xsl"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<AuthHeader xmlns="http://www.somedomain.com/">
<LogonID></LogonID>
<Password></Password>
</AuthHeader>
</soap:Header>
<soap:Body>
<getDealerCodeById xmlns="http://www.somedomain.com/">
<BrokerCode>{ssQuoterBrokerCode(app_id)}</BrokerCode>
<IDNumber>{dealerCode}</IDNumber>
</getDealerCodeById>
</soap:Body>
</soap:Envelope>
そして、これが私の XSLT シートです。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<?xml-stylesheet type="text/xsl" href="dealercode2soap.xsl"?>
<xsl:template match="/*">
<xsl:value-of select="soap:Body/s:getDealerCodeById"
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
xmlns:s="http://somedomainname/" />
</xsl:stylesheet>
しかし、出力は私が望むものではありません。「soap:Body」要素内のコンテンツを提供するだけでなく、SOAPドキュメント全体を解析しているため、「未解決の名前空間プレフィックスsoap」という警告も表示されます
どこが間違っていますか?
編集:別のコードブロックを使用して、なんとか動作させることができました。下記参照
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns ="http://www.somedomainename.com">
<xsl:template match="/">
<xsl:apply-templates select="soap:Envelope/soap:Body/*"/>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
これで、ブラウザに body セクションの内容が出力されます。私が気付いたもう 1 つの最も重要なことは、書式設定はサーバー側で行われたことですが、その時点ではサーバーにアクセスできなかったため、自分のコードが機能しているかどうかわかりませんでした。これは私が探していた望ましい出力です (これは明らかにずっと機能していました。
<?xml version="1.0" encoding="UTF-8"?>
<getDealerCodeById xmlns="http:///" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<BrokerCode>{ssQuoterBrokerCode(app_id)}</BrokerCode>
<IDNumber>{dealerCode}</IDNumber>
</getDealerCodeById>