XSD验证错误:找不到元素声明' soapenv:Envelope'

时间:2015-04-16 08:03:44

标签: xml xsd

我尝试使用http://www.freeformatter.com/xml-validator-xsd.html针对我的XSD验证我的XML,但它失败并出现上述错误。 我发现了许多相同的问题,但没有一个答案对我有帮助。 请帮忙,什么是正确的XML / XSD?

我的XML :(只有最小的一个)

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope" >
</soapenv:Envelope>

我的XSD :(只有最小的一个)

<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema  xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"  >
</xs:schema>  

1 个答案:

答案 0 :(得分:2)

有几个问题:

  • 您的XML没有提示XSD的位置。

    补救措施:使用xsi:schemaLocation(请参阅下面的XSD)。

  • SOAP的XML名称空间URI是非标准的。

    补救措施:使用http://schemas.xmlsoap.org/soap/envelope/(请注意尾随斜杠)。

  • 您的XSD未定义targetNamespace

    补救措施:定义一个,或者更好,使用standard Schema for the SOAP/1.1 envelope

您可以使用以下空SOAP信封消息来检查您的消息;它将消除您的错误并允许找到soapenv:Envelope的声明:

最小有效SOAP信封

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xsi:schemaLocation="http://schemas.xmlsoap.org/soap/envelope/
                                      http://schemas.xmlsoap.org/soap/envelope/"
                  xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" >
  <soapenv:Body/>
</soapenv:Envelope>