0

次のタイプがあるとします。

<xsd:complexType name="Options">
    <xsd:sequence>
        <xsd:element name="option" maxOccurs="unbounded">
            <xsd:complexType>
                <xsd:all>
                    <xsd:element name="id" type="xsd:integer" />
                    <xsd:element name="label" type="xsd:string" />
                    <xsd:element name="value" type="xsd:string" minOccurs="0" />
                    <xsd:element name="dependency" type="xsd:integer" minOccurs="0" />
                </xsd:all>
            </xsd:complexType>
        </xsd:element>
    </xsd:sequence>
</xsd:complexType>

あるの が 異なる のとして存在しなければならないことdependencyをどのように表現できますか?optionidoption

私は と を使用することになっていると思いますxsd:keyxsd:keyref、それらの使用方法を理解するのに苦労しています。

4

2 に答える 2

0

XSD 1.0 はこれをサポートしていません。XSD 1.1 は、これを可能にする条件付きの型とアサーションをサポートしています。xsd 1.0 では、Schematronを使用してこれを実現できます。

于 2012-10-18T16:25:20.877 に答える
0

制約は、要素のコンテキストでのみ表現できます。

<?xml version="1.0" encoding="utf-8" ?>
<!--XML Schema generated by QTAssistant/XML Schema Refactoring (XSR) Module (http://www.paschidev.com)-->
<xsd:schema elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:complexType name="Options">
        <xsd:sequence>
            <xsd:element name="option" maxOccurs="unbounded">
                <xsd:complexType>
                    <xsd:all>
                        <xsd:element name="id" type="xsd:integer"/>
                        <xsd:element name="label" type="xsd:string"/>
                        <xsd:element name="value" type="xsd:string" minOccurs="0"/>
                        <xsd:element name="dependency" type="xsd:integer" minOccurs="0"/>
                    </xsd:all>
                </xsd:complexType>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:element name="Options" type="Options">
        <xsd:key name="PK">
            <xsd:selector xpath="option"/>
            <xsd:field xpath="id"/>
        </xsd:key>
        <xsd:keyref name="FK" refer="PK">
            <xsd:selector xpath="option"/>
            <xsd:field xpath="dependency"/>
        </xsd:keyref>
    </xsd:element>
</xsd:schema>

ここに画像の説明を入力

この型を複数のインスタンスで参照したい場合は、指定した制約とともに、常にグローバル要素を定義してから、特定のコンテキストでその要素を参照する必要があります。

質問で「異なる」という言葉を使用していることを理解することが非常に重要です。あなたが本当にそれを意味するなら、上記はあなたにそれを与えません.

于 2012-10-18T16:28:30.203 に答える