我有我的 xsd 的这一部分:
<!-- FIELDGROUP - groups all available field types -->
<xsd:group name="FieldGroup">
<xsd:choice id="fieldset-fields">
<xsd:element name="TextField" type="textfield-type" maxOccurs="unbounded" />
<xsd:element name="NumberField" type="numberfield-type" maxOccurs="unbounded" />
<xsd:element name="Button" type="button-type" maxOccurs="unbounded" />
</xsd:choice>
</xsd:group>
所有这些元素类型(文本字段类型、数字字段类型、按钮类型)都扩展了通用类型field-type
:
<!-- Fieldset -> FIELD-TYPE: the base type of all possible field elements -->
<xsd:complexType id="field-type" name="field-type" abstract="true" mixed="false">
<xsd:sequence>
<xsd:element name="Label" type="label-type" minOccurs="0" maxOccurs="1" />
<xsd:group ref="FieldValidationGroup" />
</xsd:sequence>
<xsd:attribute id="field-type-id" name="id" type="id-type" use="required" />
<xsd:attribute id="field-type-css-class" name="css-class" use="optional" type="css-class-type" />
</xsd:complexType>
我现在想直接在所有元素中创建一个唯一的键FieldGroup
- 无论它们实际上是哪个元素,并且能够从FieldValidationGroup
.
或者:我如何定义 keyfield-type
以便它派生到扩展字段类型的所有其他元素?
如您所见,我目前在那里有一个 ID,但该 ID 在字段组以外的所有其他元素中也是唯一的,这可能导致错误的引用。
我怎样才能做到这一点?