XSD从属性名称

时间:2016-11-14 04:19:13

标签: xml xsd

我有以下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以根据所选类型(simplecomplex)验证成绩内容?

我想出了:

<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;。

非常感谢: - )

0 个答案:

没有答案