Schemaの定義(2)-属性,データ型の宣言を学習する動画の再生障害のお知らせ:動画の一部が再生できない事象が発生しています。Schemaの基本構文を学習します。/>xs:attribute要素(例1の17行目,18行目)を使用して,属性を定義します。xs:attribute要素のname属性に属性名を指定し,type属性にデータ型を指定します。指定できるデータ型は必ず単純型(組み込み単純型,または独自の単純型)となります。default属性にデフォルト値,fixed属性に固定値を指定できますが,xs:element要素と同様に,default属性とfixed属性を同時に指定することはできません。use属性には,属性を必ず記述する(required),属性の記述を省略できる(optional)など,属性の出現を任意に指定することができます。default属性を記述する場合は,use属性の値はoptional(省略可能)にしなくてはなりません。use属性に指定できる値とDTDとの対応を表1にまとめましたので参照してください。なし確認問題1次の属性宣言のうち,正しいものを選択してください。Schemaの名前空間接頭辞は「xs」とします。(a)(b)(c)(d)正解は(a),(b),(d)です。(c)はuse属性が「required」なのに,default属性を指定しています。use属性が「required」の場合,属性の記述が必須となりますので,デフォルト値を設定しても意味がありません。default属性で属性に対するデフォルト値を設定する場合には,use属性を「optional」にしなければなりません。</xs:complexType>xs:complexType要素(例1の12行目~19行目)は,複合型を定義する場合に使用します。複合型とは,要素の内容として子要素を持つ場合や要素が属性を持つ場合のことです。xs:complexType要素のname属性に型の名前を指定します。xs:complexType要素にはmixed属性があり,第6回の例4で説明した「混合内容」を定義する場合に使用します。mixed属性に"true"を指定することで混合内容を定義できます。デフォルトはfalseです。上記の例にもあるとおり,属性を持つ型を定義する場合には,xs:attribute要素を記述する場所はモデルグループ(後述)を記述した後になります。Schemaで定義すると以下のようになります。このように,xs:complexType要素の子要素としてモデルグループを指定し,その中で要素の定義を行います。モデルグループとは,xs:complexType要素で定義する子要素の定義のことです。モデルグループの種類にはsequence,choice,allの3種類があり,3種類のうちのいずれか1つを記述します。xs:complexType要素の子要素として,直接xs:element要素を記述することはできません。空要素の定義を行う場合には,xs:complexType要素を空要素として記述します(例3)。/>モデルグループとDTDの出現順序の対応を表2にまとめましたので,参照してください。なしsequence,choice,allには,minOccurs属性で出現回数の下限値を,maxOccurs属性で出現回数の上限値を指定することができます。minOccurs属性,maxOccurs属性のデフォルトはともに1となります。2つの属性には0以上の任意の整数を指定し,上限値が無制限となる場合には,maxOccurs属性に「unbounded」を指定します。allの場合のみ,minOccurs属性には,0または1,maxOccurs属性には1しか指定できません(表3)。1なお,sequenceとchoiceはお互いにネストして使用することができます(例4)。</xs:complexType>確認問題2次の型の宣言の中で正しいものを選択してください。Schemaの名前空間接頭辞は「xs」とします。</xs:complexType>正解は(c)です。(a)は,モデルグループallとsequenceがネストしています。モデルグループのネストが許されているのは,sequenceとchoiceの組み合わせだけです。(b)はモデルグループのネストは正しく記述されていますが,属性を記述する位置に誤りがあります。属性を記述する位置は,モデルグループの定義の後,xs:complexType要素の終了タグの前となります。(c)は正しく定義されています。(d)はxs:complexType要素の子要素としてxs:element要素が記述されています。xs:complexType要素の子要素として,直接xs:element要素を記述することはできません。sequence,choice,allのいずれかの子要素として記述します。十数年間システム開発に携わり,そのうちの半分をデータベース管理者として奮闘する。現在は,インフォテリア認定教育センターのサポートや,XML技術者認定制度の「XMLマスター」に対応したコーステキストの開発などを担当している。現場の負担軽減を!医療界でのAWS活用法500万社が導入。情報銀行の成り立ち、事例、現状課題やその行方を網羅。経営戦略である以上、「会計」の知識やスキルが欠かせません。