サイバーテックXMLDB勉強レポートのブログ


■範囲
XMLマスター教科書2章p70~p126
■学んだこと
DTDを構成する各宣言の詳細
■理解しずらい・できなかったこと
完全には理解しきれていないが、先週感じていたよりも単純だった為、
現状では特にありません。 
--------------------------------------------------------------------------------

■第二章テスト問題の回答


【問題:1】
DTDにおいて属性の型として誤っているものを選択してください。


【回答選択肢】
1. CDATA
2. INTEGER
3. NMTOKEN
4. ID


【回答選択の理由】
回答 ⇒2

INTEGER型は無い為。

--------------------------------------------------------------------------------
【問題:2】
DTDにおいてdata要素にattr1属性とattr2属性を宣言する記述として
正しいものを選択してください。
ただし、要素dataは宣言済みとします。


【回答選択肢】
1. <!ATTLIST data attr1 CDATA #IMPLIED
attr2 NMTOKEN #IMPLIED>
2. <!ATTLIST data attr1 CDATA #IMPLIED
data attr2 NMTOKEN #IMPLIED>
3. <!ATTRIBUTE data attr1 CDATA #IMPLIED
<!ATTRIBUTE data attr2 NMTOKEN #IMPLIED>
4. <!ATTRIBUTE data attr1 CDATA #IMPLIED
data attr2 NMTOKEN #IMPLIED>


【回答選択の理由】
回答 ⇒ 1
3,4はATTRIBUTEと間違った記述であり、2は2行目の要素名が不必要な為

--------------------------------------------------------------------------------
【問題:3】
次のXML文書のうち妥当なXML文書を選択してください。


【回答選択肢】
1. <!DOCTYPE x[
<!ELEMENT x (a+)>
<!ELEMENT a (#PCDATA)>
]>
<x></x>
2. <!DOCTYPE x[
<!ELEMENT x (a*)>
<!ELEMENT a (#PCDATA)>
]>
<x><a></a></x>
3. <!DOCTYPE x[
<!ELEMENT x (a@)>
<!ELEMENT a (#PCDATA)>
]>
<x></x>
4. <!DOCTYPE x[
<!ELEMENT x (a?)>
<!ELEMENT a (#PCDATA)>
]>
<x><a/><a/></x>


【回答選択の理由】
回答 ⇒ 2,4
1はa要素が1回以上登場しなければならない為×
3は要素内容の修飾記号として@が無い為×

--------------------------------------------------------------------------------
【問題:4】
要素aに文字列を属性値とする属性valueの宣言の正しい記述を選択してください。


【回答選択肢】
1. <!ATTLIST a value PCDATA #IMPLIED>
2. <!ATTLIST a value CDATA #IMPLIED>
3. <!ATTRIBUTE a value CDATA #IMPLIED>
4. <!ATTRIBUTE a value PCDATA #IMPLIED>


【回答選択の理由】
回答 ⇒ 2
3,4はATTRIBUTEと間違った記述であり、1のPCDATAは属性のデータ型として存在しない

--------------------------------------------------------------------------------
【問題:5】
次の記述のうち子要素としてテキストデータのみを持つ要素aを宣言する
DTDの記述を選択してください。


【回答選択肢】
1. <!ELEMENT a (CDATA)>
2. <!ELEMENT a (#STRING)>
3. <!ELEMENT a (#PCDATA)>
4. <!ELEMENT a (STRING)>


【回答選択の理由】
回答 ⇒ 3
要素の宣言には#PCDATAか、子要素を指定するもの、空要素とするもの以外は無い為

--------------------------------------------------------------------------------
【問題:6】
DTDで要素dataを空要素として宣言するときの正しい記述を選択してください。


【回答選択肢】
1. <!ELEMENT data EMPTY>
2. <!ELEMENT data >
3. <!ELEMENT data EMPY_ELEMENT>
4. <!ELEMENT data (EMPTY)>


【回答選択の理由】
回答 ⇒ 1 
3のパターンは無く、2はパターンが定義されていない。
4はカッコが余分である。

--------------------------------------------------------------------------------
【問題:7】
DTDで属性を宣言する記述として誤ったものを選択してください。
ただし、要素dataは宣言済みとします。


【回答選択肢】
1. <!ATTLIST data attr1 CDATA "value1">
2. <!ATTLIST data data CDATA #IMPLIED>
3. <!ATTLIST data attr1 CDATA #IMPLIED
attr2 NMTOKEN #IMPLIED>
4. <!ATTLIST data attr1 INTEGER>


【回答選択の理由】
回答 ⇒ 4
DTDの属性には存在しないデータ型であるため

--------------------------------------------------------------------------------
【問題:8】
パラメータ実体の宣言として正しいものを選択してください。


【回答選択肢】
1. <!ENTITY & time "(時,分)">
<!ELEMENT 時 (#PCDATA)>
<!ELEMENT 分 (#PCDATA)>
<!ELEMENT 開始時刻 &time;>
<!ELEMENT 終了時刻 &time;>

2. <!ENTITY % time "(時,分)">
<!ELEMENT 時 (#PCDATA)>
<!ELEMENT 分 (#PCDATA)>
<!ELEMENT 開始時刻 %time;>
<!ELEMENT 終了時刻 %time;>

3. <!PARAM % time "(時,分)">
<!ELEMENT 時 (#PCDATA)>
<!ELEMENT 分 (#PCDATA)>
<!ELEMENT 開始時刻 %time;>
<!ELEMENT 終了時刻 %time;>

4. <!PARAM & time "(時,分)">
<!ELEMENT 時 (#PCDATA)>
<!ELEMENT 分 (#PCDATA)>
<!ELEMENT 開始時刻 &time;>
<!ELEMENT 終了時刻 &time;>


【回答選択の理由】
回答 ⇒ 2
3,4のPARAMという宣言は無く、1のような&でなく%で記述されるため。

--------------------------------------------------------------------------------
【問題:9】
次のDTDに妥当でないXML文書を選択してください。

「DTD」
<!DOCTYPE xyz[
<!ELEMENT xyz (#PCDATA)>
<!ATTLIST xyz att1 CDATA #FIXED "ID555913"
att2 NMTOKEN #REQUIRED >
]>


【回答選択肢】
1. <xyz att1="ID555913" att2="ID260001"></xyz>
2. <xyz att2="ID260001"></xyz>
3. <xyz att2="260001"></xyz>
4. <xyz att1="ID700019" att2="ID260001"></xyz>


【回答選択の理由】
回答 ⇒ 4
att1属性の値はID555913で固定されなくてはならない為。
またatt2は全ての選択肢に書かれているので、4が妥当でない。

--------------------------------------------------------------------------------
【問題:10】
次のDTDを説明する記述のうち誤っているものを選択してください。

<!DOCTYPE x[
<!ELEMENT x (a | b | c)*>
<!ELEMENT a (d+)>
<!ELEMENT c (#PCDATA)>
<!ELEMENT b (#PCDATA)>
<!ELEMENT d (#PCDATA)>
]>


【回答選択肢】
1. x要素の子要素としてb要素とc要素だけを1つずつ記述する場合がある
2. b要素はx要素の子要素として記述しない場合がある
3. a要素を記述するときはd要素は必ず複数記述しなければならない
4. x要素の子要素としてa要素とc要素を交互に記述する場合がある


【回答選択の理由】
回答 ⇒ 3
1個以上の要素が記述されればよいので必ずしも複数でなくてよい。

--------------------------------------------------------------------------------

パー採点は、次回の更新で行います!