XSD: 无法将名称解析为 (n) 'type definition' 组件
XSD: Cannot resolve the name to a(n) 'type definition' component
我正在尝试使用 XSD 验证 XML。这是我的 XML 文件:
<PRODUCTS>
<SELLER>ME</SELLER>
<CURRENCY>EURO</CURRENCY>
<PRODUCT>
<NAME>LAPTOP</NAME>
<MODEL>DELL</MODEL>
<PRICE>2500</PRICE>
<STOCK>100</STOCK>
</PRODUCT>
<PRODUCT>
<NAME>PHONE</NAME>
<MODEL>IPHONE</MODEL>
<PRICE>1500</PRICE>
<STOCK>100</STOCK>
</PRODUCT>
<PRODUCT>
<NAME>TABLET</NAME>
<MODEL>SAMSUNG</MODEL>
<PRICE>3000</PRICE>
<STOCK>700</STOCK>
</PRODUCT>
</PRODUCTS>
和XSD文件:
<xs:element name="PRODUCTS" type="ProductType"/>
<xs:ComplexType name="ProductType">
<xs:all>
<xs:element type="xs:string" name="SELLER"/>
<xs:element type="xs:string" name="CURRENCY"/>
<xs:element type="Products" name="PRODUCT"/>
</xs:all>
</xs:ComplexType>
<xs:ComplexType name="Products">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="PRODUCT" type="Products"/>
</xs:sequence>
</xs:ComplexType>
<xs:complexType name="Products">
<xs:sequence>
<xs:element type="xs:string" name="NAMES"/>
<xs:element type="xs:string" name="MODEL"/>
<xs:element type="xs:int" name="PRICE"/>
<xs:element type="xs:int" name="STOCK"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
但是当我尝试验证时出现错误
src-resolve: Cannot resolve the name 'ProductType' to a(n) 'type definition' component.
我不明白为什么会出现此错误以及如何解决此问题。我看到的问题是 XSD 文件中元素的第一行。
XML 和 XSD 区分大小写,因此请将 XSD 中出现的所有 xs:ComplexType
更改为 xs:complexType
以解决眼前的问题。
更新,下一期从评论迁移:
Now I get new error due to duplication of Products
: A schema cannot contain two global components with the same name; this schema contains two occurrences of Products
.
不能以两种不同的方式用相同的名称定义一个类型。看起来第二个 Products
在参考 (@type
) 和定义 (xs:complexType/@name
) 中都应该是 Product
。
我正在尝试使用 XSD 验证 XML。这是我的 XML 文件:
<PRODUCTS>
<SELLER>ME</SELLER>
<CURRENCY>EURO</CURRENCY>
<PRODUCT>
<NAME>LAPTOP</NAME>
<MODEL>DELL</MODEL>
<PRICE>2500</PRICE>
<STOCK>100</STOCK>
</PRODUCT>
<PRODUCT>
<NAME>PHONE</NAME>
<MODEL>IPHONE</MODEL>
<PRICE>1500</PRICE>
<STOCK>100</STOCK>
</PRODUCT>
<PRODUCT>
<NAME>TABLET</NAME>
<MODEL>SAMSUNG</MODEL>
<PRICE>3000</PRICE>
<STOCK>700</STOCK>
</PRODUCT>
</PRODUCTS>
和XSD文件:
<xs:element name="PRODUCTS" type="ProductType"/>
<xs:ComplexType name="ProductType">
<xs:all>
<xs:element type="xs:string" name="SELLER"/>
<xs:element type="xs:string" name="CURRENCY"/>
<xs:element type="Products" name="PRODUCT"/>
</xs:all>
</xs:ComplexType>
<xs:ComplexType name="Products">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="PRODUCT" type="Products"/>
</xs:sequence>
</xs:ComplexType>
<xs:complexType name="Products">
<xs:sequence>
<xs:element type="xs:string" name="NAMES"/>
<xs:element type="xs:string" name="MODEL"/>
<xs:element type="xs:int" name="PRICE"/>
<xs:element type="xs:int" name="STOCK"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
但是当我尝试验证时出现错误
src-resolve: Cannot resolve the name 'ProductType' to a(n) 'type definition' component.
我不明白为什么会出现此错误以及如何解决此问题。我看到的问题是 XSD 文件中元素的第一行。
XML 和 XSD 区分大小写,因此请将 XSD 中出现的所有 xs:ComplexType
更改为 xs:complexType
以解决眼前的问题。
更新,下一期从评论迁移:
Now I get new error due to duplication of
Products
: A schema cannot contain two global components with the same name; this schema contains two occurrences ofProducts
.
不能以两种不同的方式用相同的名称定义一个类型。看起来第二个 Products
在参考 (@type
) 和定义 (xs:complexType/@name
) 中都应该是 Product
。