无法找到xsd元素xml的声明

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法找到xsd元素xml的声明相关的知识,希望对你有一定的参考价值。

我试图针对xsd验证xml时遇到此错误。 Cannot find the declaration of element Transactions。知道元素Transactions是否存在于XSD中。您可以在下面找到XML和XSD。 --------------- XML --------------------------------

<Transactions>
    <User>userId</User>
    <RequestDate>2018-04-04T11:05:16+01:00</RequestDate>
    <Language>en_US</Language>
</Transactions>

--------------- XSD -------------------------------- NB:我的文件包含许多xsd,如下所示。

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <xs:schema version="1.0" targetNamespace="..." xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ns2="imported xsd1" xmlns:ns1="imported xsd1">
      <xs:import namespace="..." schemaLocation="schema5.xsd"/>
      <xs:import namespace="..." schemaLocation="schema4.xsd"/>
      <xs:complexType name="Transactions">
        <xs:complexContent>
          <xs:extension base="ns2:...">
            <xs:sequence>
              <xs:element name="User" type="ns1:User" minOccurs="0"/>
              <xs:element name="RequestDate" type="xs:string" minOccurs="0"/>
              <xs:element name="Language" type="xs:string" minOccurs="0"/>
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
<xs:complexType name="Other Element">
    <xs:complexContent>
      <xs:extension base="ns2:...">
        <xs:sequence>
          <xs:element name="..." type="ns1:..." minOccurs="0"/>
          <xs:element name="..." type="xs:string" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
     </xs:schema>

请帮忙。

答案

您显示的XSD具有类型声明,但缺少元素声明,例如:

<xs:element name="Transactions" type="Transactions"/>

如果在具有目标命名空间的XSD中,您可能还必须在Transactions中的type="Transactions"之前添加名称空间前缀。

以上是关于无法找到xsd元素xml的声明的主要内容,如果未能解决你的问题,请参考以下文章

XSD 到 jaxb 注释类给出了无法解析 xml 元素错误

XML XSD 验证中的全局声明错误

带有Schema的XML没有验证并且给我“元素声明的内容必须匹配”

未声明 XML 签名元素

『XML』XML/XSD命名空间解析

原因为 1.无法找到文档; 2. 无法读取文档; 3. 文档的根元素不是xsd:schema