web-dev-qa-db-ja.com

XSD:要素と属性の違い

私はXSDを初めて使用しますが、属性を使用するタイミングと要素を使用するタイミングについてかなり混乱していますか?

属性にminOccursとmaxOccursを指定できないのはなぜですか?

また、要素でuse = "required"を指定できないのはなぜですか?

14
sivabudh

要素はXML要素(開始タグ、一部のコンテンツ、終了タグ)であり、これらはXMLドキュメントの構成要素です。

<test>someValue</test>

ここでは、「テスト」が要素になります。

属性はタグの追加情報です。これは「アドオン」または要素の追加情報ですが、単独で存在することはできません。

<test id="5">somevalue</test>

「id」は属性です。

1つのタグに同じ名前の複数の属性を含めることはできません-> minOccurs/maxOccursは意味がありません。属性に必須(または必須ではない)を定義できます-それ以外は意味がありません。

要素は、複合型内での出現によって定義されます-例:内部に<xs:sequence>を持つ複合型がある場合、すべての要素が存在する必要があり、次の特定の順序である必要があることを定義しています。

<xs:complexType name="SomeType">
   <xs:sequence>       
      <xs:element name="Element1" type="xs:string" />
      <xs:element name="Element2" type="xs:string" />
   </xs:sequence>
</xs:complexType>

そのタイプの要素内では、サブ要素「Element1」と「Element2」が必須であり、この順序で表示される必要があります。「必須」である必要はありません(属性の場合と同様)。要素が必要かどうかは、minOccursとmaxOccursを使用して定義されます。デフォルトでは両方とも= 1です。例:要素は発生する必要があり、発生できるのは1回だけです。これらの設定を微調整することで、要素をオプションとして定義したり(minOccurs = 0)、複数回表示できるようにしたり(maxOccurs> 1)することができます。

XMLスキーマに関するW3Schoolsチュートリアル をチェックして、XMLスキーマについてさらに学ぶことを強くお勧めします。

マーク

29
marc_s

例:XSD形式

<xs:complexType name="contactInformation">
    <xs:all>
        <xs:element name="firstName" type="xs:string" minOccurs="0"/>
        <xs:element name="workCountryId" type="xs:long" minOccurs="0"/>
    </xs:all>
    <xs:attribute name="id" type="xs:long"/>
</xs:complexType>

XML形式

<contactInformation id=100>
    <firstname>VELU</firstname>
    <workCountryId>120</workCountryId>
</contactInformation>


attributeはデフォルトでオプションです。属性が必須であることを指定するには、use属性を使用します。

例えば<xs:attribute name="id" type="xs:long" use="required"/>

属性 および 要素 の詳細。

complexType要素は、他の要素や属性を含むXML要素です。

all要素は、子要素が任意の順序で表示され、各子要素が0回または1回出現する可能性があることを指定します。

maxOccursオプション。要素が発生できる最大回数を指定します。値は1でなければなりません。

minOccursオプション。要素が発生する可能性のある最小回数を指定します。値は0または1です。デフォルト値は1です。

5
<element myAttribute="value">
   <subElement />
   <subElement anotherAttribute="this is an attribute's value">Element value</subElement>
</element>

XMLに同じ名前の属性を複数持つことはできないため、属性にminOccursとmaxOccursを使用することはできません。

代わりにminOccurs = "1"を使用できるため、要素にuse = "required"は必要ありません。

属性をいつ使用するか、いつ要素を使用するかはあなたの選択です。いくつかのガイドラインは次のとおりです。 http://www.ibm.com/developerworks/xml/library/x-eleatt.html

3
cbp

要素はXMLノードであり、他のノードまたは属性を含めることができます。単純型でも複合型でもかまいません。これはXMLエンティティです。

属性は記述子です。何も含めることはできず、単純なタイプのみにすることができます。

this を見てください。もちろん、「XML要素と属性」のようなものをグーグルで検索することもできます。

3
Kirk Broadhurst