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


■範囲
XMLマスター教科書2章p70~p99


■学んだこと

・DTDはスキーマ定義言語の一種
・スキーマの利点は、企業間でXML文章の変換手間が省ける。
・DTD記述方法は、

 1)XML文章内
 2)別ファイルに作成   の2種類
・DTDの構造(#PCDATA)

・内容モデルの記号(, | * ? + () )
・入れ子構造、混合内容の表記の仕方
・属性リストのデータ型


■理解しずらい・できなかったこと

・『?』『|』『CDATA型』など、
個々の意味や書き方は分りました。
ですが、全体を未だ把握しきれていないので、
点と点が繋がっていなく、色々と宙に浮いている
感じです。(分かりにくくてすみません。)

完全理解を目指して頑張ります。


・XHTMLの概要
 私が読んだ書籍では、
 →webが文章以外にレイアウトにも重点を置くようになったので、XMLを用いた。
 →HTMLでは、裏技的な方法で記述することがあった。正規でないので、統一する為。
…以上の様な事が書かれていました。



■第1章確認テスト(不正解箇所の再提出)

採点お願いします。
No3 ⇒『HTML』はタグを作成できないので、誤りだと思いました。
    『SGML』はXMLの基となった言語なので、XML形式とは言えないと思いました。
 
  『XSL-FO』はXML文章の表示スタイル。文字の書体、段落設定を指定、と説明で
   ありましたので、XML文章を指定していると考え、
   答えは≪D≫だと思います。
  
No5 ⇒『XPath』だと思いますが、選択がありませんでした。

No7 ⇒C,E



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

【先輩からのコメント】


グッド!『?』『|』『CDATA型』など、については
最初から完全に理解するのは難しいと思いますので、
始めは意味はともかく、書き方、記号があることを忘れずにすればいいと思いますよ!

パーXHTMLの概要については、
レイアウト上の理由もあるのでしょうが、主な理由は、HTMLをXMLとして処理したいからだと思います。
XML文書として処理できる利点は、XML向けに作成されているツールなどがそのまま利用できることです。
HTMLを処理する場合は、独自の処理を作成する必要があるため、効率、バグなどの面で不利になります。



合格第1章の回答内容確認しました。


No5,7については残念ですが間違っています。
各問題に対していかにコメントします。



No5
問題では、A~Dの中から適切なものを選ぶような内容となっています。
けいさんの「XPath」だと思う気持ちはわかりますが、A~Dの中に
必ず答えがあるので、その中から選んでください。



No7
かなり惜しいですね。。。
消去法で残ったものが答えなので、それらすべてが答えじゃないかな?←ヒント

参考書だけでなく、WEBページなども活用しながらXMLと
その周辺情報なども一緒に巻き込んで把握していくことによって、
よりXMLの理解がしやすくなったり、XML以外の知識もつけることができるので、
疑問に思ったら色々な手段を使って調べてみてください^^

パービックリマーク第二章のテスト問題です。


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

テキストの第二章を勉強後に解いてみましょう!

(問題の回答は、別の記事に内定者の提出回答と共に掲載します。)




第1章確認テスト


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

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


【回答選択の理由】

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

【問題: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>


【回答選択の理由】


--------------------------------------------------------------------------------
【問題: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>
  


【回答選択の理由】


--------------------------------------------------------------------------------
【問題: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>


【回答選択の理由】

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

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


【回答選択の理由】


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

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


【回答選択の理由】


--------------------------------------------------------------------------------
【問題: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>


【回答選択の理由】


--------------------------------------------------------------------------------
【問題: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;>


【回答選択の理由】


--------------------------------------------------------------------------------
【問題: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>


【回答選択の理由】


--------------------------------------------------------------------------------
【問題: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要素を交互に記述する場合がある


【回答選択の理由】









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


確認テストお疲れ様でした!

それでは、早速ですが「第一章確認テスト 」のけいさんの回答です。


1 ⇒D

2 ⇒C

3 ⇒C,D

4 ⇒D

5 ⇒A

6 ⇒D

7 ⇒B,C,E

8 ⇒A

9 ⇒B,C

10⇒A,C

11⇒A

12⇒B,C,D


◆理解しずらい・できなかったこと
確認テストでは、略文字を忘れていたので、
意外と苦戦しました。

一章の空要素について質問です。
どのような場合に空要素の記述を用いるのでしょうか。
内容が存在しないのならば、最初から要素名を省けば
PCの容量を取らずにすむと考えました。





解答内容について採点した結果・・・



No3、5、7
の3問について間違えていました。

各問題について簡単にコメントします。
---------------------------------------------------


No3:「C」のXPath式は、主にURI表記中やXSLTでの属性地の記述部分で
    用いられるため、XPath自体はXML形式ではありません。

No5:「A」のXSL-FOは、XSLTによってXML文章を別の構造のXML文書や
    他の形式に変換したあとのフォーマットに関する規格であり、
   表示レイアウトを表現するものです。
   (例えば、帳票や伝票などを作成する場合に利用します。)

No7:「B」の5月は、要素名の1文字目が数字であるため、要素名として正しくありません。
  要素名として使用できる一文字目は
   ・アンダースコア
   ・コロン
   ・英字(1バイト)
   ・日本語文字(全角ひらがな、全角カタカナ)
   ・漢字
  となっています。

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


また、

空要素についての質問ですが、
空要素には要素内容はありませんが、属性は持つことができます。
ですので、単純なデータしか持たないものについては空要素で表せます。
XHTMLでいえば、img要素やlink要素などの外部リソースへの参照のみを
表現する要素に このような使い方が見て取れます。
また、空要素があることそのものに意味を持たせる場合もあります。
XHTMLでいえば、br要素は「改行」そのものを表します。

XMLの場合、
以下のようなデータをXMLで表現したアプリケーションを作成する場合、
(A)の場合は所属している部署がないと読み取れますが、
(B)の場合は所属部署の要素自体存在しないため、
(A)と(B)でデータとしての意味が異なってきます。

・社員番号 :001
・社員名 :namae
・所属部署 :なし(入社したて?)
↓ (XMLで表現)

●空要素を用いる場合 (A)
<shain>
<no>001</no>
<name>namae</name>
<post />
</shain>

●要素を省略する場合 (B)
<shain>
<no>001</no>
<name>namae</name>
</shain>

※上記についてはスキーマを学習すればより理解できるかと思います。

まだまだ勉強し始めたばかりで、理解しにくい箇所が多々あるかと思います。


その時は、その箇所についてどしどし質問くださいね!