SOAP请求的XML文档中的命名空间问题

时间:2015-12-18 11:30:16

标签: xml xslt soap namespaces

我正在使用soap webservice作为客户端。为了生成SOAP-Requests文档,我正在使用XSLT。

假设我想调用SOAP-Action" getNumber",我将呈现以下文档:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:abc="xyz">
<soapenv:Header />
<soapenv:Body>
    <abc:getNumber>
        <abc:param1>123</abc:param1>
    </abc:getNumber>
</soapenv:Body>

如您所见,命名空间在Envelope-Tag中正确定义。当我将这个xml发送到webservice时,另一方的解析器会出错,因为命名空间(显然不是我)不会丢失。

如果我问他们说的网络服务的支持,我必须把命名空间放在方法上

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <soapenv:Header />
    <soapenv:Body>
        <abc:getNumber xmlns:abc="xyz">
            <abc:param1>123</abc:param1>
        </abc:getNumber>
    </soapenv:Body>
</soapenv:Envelope>

我不明白为什么,他们无法给我一个合理的解释。

对我而言,在中心位置定义命名空间是一种很好的风格,比如&#34; xsl:stylesheet&#34; -Tag,所以我必须定义一次并在样式表中的任何地方使用它。 / p>

如果我按照自己的意愿制作,我必须在样式表中将其写入至少7或8个位置,因为我使用多个模板来渲染文档的单个部分,并且在每个模板上我必须全部写入命名空间声明再次。

我的猜测是,他们(一个众所周知的)框架不足以从整个XML文档中正确提取XML片段。 它只会切断节点&#34; abc:getNumber&#34;并将其作为新的XML文档进行威胁,并突然注意到没有定义命名空间。

第一个问题:我的假设是对的吗?用于SOAP处理的(众所周知的)框架是不是很难得到它?

第二个问题:有没有人知道在XSL中影响XML命名空间外观的技巧,而不是一次又一次地将它们写入我使用的单个模板中?

0 个答案:

没有答案