首页 > 解决方案 > 添加 XSD 属性限制

问题描述

我有一个这样的 XSD:

<xs:complexType name="ItemBase" abstract="true">
</xs:complexType>

<xs:complexType name="ContentItemBase" abstract="true">
  <xs:complexContent>
    <xs:extension base="ItemBase">
        <xs:attributeGroup ref="path" />
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

<xs:attributeGroup name="path">
  <xs:attribute name="path" type="xs:string" use="required" />
  [...]
</xs:attributeGrou>

+ Various complex types derived from ContentItemBase, especially this one:
<xs:complexType name="FileItem">
  <xs:complexContent>
    <xs:extension base="ContentItemBase">
      <xs:sequence>
        [...]
      </xs:sequence>
  </xs:extension>
</xs:complexContent>

现在我想在“路径”属性上添加一个属性限制,但仅适用于 FileItem,而不是其他派生的 ContentItemBase 复杂类型。

如何将属性限制添加到已在复杂类型层次结构中进一步定义的属性组?

标签: xmlxsd

解决方案


您不能在一个步骤中扩展和限制。您需要定义FileItem0为 的扩展ContentItemBase,然后定义FileItemFileItem0;的限制 您可以简单地通过使用新类型重新声明属性来限制属性,只要新类型是对基类型的有效限制。


推荐阅读