您好,我对 XML/XSD 完全陌生。有谁可以帮我解决这个问题: XML(给定):
<?xml version="1.0" encoding="UTF-8"?>
<filmliste xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="filmliste.xsd"
author="Max" datum="20.01.2016">
<film>
<titel> Movie</titel>
<regiseur> abc </regiseur>
<erscheinungsjahr> 2015 </erscheinungsjahr>
<schauspieler> abc </schauspieler>
<bewertung> abc </bewertung>
</film>
<film>
<titel> Movie2 </titel>
<erscheinungsjahr> 2015 </erscheinungsjahr>
<regiseur> abc </regiseur>
<schauspieler> abc </schauspieler>
<genre> abc </genre>
</film>
</filmliste>
我的架构:
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="filmliste">
<xs:complexType>
<xs:sequence>
<xs:element name="film">
<xs:complexType>
<xs:choice >
<xs:element type="xs:string" name="titel" maxOccurs="1"/>
<xs:element type="xs:string" name="regiseur" maxOccurs="unbounded"/>
<xs:element type="xs:float" name="erscheinungsjahr" maxOccurs="1"/>
<xs:element type="xs:string" name="schauspieler" maxOccurs="unbounded"/>
<xs:element type="xs:float" name="bewertung" minOccurs="0"/>
<xs:element type="xs:string" name="genre"/>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="author"/>
<xs:attribute type="xs:string" name="datum"/>
</xs:complexType>
</xs:element>
</xs:schema>
现在我的 XML 文档中有两个验证错误。 1:元素“regiseur”:不需要该元素。 2:元素“film”:该元素不是预期的。
最佳答案
xsd:choice
元素不正确。它允许仅出现一个所包含的成员。也就是说,您可以拥有titel
或regiseur
,但不能同时拥有两者。使用xsd:all
(项目以任何顺序出现)或xsd:sequence
(项目按指定顺序出现)。根据您的 XML 判断,顺序并不重要,因此应该是xsd:all
。xsd:sequence@maxOccurs
的默认值为1
。因此它在film
的第二个实例中提示。指定适当的最大界限:<xs:sequence maxOccurs="unbounded">
关于XML 验证问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35215087/