添加 XSD 属性限制
Add XSD attribute restriction
我有一个 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>
现在我想在 "path" 属性上添加属性限制,但仅适用于 FileItem,而不适用于其他派生的复杂类型的 ContentItemBase。
如何将属性限制添加到已在复杂类型层次结构中进一步定义的属性组?
您不能在一个步骤中扩展和限制。你需要定义FileItem0
作为ContentItemBase
的扩展,然后定义FileItem
作为FileItem0
的限制;您可以简单地通过使用新类型重新声明它来限制属性,只要新类型是基本类型的有效限制即可。
我有一个 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>
现在我想在 "path" 属性上添加属性限制,但仅适用于 FileItem,而不适用于其他派生的复杂类型的 ContentItemBase。
如何将属性限制添加到已在复杂类型层次结构中进一步定义的属性组?
您不能在一个步骤中扩展和限制。你需要定义FileItem0
作为ContentItemBase
的扩展,然后定义FileItem
作为FileItem0
的限制;您可以简单地通过使用新类型重新声明它来限制属性,只要新类型是基本类型的有效限制即可。