0

以下に示すように、要素「メソッド」と「名前」があります。制限を変更したいので、「メソッド」の値に基づいて「名前」の参照を「group1」から「group2」に変更します。

それは可能ですか?

<xs:element name="Method" type="xs:string" />

<xs:element name="Name">
    <xs:complexType>
        <xs:sequence>
            <xs:choice maxOccurs="unbounded">
                <xs:element ref="group1" />
            </xs:choice>
        </xs:sequence>
    </xs:complexType>
</xs:element>


<xs:element name="group1">
    <xs:simpleType>
        <xs:restriction base="xs:string">
            <xs:enumeration value="ABC" />
            <xs:enumeration value="PQR" />
        </xs:restriction>
    </xs:simpleType>
</xs:element>

<xs:element name="group2">
    <xs:simpleType>
        <xs:restriction base="xs:string">
            <xs:enumeration value="XYZ" />
            <xs:enumeration value="ABC" />
        </xs:restriction>
    </xs:simpleType>
</xs:element>
4

1 に答える 1

1

XSD 1.0の場合、XML スキーマの外部でそのような制約を検証する必要があります。追加の検証または Schematron に XSLT を使用することを検討してください。

XSD 1.1 では、条件付きの型割り当てを使用できます。を参照してくださいxs:alternative。ただし、多少再構築する必要があることに注意してください。xs:alternativeテストは、ドキュメント内の任意の要素ではなく、要素自体の属性と定数を参照できます。他の要素や属性を相対的に参照することさえ許可されていません。

于 2013-10-08T11:18:27.670 に答える