【问题标题】:The prefix "xs" for element "xs:schema" is not bound元素“xs:schema”的前缀“xs”未绑定
【发布时间】:2013-01-14 14:54:20
【问题描述】:

以下是我在为 SOAP 服务生成客户端时尝试使用的 xsd,Eclipse 抛出错误:元素“xs:schema”的前缀“xs”未绑定。

<xs:schema version="1.0" 
           targetNamespace="bdo.com.ph/RemitAPI">
  <xs:element name="CheckServiceResponse" 
              nillable="true" type="xs:string"/>
  <xs:element name="apiRequest" nillable="true" type="tns:APIRequest"/>
  .............................
      <xs:element name="referenceNo" type="xs:string" form="qualified"/>
    </xs:sequence>
  </xs:complexType>
</xs:schema> 

我从网络服务获得了这个 xsd

【问题讨论】:

  • 您是否刚刚从 WSDL 中提取了 Schema 部分?可能 xs 名称空间是在 WSDL 的信封中定义的。尝试在架构元素中添加 xmlns:xs="w3.org/2001/XMLSchema" 作为属性:w3.org/2001/XMLSchema">
  • 行之有效:)。是的,我从 WSDL 中提取了模式。感谢您的即时帮助。但是现在我在这里面临下一个问题:尝试从肥皂网络服务生成客户端时 java.io.IOException: Element {bdo.com.ph/RemitAPI}apiStatusRequest is referenced but not defined。
  • 请在问题中添加代码,而不是 cmets。
  • Kimi .. 搞定了,一开始我不知道怎么加代码。

标签: xsd-validation


【解决方案1】:
 xmlns:xs="http://www.w3.org/2001/XMLSchema"  

未在架构 XSD 中添加。 添加它让我继续下一步。

xmlns:tns="http://www.bdo.com.ph/RemitAPI  

在 XSD 中不存在,尽管它存在于封闭的 WSDL 中。

当从 WSDL 中提取 XSD 到本地机器时,XSD 中的命名空间引用不会从 WSDL 中获取,它们需要在 XSD 中声明。

【讨论】:

    【解决方案2】:

    这主要是因为缺少命名空间声明。

       "<elem "namespace" ..xsi:nil=true.>"
    

    会起作用。基本上,XML 验证器需要一个命名空间来验证。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-25
      • 2015-01-29
      • 2011-08-10
      • 2012-10-03
      • 1970-01-01
      • 1970-01-01
      • 2011-10-31
      • 1970-01-01
      相关资源
      最近更新 更多