XML XSD 验证中的全局声明错误
Posted
技术标签:
【中文标题】XML XSD 验证中的全局声明错误【英文标题】:global declaration error in XML XSD validation 【发布时间】:2022-01-10 09:24:05 【问题描述】:我是 XML 和 XSD 创建的新手。我正处于尝试形成验证模式的非常基本的阶段。但是,我花了很多时间在这个圈子上。如果有人可以查看并请让我更好地了解代码发生了什么?就是说根报告没有全局声明。
错误代码为
Cvc-elt.1.a:找不到元素“xs:reports”的声明。第 1 行,第 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>
【问题讨论】:
【参考方案1】:要纠正您未能将 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 验证中的全局声明错误的主要内容,如果未能解决你的问题,请参考以下文章
带有Schema的XML没有验证并且给我“元素声明的内容必须匹配”
无法针对xsd架构验证xml doc(无法找到元素'replyMessage'的声明)