<xdr:ElementType> 要素

XDR (XML-Data Reduced) スキーマの Schema 要素内で使用する要素型を定義します。

<ElementType
  content="{empty | textOnly | eltOnly | mixed}"
  dt:type="datatype"
  model="{open | closed}"
  name="idref"
  order="{one | seq | many}">

属性

  • content
    コンテンツを空にする必要があるか、コンテンツにテキストまたは要素、あるいはその両方を含めることができるかを示すインジケーター。 次の値は、この属性に割り当てることができます。 content 属性の既定値は mixed です。 content 属性が mixed に設定されている場合は、order 属性の値を many にする必要があります。

    empty

    要素にコンテンツを含めることはできません。

    textOnly

    要素にテキストのみを含めることができ、要素を含めることはできません。 model 属性が open に設定されている場合は、要素にテキストだけでなく、名前のない他の要素が含まれている可能性があります。

    eltOnly

    指定された要素のみを要素に含めることができます。 フリー テキストを含めることはできません。

    mixed

    名前付き要素とテキストの両方を要素に含めることができます。 既定値は mixed です。 content 属性の値が mixed であれば、子要素の数が指定された範囲を超えても、minOccurs 属性および maxOccurs 属性が検証エラーを引き起こすことはありません。

ms256223.note(ja-jp,VS.100).gif注 :
content="empty" と model="open" を持つ要素は許可されません。

説明

さまざまな値を持つ content 属性の使用例を次に示します。

古いコードの例

上の例と同等のドキュメント型定義 (DTD) の content 属性の例を次に示します。

  • dt:type
    要素のデータ型。 有効なデータ型は XDR スキーマ データ型リファレンスで定義されています。
  • model
    コンテンツ モデルで定義されているものしかコンテンツに含めることができないかどうかを示すインジケーター。 既定値は open です。

    <ElementType name="x" model="open"/>
    

    モデルが open と定義されている場合は、コンテンツ モデルで明示的に宣言されていない追加の要素または属性を要素に含めることができます。 これらの追加のタグは、同じ名前空間からも別の名前空間からも取得できます。 これらの追加タグが同じ名前空間にある場合は、スキーマ内にそれらに対応する ElementType または AttributeType の定義がなければなりません。

    モデルが closed と定義されている場合は、コンテンツ モデルで指定されていない要素または混合コンテンツを要素に含めることはできません。 DTD では closed モデルを使用します。

  • name
    要素の名前。 この属性は必須です。 この要素型が他の要素型の有効な子として宣言されている場合、この名前は element 要素内で指定されます。

    <ElementType name="x">
    </ElementType>
    

    上の例と同等の DTD を次に示します。

    <!ELEMENT x EMPTY>
    
  • order
    要素を表示する方法を示すインジケーター。 このインジケーターには、次の値を指定できます。

    one

    1 つの要素のセットのみが許可されます。 one 属性が指定されているドキュメントを正しく検証するには、ElementTypemodel 属性が closed に指定されている必要があります。

    seq

    要素を指定された順に表示する必要があります。

    many

    要素を任意の順に表示できます。 order 属性が many に指定されている場合、maxOccurs 値は検証中に意味を持ちません。

    seq 値を指定する場合は、有効なシーケンスを指定する必要があります。 たとえば、x1,y1x2,y2 など、特定のシーケンスが有効であり、その他すべての組み合わせが無効である場合は、この値を使ってその条件を指定できます。 seq 値は、DTD のかっこと同じ役割を果たします。 既定値は seq です。

    one の設定例を次に示します。 order 属性が one に指定されている場合は、model 属性の値を closed にする必要があります。

    seq の設定例を次に示します。

    many の設定例を次に示します。

    order 属性が many に設定されている場合、minOccurs 属性と maxOccurs 属性は検証中に意味を持ちません。 order 属性を many に設定して、minOccurs および maxOccurs と組み合わせて使用する代わりに、seq の設定を使用してください。 たとえば、次のスキーマでは order="seq" を設定します。

上のスキーマに基づいて次の XML ドキュメントを検証すると、Publisher 要素の数が、指定されている maxOccurs1 を超えているため、検証が失敗します。 しかし、order の値が many に設定されていると、maxOccurs="1" の設定が無視されるため、本来失敗するはずの検証が成功してしまいます。

要素情報

出現回数

無制限

親要素

スキーマ

子要素

attributeAttributeTypedatatypedescriptionelementgroup

要素のプロパティ

TAG 説明

Name="idref"

ElementType 要素と AttributeType 要素には名前を付ける必要があります。

Model="open"

コンテンツ モデルで指定されていない要素または混合コンテンツは、この要素で許可されます。 特定の定義を下位に分類するには、(将来継承が実装されるときに) この設定を open にする必要があります。

Model="closed"

コンテンツ モデルで指定されていない要素または混合コンテンツは、この要素で許可されません。

content="empty"

要素に何も含めることができません。

content="textOnly"

要素にテキストのみを含めることができ、要素を含めることはできません。 model="open" である場合、その要素にテキストおよび他の名前のない要素が含まれている可能性があります。

*

content="mixed"

名前付き要素とテキストの両方を要素に含めることができます。 model="open" である場合、その要素にテキストおよび他の名前のない要素が含まれている可能性があります。 order='many' かつ maxOccurs="*" が暗黙的に定義されています。

order='one'

1 つの要素のセットのみが許可されます。

*

order='seq'

一覧表示されたシーケンス中に要素が表示されている必要があることを示します。 これは、要素のリストの既定値と同様です。ただし、x1,y1 または x2,y2 が有効であり、その他すべての組み合わせが無効である例で示したように、シーケンスをグループ分けするには、この指定が必要です。 DTD におけるかっこと同じ役割として機能します。

order='many'

要素は、順不同で表示されます (または表示されません)。

dt:type=datatype

要素に整数を含める必要があることを示します。 プリミティブ データ型のリストについては、「XDR スキーマ データ型リファレンス」を参照してください。

解説

"要素型" は、名前を共有するすべての要素がインスタンスである要素型を指す用語です。 要素型はスキーマで定義され、要素はドキュメント内に出現します。 要素型は ElementType 要素型を使って宣言されます。

参照

リファレンス

XDR スキーマ データ型リファレンス