XML:通过XML Schema强制实现两个元素的子结构

时间:2010-03-09 18:05:09

标签: xml xsd

是否有可能(如果是这样,如何)使用XML Schema强制执行文档中的两个元素必须包含相同的子结构?例如,我想表示任何foo都有两个孩子,bar1和bar2,而bar1必须和bar2具有相同的子结构:

<foo>
  <bar1>
    <baz>hello, world</baz>
  </bar1>
  <bar2>
    <baz>hello, world</baz>
  </bar2>
</foo>

keyref 是正确的方法吗?

谢谢!

1 个答案:

答案 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>