为 XML 命名空间前缀使用不同的名称是否重要?

api*_*ang 5 xml soap xml-namespaces

长话短说,我正在更改应用程序的 Web 服务器容器。旧容器将发送回 SOAP 响应如下:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
   <SOAP-ENV:Body>
      ... other elements ...
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Run Code Online (Sandbox Code Playgroud)

在新服务器中,我可以发回以下响应:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
     ... other elements ...
   </soap:Body>
</soap:Envelope>
Run Code Online (Sandbox Code Playgroud)

如您所见,唯一不同的是使用的命名空间前缀(SOAP-ENVsoap)。我对可能依赖这些 Web 服务的所有客户端都没有透明度,但是这两个 XML 响应是否相同?任何客户端是否会因为看到(只是)根 Envelope 和 Body 标签的不同命名空间前缀而中断,即使它们最终指向相同的 URI

kjh*_*hes 3

不,除了与命名空间值的绑定之外,命名空间前缀名称并不重要。

一些写得不好的软件可能会对 XML 名称空间前缀有不正确的依赖。然而,根据广泛采用的 W3C 标准,命名空间前缀名称只能通过与命名空间值的绑定来获取含义。除了这种约束力之外,它们是微不足道的。

没有一致的 XML 处理器将依赖于特定的命名空间前缀名称本身。