是否有可能(如果是这样,如何)使用XML Schema强制执行文档中的两个元素必须包含相同的子结构?例如,我想表示任何foo都有两个孩子,bar1和bar2,而bar1必须和bar2具有相同的子结构:
<foo>
<bar1>
<baz>hello, world</baz>
</bar1>
<bar2>
<baz>hello, world</baz>
</bar2>
</foo>
键和 keyref 是正确的方法吗?
谢谢!
答案 0 :(得分:0)
当然 - 定义一个名为<xs:complexType>
,它代表bar1和bar2节点的“内容”,并用它来定义两个元素:
<xs:schema id="foo" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="foo">
<xs:complexType>
<xs:element name="bar1" type="subbar" />
<xs:element name="bar2" type="subbar" />
</xs:complexType>
</xs:element>
<xs:complexType name="subbar">
<xs:sequence>
<xs:element name="baz" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:schema>