xsd将children限制为另一个complexType的子级

时间:2015-05-11 11:16:39

标签: xml validation xsd schema

是否可以限制complexType的子元素存在于另一个complexType的子元素中。

例如

<xs:element name="people">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="person" type="personType" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
</xs:element>

<xs:element name="companies">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="company" type="companyType" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
</xs:element>

现在在companyType中我希望员工应限制在上面的people元素中。

1 个答案:

答案 0 :(得分:1)

非常感谢potame。因为kjhughes对我现在所做的事情很感兴趣,我会在这里发布。

我已经为公司名称和人员推荐人创建了一个密钥。

<xs:key name="CompanyKey"  >
  <xs:selector xpath="./companies/company" />
  <xs:field xpath="name" />
</xs:key>
<xs:keyref name="CompanyKeyRef" refer="CompanyKey">
  <xs:selector xpath="./people/person" />
  <xs:field xpath="@company_name" />
</xs:keyref>

我只是将它们放在xsd文件中的根元素中。

现在它就像一个数据库。公司名称是关键,人的公司名称是外键。所以公司和个人之间有很多关系。