7

XSDを定義するときは、タイプをネストされたタイプまたはグローバルタイプ(complexType)として定義することを選択できます。

射や要素の再利用に関しては、グローバルタイプの方がはるかに役立つことを理解しています。

ただし、ビッグデータモデルがある場合は、レベルごとにグローバルcomplexTypeを定義してから、グローバルタイプを参照する要素を作成する必要があります。

ネスト

<xs:element name="person">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="name">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="firstname"/>
                            <xs:element name="lastname"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="address">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="street"/>
                            <xs:element name="city"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>

グローバル

<xs:element name="person">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="name" type="nameType"/>
            <xs:element name="address" type="addressType"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>
<xs:complexType name="nameType">
    <xs:sequence>
        <xs:element name="firstname"/>
        <xs:element name="lastname"/>
    </xs:sequence>
</xs:complexType>
<xs:complexType name="addressType">
    <xs:sequence>
        <xs:element name="street"/>
        <xs:element name="city"/>
    </xs:sequence>
</xs:complexType>

したがって、私の質問:ネストされた型をグローバルにする代わりに使用するのはいつですか?

興味のある人のために:私の質問はどういうわけかこの質問に関連しています(XML属性と要素)。

4

1 に答える 1

8

与えられた例では、2 つの間に実際の違いはなく、どちらにも大きな利点も欠点もありません。

ただし、大規模なスキーマでは、グローバルではなくネストされたものを選択する方法が明確に定義されていないと、物事が非常に乱雑になり、管理が難しくなる可能性があります。

グローバル型 (主に再利用、ネスト) を使用する明白な理由は、決定する傾向があります。一般的に、私はどちらかのモードを好みます。つまり、いくつかの complexType を再利用し、他を再利用しない場合は、それらをすべてグローバルにします。何も再利用しない場合は、それらをすべて入れ子にします。

これに対する例外 (これは私が頻繁に遭遇するものです) は、型の定義がスキーマの複雑さ (!) の大部分を構成し、それらの包含が比較的単純な場合です。この場合、それらが再利用されるかどうかに関係なく、大規模な complexType 定義をくまなく調べる必要がない場合、ドキュメントの再構築/再順序付けがはるかに簡単になるため、それらをグローバルにすることをお勧めします。また、理論的にはより移植性があります。

入れ子になったタイプで特定のドキュメント構造を実現できない場合もあります。この例として、各タイプの 0 から無制限のインスタンスを任意の順序で含むことができるシーケンスで 2 つの complexTypes を使用する場合があります。これはネストされた型では不可能ですが、参照されたグローバル型では可能です。

于 2008-09-02T15:07:49.040 に答える