XML Schema测试值并应用额外限制

时间:2009-05-13 08:55:44

标签: testing xsd

我有以下情况: 所有船只都有鲨鱼,游艇等船型。我需要记录哪种类型的船名以及船的数量,但这就是出现问题的地方。如果用户输入鲨鱼我需要验证它在15-30英尺之间,如果他输入一个yatch,它需要在30-60之间。

对此有何帮助?

<boat>
    <type>shark</type>
    <foot>18</foot> //validates
</boat>
<boat>
    <type>shark</type>
    <foot>14</foot> //fails
</boat>
<boat>
    <type>AnyOtherBoat</type>
    <foot>14</foot>//validates since its another type of boat than shark and yatch
</boat>

帮助appriciated! THX

2 个答案:

答案 0 :(得分:3)

Schematron“用于对XML文档中的模式进行断言的语言”)可能能够满足您的需求。它允许指定无法在常规XML模式定义(XSD,RelaxNG)中表达的其他规则。

以下是一些可以帮助您入门的文章:

  1. Schematron on Wikipedia
  2. Schematron: XML Structure Validation Language Using Patterns in Trees
  3. Improving XML Document Validation with Schematron

答案 1 :(得分:1)

回答你的问题:不,你不能在XML Schema中这样做。

  • 首先,您不能使用值来选择要应用的约束(但您可以使用<shark>等元素)
  • 其次,你不能进行算术测试(但是你可以使用正则表达式来指定允许的字符串...所以你可能会破解它。)