Soap XSD验证错误-xml命名空间问题

Soap XSD验证错误-xml命名空间问题,soap,xsd,xml-namespaces,Soap,Xsd,Xml Namespaces,我正在运行一个简单的web服务,在构造和验证响应时遇到问题。这个问题与名称空间有关 在我的WSDL中,我有: <wsdl:definitions targetNamespace="http://me.com/mystuff"> <wsdl:types><xs:schema targetNamespace="http://me.com/mystuf"> .... <xs:complexType na

我正在运行一个简单的web服务,在构造和验证响应时遇到问题。这个问题与名称空间有关

在我的WSDL中,我有:

    <wsdl:definitions targetNamespace="http://me.com/mystuff">
      <wsdl:types><xs:schema targetNamespace="http://me.com/mystuf">
          ....

        <xs:complexType name="MyResponse">
        <xs:all>
           <xs:element name="Value" type="xs:boolean"/>
            <xs:element name="ResponseString" type="xs:string"/>
        </xs:all>
      </wsdl:types>

      //MyResponse is bound as a response for a soap operation
     </wsdl:definitions>
但我会得到:

        org.xml.sax.SAXException: Exception in startElement: NAMESPACE_ERR: An attempt  is made to create or change an object in a way which is incorrect with regard to namespaces.
org.jdom.JDOMException:startElement:NAMESPACE_ERR中的异常:试图以不正确的方式创建或更改对象

因此,我在响应中的子元素中添加了名称空间声明:

    Element value = new Element("Value", namespace);
    Element responseString = new Element("ResponseString", namespace);
但我得到:

    ERROR PayloadValidatingInterceptor:238 - XML validation error on response: cvc-complex-type.2.4.a: Invalid content was found starting with element 'xyz:Value'. One of '{Value, ResponseString}' is expected.

关于如何解决这个问题有什么想法吗?

如果您控制模式,请在模式中的xs:schema元素中添加
elementFormDefault=“qualified”
;这将使您现在生成的Value和ResponseString的命名空间限定版本有效


如果您不控制模式,那么Value和ResponseString元素将不需要限定名称空间,这与您最初的尝试类似;我看不出那里出了什么问题。如果你能找出是哪句话引起了这个错误,那会有帮助的。

谢谢,我刚刚试过你的建议,它看起来对我很有希望,直到。。。我意识到这需要在所有元素上使用名称空间限定符,包括传入的请求,这绝对不是我想要的。就我在Value和ResponseString中未指定名称空间时遇到的错误而言,这似乎是一个已知问题,唯一的解决方法是添加名称空间:我可能遗漏了一些东西:通过扫描该问题,我得到了另一种解决方法的印象已存在:升级到更高级别的Xalan。如果这不是您的选项,并且您希望仅对两个元素Value和ResponseString进行ns限定,那么只在这两个元素声明中添加
form=“qualified”
,而不是在xs:schema元素上设置元素形式默认值。这两个元素上的form“qualified”就可以了,非常感谢!也可能会尝试更新的xalan。
    ERROR PayloadValidatingInterceptor:238 - XML validation error on response: cvc-complex-type.2.4.a: Invalid content was found starting with element 'xyz:Value'. One of '{Value, ResponseString}' is expected.