我想用XSD驗證XML,但我不明白我的XSD有什麼問題。爲什麼我的xsd:不同類型的元素之間的選擇失敗?
XML
<?xml version="1.0" encoding="UTF-8"?>
<Grades xs:noNamespaceSchemaLocation="grade.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance">
<Grade description="Pass">
<LetterGrade>A+</LetterGrade>
<GradePoint>4.00</GradePoint>
<Percentage>80% and above</Percentage>
</Grade>
<Grade description="Pass">
<LetterGrade>A</LetterGrade>
<GradePoint>4.00</GradePoint>
<Percentage>70% to 80%</Percentage>
</Grade>
<Grade description="Pass">
<LetterGrade>B</LetterGrade>
<GradePoint>3.00</GradePoint>
<Percentage>60% to 70%</Percentage>
</Grade>
<Grade description="Pass">
<LetterGrade>C</LetterGrade>
<GradePoint>2.00</GradePoint>
<Percentage>50% to 60%</Percentage>
</Grade>
<Grade description="Pass">
<LetterGrade>D</LetterGrade>
<GradePoint>1.00</GradePoint>
<Percentage>40% to 50%</Percentage>
</Grade>
<Grade description="Fail">
<LetterGrade>F</LetterGrade>
<GradePoint>0</GradePoint>
<Percentage>Below 40%</Percentage>
</Grade>
<Grade description="Incomplete"> Incomplete module/project/independent study due
to medical/financial/other reasons (may be in 1 or both components of the module).
<LetterGrade>N</LetterGrade>
</Grade>
</Grades>
XSD
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="gradeDetails">
<xs:sequence>
<xs:element name="LetterGrade" type="xs:string"/>
<xs:element name="GradePoint" type="xs:decimal"/>
<xs:element name="Percentage" type="xs:string"/>
</xs:sequence>
<xs:attribute name="description" type="xs:string"/>
</xs:complexType>
<xs:complexType name="gradeNode">
<xs:sequence>
<xs:element name="LetterGrade" type="xs:string"/>
</xs:sequence>
<xs:attribute name="description" type="xs:string"/>
</xs:complexType>
<xs:element name="Grades">
<xs:complexType mixed="true">
<xs:choice>
<xs:element name="Grade" type="gradeDetails" minOccurs="1" maxOccurs="unbounded"/>
<xs:element name="Grade" type="gradeNode" minOccurs="1" maxOccurs="unbounded"/>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
我試圖與在線驗證xmlvalidation.com驗證它,我得到這些錯誤:
錯誤在XML文檔中:
36:10 cvc-complex-type.2.3:元素'Grade'不能包含character [children],因爲該類型的內容類型僅爲元素。
36:10 cvc-complex-type.2.4.b:元素'Grade'的內容不完整。預計會有'{「」:GradePoint}「之一。
有點,我明白這些錯誤信息。我知道這是因爲在最後的<Grade>
標籤中缺少元素。爲了解決它,我創建了2個全局類型並使用了選擇。它現在有什麼問題?
非常有效地使用的minOccurs的。沒想到這個。謝謝。 –