我有一个通过 XML 传输的对象层次结构。通过说明哪个元素可能包含哪些子元素,层次结构规则很容易在 XML Schema 中表达。XML 数据的简化示例是(实际对象数据包含在属性中,为简洁起见省略):
<root>
<channel>
<router>
<message />
<message />
<message />
</router>
<router>
<message />
<message />
</router>
</channel>
<channel></channel>
</root>
现在我想介绍“文件夹”,即仅用于构造长子列表以便于使用的节点。如果我创建一个通用<folder>
元素,它不会强加自己的规则,而是从树上的下一个非文件夹元素继承它们。
在我看来,我无法在 XSD 中表达这一点,或者我可以吗?
我可以考虑替代方案,例如为每个可能的规则(丑陋)设置特定的文件夹元素,简单地忽略 XSD 中的规则并在代码中强制执行它们(对我来说很好)或以某种方式分离 XML 中的对象层次结构和中间节点(不太确定如何)。如果您有任何意见,我也将不胜感激。