假设我们有一个元素,它要么是叶子(包含一些值),要么是复合(通常的复合模式)。我想对预计将由其他实例细化的树实例进行建模,例如通过用新元素填充复合节点。我希望能够通过其结构来确定一个树实例是否符合另一个实例。是否可以将实例建模为 XSD 并将一致性实现为符合其他 XSD 的 XSD?请注意,不仅仅是两个级别 - 每个结构都可以用作元结构。
附录:为了更好地了解意图,这里有一些可能的规则。
- “这种复合材料不可扩展(已修复)。”
- “您可以在此合成的末尾添加元素。”
- “这个组合包含一个可选的叶子 1 和一个强制性的叶子 2。”
- “这个复合材料包含该复合材料的任意数量的出现。”
例子:
Structure 1:
composite
0..1 "abc"
1..n "def"
0..n extensible composite "c1"
1..1 "ghi"
0..1 composite "c2"
1..1 "jkl"
Structure 2:
composite
1..1 "def"
1..1 "def"
1..1 "def"
1..1 extensible composite "c1"
1..1 "ghi"
1..n "extension"
1..n extensible composite "c1"
1..1 "ghi"
Structure 3:
composite
0..n "abc" //too many "abc"s
//"def" needed
0..1 composite "c2"
1..1 "jkl"
1..1 "mno" //forbidden extension
第二个结构符合第一个,第三个不符合。我想也许这可以用模式验证来表达。