当前位置: 首页 > 知识库问答 >
问题:

必须检索XML命名空间名称URI吗?

农鸿达
2023-03-14

我的WSDL上有以下标签:

<?xml version='1.0' encoding='UTF-8'?>
<definitions name="" targetNamespace="http://xxxxx/ws"
             xmlns="http://schemas.xmlsoap.org/wsdl/"
             xmlns:s0="http://xxxxx/ws"
             xmlns:s1="http://schemas.xmlsoap.org/wsdl/soap/">
  <types>
    <xsd:schema attributeFormDefault="qualified" 
                elementFormDefault="qualified"
                targetNamespace="http://xxxxx/ws/comments" 
                xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" 
                xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" 
                xmlns:s0="http://xxxxx/ws" 
                xmlns:s1="http://schemas.xmlsoap.org/wsdl/soap/" 
                xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
                xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
                xmlns:tns="http://xxxxx/ws" 
                xmlns:tnsc="http://xxxxx/ws/comments" 
                xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
                xmlns:y="http://new.webservice.namespace">

这些类型随后被鉴定为s0、s1。。。名称空间。

问题是名称空间endpoint(=)http://xxxxx/ws)是否需要是有效的url
如果endpoint不再存在-是否意味着我们需要再次为Web服务重新生成存根代理?

注意:Web服务本身的终结点与名称空间的终结点不同,并且仍然存在。

共有1个答案

沃驰
2023-03-14

来自@jww问题:

问题是名称空间endpoint(=)http://xxxxx/ws)是否需要是有效的url?

不,XML名称空间采用URI的词汇形式,但根据W3C建议:XML 1.0中的名称空间(第三版):

属性的规范化值必须是URI引用(标识命名空间的命名空间名称)或空字符串。名称空间名称为了达到其预期目的,应该具有唯一性和持久性的特征。它的目标不是直接用于检索模式(如果存在的话)。

来自@jww后续评论:

如果无法检索http:,那么http:的用途是什么?他们不应该使用类似于null:的东西来表示其私有性吗?否则,像我这样的人怎么知道它什么时候是私有的,什么时候被弃用或撤销?我想我要问的是,信号机制是什么?

许多人,包括我自己,确实建议将命名空间URI作为文档或管理XSD本身检索。然而,如上所示这不是必需的。此外,当命名空间名称不是URI时,符合的验证XML处理器甚至不需要报告:

为了符合本规范,处理器必须报告名称空间格式良好的违规行为,但不要求检查名称空间名称是否是URI引用[RFC3986]。

出于这个原因,您有时会看到在命名空间名称中使用非URI,特别是对于快速、一次性的示例。(不过,使用http://www.example.org/topic在这种情况下,这是适当的。)

使用URI是因为它们是一种方便的机制,用于通过内置的权限规范表示资源的唯一性——域的所有者负责使用域定义的名称空间。

来自@jww后续评论:

如果endpoint不再存在-这是否意味着我们需要再次为Web服务重新生成存根代理?

不,您甚至不应该将名称空间作为endpoint引用。命名空间名称URI的可检索性在任何时候都与Web服务的规范或操作无关。

 类似资料:
  • 主要内容:命名冲突,使用前缀来避免命名冲突,XML 命名空间 - xmlns 属性,统一资源标识符(URI,全称 Uniform Resource Identifier),默认的命名空间,实际使用中的命名空间XML 命名空间提供避免元素命名冲突的方法。 命名冲突 在 XML 中,元素名称是由开发者定义的,当两个不同的文档使用相同的元素名时,就会发生命名冲突。 这个 XML 携带 HTML 表格的信息: <table> <tr> <td>Apples</td> <td>Bananas</td> <

  • XML信封命名空间的正确URI是什么。我见过很多,例如。”http://www.w3.org/2001/12/soap-envelope“,”http://www.w3.org/2001/06/soap-envelope“,”http://www.w3.org/2003/05/soap-envelope“,”http://schemas.xmlsoap.org/soap/envelope/“。请告

  • 问题内容: 我有一个像这样开始的XML文件: 我将不得不打开许多这些文件。它们中的每一个都有不同的名称空间,但一次只能有一个名称空间(我永远不会在一个xml文件中找到两个定义的名称空间)。 使用XPath,我希望有一种自动的方法将给定的名称空间添加到名称空间管理器中。到目前为止,我只能通过解析xml文件来获取名称空间,但是我有一个XPathNavigator实例,并且它应该具有一种不错且干净的方式

  • 我有一个非常简单的XML 组织。xml。萨克斯。SAXParseException:s4s elt架构ns:元素'Config'的命名空间必须来自架构命名空间'http://www.w3.org/2001/XMLSchema'. XML到这里: XSD去这里:

  • 我正在写一个实用程序之间的集成内部系统和第三方产品。我试图生成一个可以由第三方产品加载的xml文件,但我很难按照他们的要求生成xml。我已经创建了一个简化的版本,只是为了测试。 预期产出应如下: 我的代码如下: 主要: 课程类别:

  • 在OpenFOAM中,存在一个函数,其名称为exp,表示数学中的幂操作。同时,C++本身也可以进行这个计算,并且函数名称也为exp。这会导致调用的时候,编译器并不知道应该调用OpenFOAM的exp还是C++本身的exp。一种方法是将其中一个exp函数进行改名,比如将OpenFOAM中的exp改成expFoam。但还有更简单的方式。 名称空间专门用于解决上面的问题,它可作为附加信息来区分不同库中相