使用XML Schema来验证XML文档

问题描述:

那么,在短版。老师给我们提供了测试评论,它包含了XML模式(我们还没有在课堂上讲过)。我正在阅读这一章,但很难理解,因为这本书一次只能提供代码片段。所以,我不知道如何把事情放在更大的事情上。使用XML Schema来验证XML文档

我们有一个XML文档就是这个样子

<enrollment> 
    <semester>1128</semester> 
    <student> 
    <id>1000001</id> 
    <lastname>Smith</lastname> 
    <firstname>Joe</firstname> 
    <courses> 
     <course id="10001"/> 
     <course id="10003"/> 
    </courses> 
    <tuition>200</tuition> 
    </student> 
</enrollment> 

我们必须创建一个具有这些validatons一个XML Schema。

  1. 有可能是零和课程

  2. 之间10

  3. 学费必须大于零且小于10,000。

  4. 创建一个名为CourseType自定义类型验证过程ID属性包含5位数字组成。

这是我到目前为止的XML模式代码(不知道它是否正确)。我感到非常有信心前两个是正确的。我不明白第三个。

<xs:schema blah blah blah validation inputs> 
<xs:element name="enrollment"> 
<xs:complexType> 
    <xs:sequence> 
    <xs:element name="courses"> 
     <xs:complexType> 
     <xs:sequence> 
      <xs:element name="course" 
      minOccurs="0" 
      maxOccurs="10"/> 
     </xs:sequence> 
     </xs:complexType> 
    </xs:element> 

    <xs:element name="tuition"> 
    <xs:simpleType> 
     <xs:restriction base="xs:integer"> 
     <xs:minInclusive value="0"/> 
     <xs:maxInclusive value="10000"/> 
     </xs:restriction> 
    </xs:simpleType> 
    </xs:element> 

    <xs:element name="Courses"> 
     <xs:complexType name ="Course"> 
     <xs:simpleContent> 
     <xs:extension base ="xs:course ID"> 
      <xs:attribute name="id" type="CourseType"> 
      </xs:attribute> 
     </xs:extension> 
     </xs:simpleContent> 
     </xs:complexType> 
    </xs:element> 
    </xs:sequence> 
</xs:complexType> 
</xs:element> 

<xs:simpleType name="CourseType"> 
    <xs:restriction base="xs:integer"> 
    <xs:totalDigits value ="5"/> 
    </xs:restriction> 
</xs:simpleType> 
</xs:schema> 

有几点建议。

  • 你说对学费的约束是它应该大于零,小于一万。您的声明使用minInclusive和maxInclusive方面,但是,它允许值为零和一万;您可能需要考虑minExclusive和maxExclusive是否可以更好地匹配需求。

  • 的totalDigits面确保了CourseType值可以具有五个十进制数字的或更少的写入,但不禁止值1-12345,或0000000000001492。约束“只包含5位数”表示对该值的词汇表示的约束。你可以通过模式面得到你需要的吗?