我正忙于为行业标准报告构建XML架构。此报告有不同的部分,每个部分都有多个标题,每个标题下有多个字段。大多数字段需要一些用户输入;但是,有些字段是不可变的,基本上可以作为文档。
目标是使用户能够从XML + XSD构建报告,而无需引用任何其他文档。这意味着我需要在XSD中定义静态的某些元素。
基本上我有以下内容:
<heading>
<field1>user input</field1>
<field2/> (static) **
<field3>user input</field3>
</heading>
**这是我的问题领域
问题(根据保罗的回应编辑):
答案 0 :(得分:2)
您可以使用sequence
元素定义具有固定子元素序列的元素内容模型。
您可以使用maxOccurs
和minOccurs
属性声明在任何给定情况下允许或要求任何给定元素的实例数(包括'0'或'unbounded')。
关于simpleContent,您可以使用restriction
元素来限制任何给定元素或属性的可能文本内容。在restriction
范围内,您可以使用pattern
(使用只传递所需内容的正则表达式),enumeration
(使用单个选项)或assertion
(声明为值必须是您想要的内容。
annotation
对于提供人类可读的文档很有用,但对于任何针对机器消耗的内容都不太有用。
拥有强制性固定内容并非完全不合理,但您应该仔细考虑用例。
如果可以从文件的存在中合理地推断出信息,那么包括它真的值得吗?
如果您只是编纂现有标准,那么您实际上没有选择权。如果内容必须在那里,那么这个事实应该反映在架构中。