2

私は私の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>

これらの要素タイプ (textfield-type、numberfield-type、button-type) はすべて共通のタイプを拡張します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>

私は今、すべての要素間で一意の Key を直接作成したいと考えていますFieldGroup- それらが実際にどの要素であるかに関係なく、FieldValidationGroup.

field-typeまたは:フィールドタイプを拡張する他のすべての要素に派生するように、キーを定義するにはどうすればよいですか?

ご覧のとおり、私は現在そこに ID を持っていますが、ID はフィールド グループにない他のすべての要素間でも一意であり、間違った参照につながる可能性があります。

どうすればこれを達成できますか?

4

1 に答える 1

3

xsd:group およびタイプ階層による再利用に依存する一般的なアプローチに基づいて、キー定義も「再利用」できるようにしたいと考えています。もしそうなら、短い答えはそれができないということです。keykeyref、およびunique aka identity constraint definition schema componentsは、要素宣言内でのみネストできます。xsd:group に関連するキーを定義して、「それらが実際にどの要素であっても」機能するようにすることも、「他のすべての要素に派生する」型で「キーを定義する」こともできません。

于 2011-09-05T04:13:29.333 に答える