Xml 找不到元素';wsdl:定义';
我试图找到解决问题的办法,但没有成功 当我试图用XSD验证XML文件时,我遇到了下一个错误: “cvc elt.1:找不到元素'wsdl:definitions'的声明” 我用什么来验证它 在其他验证器中,我得到: 元素定义:架构有效性错误:元素“{}定义”:没有可用于验证根的匹配全局声明 我的XML/wsdl文件是Xml 找不到元素';wsdl:定义';,xml,xsd,wsdl,Xml,Xsd,Wsdl,我试图找到解决问题的办法,但没有成功 当我试图用XSD验证XML文件时,我遇到了下一个错误: “cvc elt.1:找不到元素'wsdl:definitions'的声明” 我用什么来验证它 在其他验证器中,我得到: 元素定义:架构有效性错误:元素“{}定义”:没有可用于验证根的匹配全局声明 我的XML/wsdl文件是 <?xml version='1.0' encoding='UTF-8'?><wsdl:definitions xmlns:xsd="http://www.w3
<?xml version='1.0' encoding='UTF-8'?><wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://com.my.company/IFBTCIBPSI" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" name="IFBTCIBPSI" targetNamespace="http://com.my.company/IFBTCIBPSI">
<wsdl:types>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://com.my.company/IFBTCIBPSI" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:QF2="urn:http://com.my.company/RSException_ARRAY" xmlns:QF1="urn:http://com.my.company/RSErrorMessage_ARRAY" xmlns:Q5="urn:com/EXCEPTION_ARRAY" xmlns:Q4="urn:com/IMOFDA" xmlns:Q3="urn:com/IMOC" xmlns:Q2="urn:com/IMIC" targetNamespace="http://com.my.company/IFBTCIBPSI">
<xsd:import namespace="urn:http://com.my.company/RSErrorMessage_ARRAY" schemaLocation="http://mycompany.com/IFBTCIBPSI?xsd=RSErrorMessage_ARRAY.xsd" />
<xsd:import namespace="urn:http://com.my.company/RSException_ARRAY" schemaLocation="http://mycompany.com/IFBTCIBPSI?xsd=RSException_ARRAY.xsd" />
<xsd:import namespace="urn:com/IMIC" schemaLocation="http://mycompany.com/IFBTCIBPSI?xsd=IMIC.xsd" />
<xsd:import namespace="urn:com/IMOC" schemaLocation="http://mycompany.com/IFBTCIBPSI?xsd=IMOC.xsd" />
<xsd:import namespace="urn:com/IMOFDA" schemaLocation="http://mycompany.com/IFBTCIBPSI?xsd=IMOFDA.xsd" />
<xsd:import namespace="urn:com/EXCEPTION_ARRAY" schemaLocation="http://mycompany.com/IFBTCIBPSI?xsd=EXCEPTION_ARRAY.xsd" />
<xsd:element name="IFBTCIBP">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="Q2:IMIC" />
<xsd:element ref="Q5:EXCEPTION_ARRAY" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="IFBTCIBPR">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="Q3:IMOC" />
<xsd:element ref="Q4:IMOFDA" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="RSError">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="QF1:RSErrorMessage_ARRAY" />
<xsd:element ref="QF2:RSException_ARRAY" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</wsdl:types>
<wsdl:message name="IFBTCIBPR">
<wsdl:part element="tns:IFBTCIBPR" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="RSError">
<wsdl:part element="tns:RSError" name="fault">
</wsdl:part>
</wsdl:message>
<wsdl:message name="IFBTCIBP">
<wsdl:part element="tns:IFBTCIBP" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:portType name="IFBTCIBPSI">
<wsdl:operation name="IFBTCIBP">
<wsdl:documentation />
<wsdl:input message="tns:IFBTCIBP">
</wsdl:input>
<wsdl:output message="tns:IFBTCIBPR">
</wsdl:output>
<wsdl:fault message="tns:RSError" name="fault">
</wsdl:fault>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="IFBTCIBPSI" type="tns:IFBTCIBPSI">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="IFBTCIBP">
<soap:operation soapAction="http://com.my.company/IFBTCIBPSI/IFBTCIBP" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
<wsdl:fault name="fault">
<soap:fault name="fault" use="literal" />
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="IFBTCIBPSI">
<wsdl:documentation />
<wsdl:port binding="tns:IFBTCIBPSI" name="IFBTCIBPSHttpS11Ep">
<soap:address location="http://mycompany.com/IFBTCIBPSI" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
我的xsd文件是:
<?xml version='1.0' encoding='UTF-8'?><xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:com/IMIC"
targetNamespace="urn:com/IMIC">
<xsd:annotation>
<xsd:documentation>
</xsd:documentation>
</xsd:annotation>
<xsd:element name="IMIC">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="1" ref="ID" />
<xsd:element minOccurs="1" ref="IT" />
<xsd:element minOccurs="1" ref="CT" />
<xsd:element minOccurs="1" ref="MI" />
<xsd:element minOccurs="1" ref="KBC" />
<xsd:element minOccurs="1" ref="TT" />
<xsd:element minOccurs="1" ref="TI" />
<xsd:element minOccurs="1" ref="CN" />
<xsd:element minOccurs="0" ref="ST" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ID" type="xsd:date" />
<xsd:element name="IT" type="xsd:integer" />
<xsd:element name="CT" type="xsd:integer" />
<xsd:element name="MI" type="xsd:integer" />
<xsd:element name="KBC" type="xsd:integer" />
<xsd:element name="TT" type="xsd:integer" />
<xsd:element name="TI" type="xsd:string" />
<xsd:element name="CN" type="xsd:string" />
<xsd:element name="ST" type="xsd:integer" />
</xsd:schema>
请帮忙
非常感谢 XML文档的顶级元素位于名称空间
http://schemas.xmlsoap.org/wsdl/
(WSDL),因此需要根据
您还需要范围中的“schema of schema”(XML schema for XML schema),因为XML模式嵌套在wsdl:types
中,以确保该部分也得到正确验证
问题中引用的模式(对于urn:com/IMIC
)与实际的SOAP数据相关(因为它是由嵌套模式导入的),但据我所知,与WSDL文档无关。明显的复杂性来自两个验证级别:
- 一方面,针对WSDL的SOAP数据(包括针对嵌套的XML模式)
- 另一方面,WSDL文档根据“元模式”(本问题的主题)进行验证
xsi:schemaLocation
属性。此属性获取URL列表:一个架构名称空间、其位置(对于WSDL,它与名称空间相同)、另一个架构名称空间、其位置等。由于需要两个架构,因此它有四个URL,如下所示:
<wsdl:definitions
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:tns="http://com.my.company/IFBTCIBPSI"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
name="IFBTCIBPSI"
targetNamespace="http://com.my.company/IFBTCIBPSI"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://schemas.xmlsoap.org/wsdl/
http://schemas.xmlsoap.org/wsdl/
http://www.w3.org/2001/XMLSchema
https://www.w3.org/2001/XMLSchema.xsd" >
<!-- rest of document -->
</wsdl:definitions/>
请注意,xmlvalization.com似乎缺少它所要求的两个文件(XMLSchema.dtd和datatypes.dtd)。如果有,您可以从以下位置复制和粘贴:
在我这方面,验证似乎成功了(没有发现错误)。氧气也不会抱怨。嗨,吉斯兰,谢谢你的回答,你能告诉我/建议我如何解决这个问题吗?谢谢您好,Matan,是的,我已经用xmlvalidation.com的特定说明完成了我的回答(但是xsi:schemaLocation是标准化的,所以其他引擎也应该理解它)。我希望这有帮助。嗨,吉斯兰!首先,我想说谢谢你的帮助。非常感谢!我们检查了您的解决方案,并使用提供的.dtd文件在[xmlvalization.com][1]上通过了验证。问题在于,验证应该通过xmllint linux验证程序,而不需要任何额外的外部模式/文件。是否可以编辑/更改/简化示例中的文件以避免使用外部.dtd文件?再次感谢你![1] :嗨,玛坦。我很乐意帮忙。另外两个DTD位于XMLSchema.xsd的外部子集中。不幸的是,我不熟悉xmlvalization.com或xmllint,但假设它需要这些额外的
.dtd
文档,因为它同时根据dtd和XML模式进行验证。如果在处理器中停用DTD验证,则不需要这些DTD,但在任何情况下都需要.xsd
文档,可以使用xsi:schemaLocation
中给定的位置在Web上获取,也可以在本地缓存。请注意,处理器在如何实现这一点上有一定的自由度,但应该对其进行记录。