嗯,在短版本中。老师给了我们测试的评论,它包含了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>
我们必须创建一个具有这些验证的XML Schema。
可以有0到10个课程
学费必须大于零且小于10,000。
创建一个名为CourseType的自定义类型,用于验证课程ID属性是否包含5位数字。
这是我到目前为止的XML Schema Code(不确定它是否正确)。我非常有信心前两个是正确的。我不明白第三个。
<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>
答案 0 :(得分:0)
一些建议。
你说学费的限制是它应该大于零而不是一万。您的声明使用minInclusive和maxInclusive facets,但它允许值为零和一万;您可能需要考虑minExclusive和maxExclusive是否能更好地匹配需求。
totalDigits facet确保CourseType值可以写入五位小数或更少,但不禁止值1
,-12345
或0000000000001492
。约束“恰好包含5位数”表示对值的词汇表示的约束。你能用模式方面得到你需要的东西吗?