XSD - 仅根据父标记创建所需的属性

问题描述 投票:0回答:1

在我的xml shema中,我可以将标签<item>放在2个不同的父级中,如下所示:

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

or

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

我怎么能在我的xsd中说,name属性只有当直接父级是<page>时才是强制性的?

xsd required
1个回答
0
投票

我找到了答案:

<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>
© www.soinside.com 2019 - 2024. All rights reserved.