cvc-elt.1: 找不到元素 'games' 的声明
cvc-elt.1: Cannot find the declaration of element 'games'
我正在按照一本基础书学习XML。完全按照这本书编辑 XML 稍微给了我这个错误:
cvc-elt.1: Cannot find the declaration of element 'games'.
XML:
<?xml version="1.0" encoding="utf-8"?>
<games
xmlns="http://tempuri.org/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tempuri.org game.xsd">
<game>
<title>Red Dead Redeption Two</title>
<platform>Xbox One</platform>
<desc>Red Dead Redeption Two is a western action adventure game</desc>
<img>Cover.png</img>
</game>
</games>
XSD:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema
targetNamespace="http://tempuri.org"
elementFormDefault="qualified"
xmlns="http://tempuri.org/XMLSchema.xsd"
xmlns:mstns="http://tempuri.org/XMLSchema.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema games.xsd">
<xs:element name="games">
<xs:complexType>
<xs:sequence>
<xs:element name="game" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string"/>
<xs:element name="platform" type="xs:string"/>
<xs:element name="desc" type="xs:string"/>
<xs:element name="img" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
XSD
改变
xmlns:xs="http://www.w3.org/2001/XMLSchema games.xsd"
至
xmlns:xs="http://www.w3.org/2001/XMLSchema"
因为后者是 XMLSchema 命名空间的实际定义,而前者似乎是遵循 schemaLocation
属性形式的错误尝试。
删除以下内容:
xmlns="http://tempuri.org/XMLSchema.xsd"
xmlns:mstns="http://tempuri.org/XMLSchema.xsd"
因为 XSD 的默认命名空间不应该是 http://tempuri.org/XMLSchema.xsd
并且因为不需要 mstns
命名空间前缀声明。
<?xml version="1.0" encoding="utf-8"?>
<xs:schema
targetNamespace="http://tempuri.org"
elementFormDefault="qualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="games">
<xs:complexType>
<xs:sequence>
<xs:element name="game" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string"/>
<xs:element name="platform" type="xs:string"/>
<xs:element name="desc" type="xs:string"/>
<xs:element name="img" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
XML
改变
xmlns="http://tempuri.org/"
成为
xmlns="http://tempuri.org"
匹配 XSD 中的 targetNamespace
和 XML 中的 schemaLocation
。
<?xml version="1.0" encoding="utf-8"?>
<games
xmlns="http://tempuri.org"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tempuri.org games.xsd">
<game>
<title>Red Dead Redeption Two</title>
<platform>Xbox One</platform>
<desc>Red Dead Redeption Two is a western action adventure game</desc>
<img>Cover.png</img>
</game>
</games>
进行上述更改后,您的 XML 将成功验证您的 XSD。
我正在按照一本基础书学习XML。完全按照这本书编辑 XML 稍微给了我这个错误:
cvc-elt.1: Cannot find the declaration of element 'games'.
XML:
<?xml version="1.0" encoding="utf-8"?>
<games
xmlns="http://tempuri.org/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tempuri.org game.xsd">
<game>
<title>Red Dead Redeption Two</title>
<platform>Xbox One</platform>
<desc>Red Dead Redeption Two is a western action adventure game</desc>
<img>Cover.png</img>
</game>
</games>
XSD:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema
targetNamespace="http://tempuri.org"
elementFormDefault="qualified"
xmlns="http://tempuri.org/XMLSchema.xsd"
xmlns:mstns="http://tempuri.org/XMLSchema.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema games.xsd">
<xs:element name="games">
<xs:complexType>
<xs:sequence>
<xs:element name="game" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string"/>
<xs:element name="platform" type="xs:string"/>
<xs:element name="desc" type="xs:string"/>
<xs:element name="img" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
XSD
改变
xmlns:xs="http://www.w3.org/2001/XMLSchema games.xsd"
至
xmlns:xs="http://www.w3.org/2001/XMLSchema"
因为后者是 XMLSchema 命名空间的实际定义,而前者似乎是遵循 schemaLocation
属性形式的错误尝试。
删除以下内容:
xmlns="http://tempuri.org/XMLSchema.xsd"
xmlns:mstns="http://tempuri.org/XMLSchema.xsd"
因为 XSD 的默认命名空间不应该是 http://tempuri.org/XMLSchema.xsd
并且因为不需要 mstns
命名空间前缀声明。
<?xml version="1.0" encoding="utf-8"?>
<xs:schema
targetNamespace="http://tempuri.org"
elementFormDefault="qualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="games">
<xs:complexType>
<xs:sequence>
<xs:element name="game" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string"/>
<xs:element name="platform" type="xs:string"/>
<xs:element name="desc" type="xs:string"/>
<xs:element name="img" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
XML
改变
xmlns="http://tempuri.org/"
成为
xmlns="http://tempuri.org"
匹配 XSD 中的 targetNamespace
和 XML 中的 schemaLocation
。
<?xml version="1.0" encoding="utf-8"?>
<games
xmlns="http://tempuri.org"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tempuri.org games.xsd">
<game>
<title>Red Dead Redeption Two</title>
<platform>Xbox One</platform>
<desc>Red Dead Redeption Two is a western action adventure game</desc>
<img>Cover.png</img>
</game>
</games>
进行上述更改后,您的 XML 将成功验证您的 XSD。