■範囲 XMLマスター3章 128~138
■学んだこと ・ルートノード
・ロケーションパス、軸
・ノードテスト
■理解しずらい・できなかったこと3章のXPathでは、今のところ大丈夫です。--------------------------------------------------------------------------------
■第二章テスト問題の回答
【問題:1】
DTDにおいて属性の型として誤っているものを選択してください。
【回答選択肢】
1. CDATA
2. INTEGER
3. NMTOKEN
4. ID
【回答選択の理由】
回答 ⇒2が誤り
CDATA、NMTOKEN、IDは属性のデータ型であり、DTDで指定可能。
INTEGERはデータ型で整数を表す型だが、XMLのDTDで指定出来ないと
考え、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
一つの要素に複数の属性を設定する方法は2通りあり、A)別々の属性リスト宣言を
行う方法と、B)1つの属性リスト宣言に複数の属性を宣言する方法がある。
Aの場合、ATTLIST、要素名、属性名、データ型、デフォルト値を全て記述するので、
選択問題の(3)が正解とした。
Bの場合、ATTLISTと要素名以外を<>内に記述するので、(1)が正解と考えいた。
-------------------------------------------------------------------------------
【問題: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→「+」は、1回以上出現させる指定を表しているが、a要素がないので誤り。
2→「*」は、0以上出現させる指定なので、a要素が1回出現しているので、正解。
3→「@」は、指定可能な記号でないので誤り。
4→「?」は、0または1回出現させる指定を表しているので、正解。
--------------------------------------------------------------------------------
【問題: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
属性リスト宣言は「ATTLIST」で表し、文字データを表すデータ型は「CDATA」
なので、正解は(2)とした。
PCDATAは要素の内容として文字をデータしか持たせない時に定義するので、1、4は
誤りとした。
-------------------------------------------------------------------------------
【問題:5】
次の記述のうち子要素としてテキストデータのみを持つ要素aを宣言する
DTDの記述を選択してください。
【回答選択肢】
1. <!ELEMENT a (CDATA)>
2. <!ELEMENT a (#STRING)>
3. <!ELEMENT a (#PCDATA)>
4. <!ELEMENT a (STRING)>
【回答選択の理由】
回答 ⇒3
PCDATAは要素の内容として文字をデータしか持たせない時に定義するので、(3)を
選択。
-------------------------------------------------------------------------------
【問題:6】
DTDで要素dataを空要素として宣言するときの正しい記述を選択してください。
【回答選択肢】
1. <!ELEMENT data EMPTY>
2. <!ELEMENT data >
3. <!ELEMENT data EMPY_ELEMENT>
4. <!ELEMENT data (EMPTY)>
【回答選択の理由】
回答 ⇒1
要素内容を空要素として定義する方法は、
<!ELEMENT 要素名 EMPTY> より、(1)を選んだ。
-------------------------------------------------------------------------------
【問題: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>
【回答選択の理由】
回答 ⇒1、2、3
1→デフォルト値がダブルコォーテーションで囲まれているので正解。
2→#IMPLIEDはデフォルト値に指定されているので正解。
3→一つの要素に複数の属性を設定する方法に従っており、デフォルト値も指定のもの
なので正解。
4→組み込みデータ型。デフォルト値に指定されていないので、誤り。
-------------------------------------------------------------------------------
【問題: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
パラメータ実体の宣言方法は
<!ENTITY % 実体名 "文字列">より、(2)。
-------------------------------------------------------------------------------
【問題: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>
【回答選択の理由】
回答 ⇒2、3、4
2→#FIXEDは固定であり、値がないとエラーを起こす。att1の要素、値がないので誤り。
3→上記と同様。
4→#FIXEDは固定した値を指定しているので、ID555913以外だとエラーを
起こす。よって誤り。
-------------------------------------------------------------------------------
【問題: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要素を交互に記述する場合がある
【回答選択の理由】
回答 ⇒1、2、3、4
1→「|」は複数の要素のうちいずれか1つだけを出現させるので、誤り。
2→上記と同様。aもしくはcが記述された場合、bは出現しない。
3→「+」は一回以上何度でも出現させる場合なので、必ず複数記述というわけではない。
4→「|」は複数の要素のうちいずれか1つだけを出現させるので、aとcが両方出現すことは
ない。
-------------------------------------------------------------------------------
採点は、次回の更新で行います!
