我有以下XML-snippet。
<grade term="One" type="simple">4.7</grade>
<grade term="Two" type="complex">2.1</grade>
属性类型可以是&#34; simple
&#34;或&#34; complex
&#34;。 simple
类型可以包含1.0到5.0之间的所有小数,complex
类型只能包含与模式[123]\.[037]|5\.0|4\.[07]
匹配的值。
如何构建XSD以根据所选类型(simple
或complex
)验证成绩内容?
我想出了:
<xs:simpleType name="complex">
<xs:restriction base="xs:decimal">
<xs:minInclusive value="1.0"/>
<xs:maxInclusive value="5.0"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="simple">
<xs:restriction base="xs:decimal">
<xs:pattern value="[123]\.[037]|5\.0|4\.[07]"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="gradeType">
<xs:simpleContent>
<xs:extension base="complex">
<xs:attribute name="term" use="required" type="xs:NCName"/>
<xs:attribute name="type" use="required" type="complex"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
但这会产生很多错误:
Cvc-datatype-valid.1.2.1:&#39;简单&#39;不是有效的价值 &#39; decimal&#39;。,Line&#39; 8&#39;,Column&#39; 66&#39;。 Cvc-attribute.3:The Value&#39; simple&#39; 属性&#39;类型&#39;关于Element&#39;等级&#39;是无效的 它的类型,复杂&#39;。,Line&#39; 8&#39;,列&#39; 66&#39;。 CVC-数据类型,valid.1.2.1: &#39;简单&#39;对于&#39; decimal&#39;。,Line&#39; 9&#39;,Column&#39; 66&#39;不是有效值。 Cvc-attribute.3:The Value&#39; simple&#39;属性&#39;类型&#39;在元素上 &#39;级&#39;对于其类型无效,&#39;复杂&#39;。,Line&#39; 9&#39;, 专栏#66;#39; Cvc-datatype-valid.1.2.1:&#39; simple&#39;不是有效价值 对于&#39; decimal&#39;。,Line&#39; 10&#39;,Column&#39; 66&#39;。 Cvc-attribute.3:价值 &#39;简单&#39;属性&#39;类型&#39;关于Element&#39;等级&#39;无效 尊重其类型,&#39;复杂&#39;。,行&#39; 10&#39;,列&#39; 66&#39;。
非常感谢: - )