XSD - 仅根据父标签使属性成为必需

XSD - Make an attribute required only depending of the parent tag

在我的 xml shema 中,我可以像这样将标签 <item> 放入 2 个不同的父级中:

<page>
   <item name="foo"/>
</page>

or

<page>
    <list>
        <item class="path/to/class"/>
    </list>
</page>

如何在我的 xsd 中说 name 属性仅在直接父级为 <page> 时才强制?

我找到了答案:

<xs:complexType name="listItemType">
    <xs:simpleContent>
        <xs:extension base="xs:string">
            <xs:attribute type="xs:string" name="class" use="required"/>
        </xs:extension>
   </xs:simpleContent>
</xs:complexType>
<xs:complexType name="itemType">
    <xs:simpleContent>
        <xs:extension base="xs:string">
            <xs:attribute type="xs:string" name="name" use="required"/>
        </xs:extension>
   </xs:simpleContent>
</xs:complexType>
<xs:complexType name="listType">
  <xs:sequence>
      <xs:element type="listItemType" name="item" minOccurs="1" maxOccurs="1" />
  </xs:sequence>
</xs:complexType>
<xs:complexType name="pageType">
  <xs:sequence>
      <xs:element type="itemType" name="item" minOccurs="1" maxOccurs="1" />
  </xs:sequence>
</xs:complexType>