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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XSD - 仅根据父标记创建所需的属性相关的知识,希望对你有一定的参考价值。

在我的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>

以上是关于XSD - 仅根据父标记创建所需的属性的主要内容,如果未能解决你的问题,请参考以下文章

使用 pandas to_csv 仅引用所需的列

使用 Java 8 Streams 从列表中仅获取所需的对象

从 web api 加载谷歌地图所需的标记,并在相机移动时动态加载其他标记

检查属性文件是不是存在并具有所需的属性

在 tinyMCE 中自定义 HTML 文本所需的帮助

AWS lambda 使用启动模板和 boto3 创建 ec2 实例,仅使用所需的权限