首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用XML验证XML文档

使用XML验证XML文档
EN

Stack Overflow用户
提问于 2013-03-06 13:58:41
回答 1查看 138关注 0票数 0

嗯,在简短的版本中。老师给我们复习了测试,它包含了XML模式(我们还没有在课堂上讨论过)。我正在读这一章,但很难理解,因为这本书一次只给出了一些代码片段。所以,我不知道应该如何把事情放在更大的范围内。

我们有一个XML文档,如下所示

代码语言:javascript
复制
<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。

  1. 可以有0到10门课程。
  2. 学费必须大于零,少于10,000。
  3. 创建名为CourseType的自定义类型,该类型验证课程ID属性是否包含确切的5位数字。

到目前为止,这是我的XML代码(不确定它是否正确)。我很有信心前两件事都是对的。我不明白第三个。

代码语言:javascript
复制
<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>
EN

回答 1

Stack Overflow用户

发布于 2013-03-06 16:39:00

几个建议。

  • 你说学费的限制是它应该大于零,少于一万。但是,您的声明使用了minInclusive和maxInclusive方面,它们允许值为0和10000;您可能需要考虑minExclusive和maxExclusive在匹配需求方面是否做得更好。
  • totalDigits方面确保可以用五位数或更少的小数位来编写CourseType值,但它并不禁止使用1-123450000000000001492值。该约束“确切包含5位数”表示对值的词法表示形式的约束。你能用模式面得到你需要的东西吗?
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15249256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档