XSD错误:元素是一个简单的类型,所以它必须没有元素信息项[儿童]
问题描述:
我工作的一个非常基本的XML模式,我在NetBeans接收XSD错误:元素是一个简单的类型,所以它必须没有元素信息项[儿童]
cvc-type.3.1.2: Element 'creator' is a simple type, so it must have no element information item [children]. [8]
,当我尝试验证XML。我遵循W3学校教程,看起来我的代码与他们的代码很相似。我很困惑,当我宣称它是复杂的时,错误状态创建者是如何简单的。我是否错误地将创建者元素声明为复杂类型?
XML文档:
<?xml version="1.0" encoding="UTF-8" ?>
<gallery
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="Proj1Schema.xsd">
<creator>
<name>John Doe</name>
</creator>
</gallery>
模式:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:tns="http://xml.netbeans.org/schema/gallery"
elementFormDefault="qualified">
<xs:element name="creator">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="gallery">
<xs:complexType>
<xs:sequence>
<xs:element name="creator" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
答
更换
<xs:element name="creator" type="xs:string"/>
与
<xs:element ref="creator"/>
重新使用gallery
的内容模型中的全局声明element
。由于您拥有XSD,gallery
内的creator
仅允许使用简单的xs:string
内容,这与您的XML具有复杂内容(包括name
子元素)相反。
你已经向我说清楚了。感谢您分享你的知识! :) –