第二章テスト問題 回答編

テーマ:

サイバーテックXMLDB勉強レポートのブログ
■範囲
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が両方出現すことは
    ない。

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

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


サイバーテック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個以上の要素が記述されればよいので必ずしも複数でなくてよい。

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

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

勉強レポート二回目

テーマ:


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


■範囲
XMLマスター教科書1・2章p14~p92


■学んだこと
DTDの宣言や構造について
先週までの復習


■理解しずらい・できなかったこと
1章確認テストの問1に関してですが、
---
Aは命名規則に従っているのであれば自由に要素名を定義できるので○
Bは空要素の場合は終了タグを省略出来るので×
CはHTMLは大文字小文字混在可、XMLは区別されるため○
DはISO-HTMLとして規格化されているが、W3Cから勧告されたものが基盤にあるので×
---
以上から、BとDが誤りと考えたのですが、
調べても答えにたどり着くことができなかったので、お教え願えますでしょうか。


■第1章確認テスト(不正解箇所の再提出)
採点お願いします。

No.1 ⇒ B,D

No.3 ⇒ D

No.5 ⇒ C

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


【先輩からのコメント】


合格早速ですが採点しました。
結果、No1以外正解です!



わいさんからの質問についてですが、
選択肢Bの終了タグは省略はできません。
わいさんが考えている「省略」の意味が
少し違うかと思われます。
たしかに、一つのタグの中で
完結することは可能ですが、これは終了タグを
省略したのではなく、一つのタグにまとめただけです。


<id></id> ⇒ <id />


よって、わいさんの回答である選択肢Bは
間違いとなります。

ちょっとずるがしこい?問題内容かと思われますが、
実際の試験ではこのような問題も出題されますので、
今後は注意が必要ですね!