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 作为第一步。
我是 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 作为第一步。