XML Schema:添加具有不可变值的元素

时间:2012-01-11 12:47:54

标签: xml xsd

我正忙于为行业标准报告构建XML架构。此报告有不同的部分,每个部分都有多个标题,每个标题下有多个字段。大多数字段需要一些用户输入;但是,有些字段是不可变的,基本上可以作为文档。

目标是使用户能够从XML + XSD构建报告,而无需引用任何其他文档。这意味着我需要在XSD中定义静态的某些元素。

基本上我有以下内容:

<heading>
  <field1>user input</field1>
  <field2/> (static) **
  <field3>user input</field3>
</heading>

**这是我的问题领域

问题(根据保罗的回应编辑):

  1. 如何定义必需元素
  2. 具有非变量预定义值
  3. 这是一个很好的设计实践吗?

1 个答案:

答案 0 :(得分:2)

您可以使用sequence元素定义具有固定子元素序列的元素内容模型。

您可以使用maxOccursminOccurs属性声明在任何给定情况下允许或要求任何给定元素的实例数(包括'0'或'unbounded')。

关于simpleContent,您可以使用restriction元素来限制任何给定元素或属性的可能文本内容。在restriction范围内,您可以使用pattern(使用只传递所需内容的正则表达式),enumeration(使用单个选项)或assertion(声明为值必须是您想要的内容。

annotation对于提供人类可读的文档很有用,但对于任何针对机器消耗的内容都不太有用。

新子问题的附录

拥有强制性固定内容并非完全不合理,但您应该仔细考虑用例。

如果可以从文件的存在中合理地推断出信息,那么包括它真的值得吗?

如果您只是编纂现有标准,那么您实际上没有选择权。如果内容必须在那里,那么这个事实应该反映在架构中。