使用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。
有可能是零和课程
之间10
学费必须大于零且小于10,000。
创建一个名为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位数”表示对该值的词汇表示的约束。你可以通过模式面得到你需要的吗?