Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 找不到元素';wsdl:定义';_Xml_Xsd_Wsdl - Fatal编程技术网

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

我试图找到解决问题的办法,但没有成功

当我试图用XSD验证XML文件时,我遇到了下一个错误:

“cvc elt.1:找不到元素'wsdl:definitions'的声明”

我用什么来验证它

在其他验证器中,我得到:

元素定义:架构有效性错误:元素“{}定义”:没有可用于验证根的匹配全局声明

我的XML/wsdl文件是

 <?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文档根据“元模式”(本问题的主题)进行验证
一次只在一个层次上进行推理是很重要的

为了在和大多数XML模式验证引擎上进行验证,您需要为模式位置提供
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上获取,也可以在本地缓存。请注意,处理器在如何实现这一点上有一定的自由度,但应该对其进行记录。