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

global declaration error in XML XSD validation

我是 XML 和 XSD 创作的新手。我正处于尝试形成验证模式的非常基本的阶段。但是,我花了很多时间在这个问题上兜圈子。如果有人可以查看并请让我更好地了解代码发生了什么?就是说根报告没有全局声明。

错误代码显示为

Cvc-elt.1.a: Cannot Find The Declaration Of Element 'xs:reports'., Line '1', Column '134'.

 <?xml version="1.0" encoding="UTF-8"?>

<xs:reports xmlns:xs="https://www.w3schools.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="user.xsd">

    user(
    userID SERIAL,
    username varchar(255),
    password varchar(255),
    firstname varchar(255),
    middlename varchar(255),
    lastname varchar(255),
    email varchar(255),
  dob date,
    gender varchar(10)
  profile_photo bytea,
  home_phone varchar(50),
    cell_phone varchar(50),
    created_date timestamp default current_timestamp
  );
</xs:reports>
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
  <xs:element name="reports">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="user">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="userID" type="xs:string"/>
              <xs:element name="username" type="xs:string"/>
              <xs:element name="password" type="xs:string"/>
              <xs:element name="firstname" type="xs:string"/>
              <xs:element name="middlename" type="xs:string"/>
              <xs:element name="lastname" type="xs:string"/>
              <xs:element name="email" type="xs:string"/>
              <xs:element name="dob" type="xs:date"/>
              <xs:element name="gender" type="xs:string"/>
              <xs:element name="profile_photo" type="xs:string"/>
              <xs:element name="cell_phone" type="xs:string"/>
              <xs:element name="created_date" type="xs:dateTime"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

要纠正未能将 XML 与 XSD 相关联的直接错误,请阅读 How to link XML to XSD using schemaLocation or noNamespaceSchemaLocation?

然后,在写你的XML时实际上遵循XSD:

<reports>
  <user>
    <userID>123</userID>
    <username>John Smith</username>
    ...
  </user>
</reports>

还有一个问题,为什么 XSD 会让 user 成为 reports 的子代,但您可以让现有的 XSD 像新的一样工作XML 作为第一步。