XMLについての覚書き

<?xml version=”1.0″ encoding=”Shift-JIS”?>
<!DOCTYPE 売上[
<!ELEMENT 売上 (伝票コード,売上日付,得意先名,売上明細)>
<!ELEMENT 伝票コード (#PCDATA)>
<!ELEMENT 売上日付 (#PCDATA)>
<!ELEMENT 得意先名 (#PCDATA)>
<!ELEMENT 売上明細 (売上商品+)>
<!ELEMENT 売上商品 (品名,単価,個数)>
<!ELEMENT 品名 (#PCDATA)>
<!ELEMENT 単価 (#PCDATA)>
<!ELEMENT 個数 (#PCDATA)>
]>
<!– ここまでDTD(Document Type Definition –>
*最初の要素は「売上」である
*「売上」の中に伝票コード、売上日付、得意先名、売上明細が順に登場する
*「売上明細」の中に売上商品が1回以上登場する
*「売上商品」の中の品名、単価、個数が順に登場する
という規則を定義している
<売上>
<伝票コード>1101</伝票コード>
<売上日付>2013-07-15</売上日付>
<得意先名>鈴木商会</得意先名>
<売上明細>
<売上商品>
<品名>のりせんべい</品名>
<単価>300</単価>
<個数>22</個数>
</売上商品>
<売上商品>
<品名>まめせんべい</品名>
<単価>500</単価>
<個数>52</個数>
</売上商品>
</売上明細>
</売上>
<!– ここまでがXML文書本体 –>
⑴整形式文書(well-formed XML document)
XMLの基本的な文法を正しく守っているかどうかがチェックされた文書
「2つのタグが対になっている事」
DTD省略可
①開始タグと終了タグに囲まれている
②元になる要素(ルート要素)が1つだけになっている
③開始タグと終了タグが複数の要素の間で重ならない
⑵妥当な文書(valid XML document)
XMLの基本的な文法の他、DTDのタグ付けの規則に沿っているかどうかがチェックされた文書
「どのような順番や回数で要素が現れるか。DTDの規則を守っている事」
DTD省略不可
①XML文書本体に、「要素」が現れる順番を指定する
②要素に付けれられる補足情報である「属性」がどのような種類の値を持つかを指定できる
③XML文書本体で使う文字列やファイルについての指定をする
④そのままでは扱えないファイルについての指定をする
◆要素の内容
タグの間の部分には、データを表す文字や別の要素が含まれる場合もある
要素の内容に要素だけがくる場合、その要素は
「要素内容(element content)を持つ」という
文字データが入る場合は
「混在内容(mixed content)を持つ」という
各要素や文字データは「節」(ノード)といいます
◆ルート要素
XML文書で一番外側となる最初の要素をルート要素(root element)といいます
XML文書では、ルート要素を頂点とする階層構造になっています
ルート要素は、必ずXML文書に1つだけ存在しなければならない
◆空要素
要素の内容が無い場合、タグを一つにまとめる事が許される
<要素名/>※スラッシュは末尾
これを空要素(empty element)という
◆属性(attribute)
要素に対して補足的な情報を付ける
一つの要素に2つ以上持たせることができる
<品名>まめせんべい</品名>
<単価 値引=”あり” 税=”別”>500</単価>
<画像 ファイル=”image.gif”/>※空要素
<画像 ファイル=”image.gif”></画像>※空要素も普通に書ける
◆スキーマ(schema)
文書の枠組みの事
XMLの場合はこれを表す方式がDTDである
スキーマに対して、実際の売り上げ情報などのデータを「インスタンス」という
XML Schema
◆処理命令(processing instruction)
代表的な処理命令方法として、XML宣言(XML declaration)で行う方法がある
<?xml …..?>
XML宣言には
①XMLのバージョン情報 version
②文字コード encoding UTF-8 UTF-16の場合は省略可
③DTDの処理 “yes” or “no” 省略可
例)
<?xml version=”1.0″ encoding=”Shift_JIS” standalene=”yes”?>
◆特殊記号
&lt; <
&gt; >
&apos; ‘
&quot; “
&amp; &
◆文字コードで文字を表す
&#…; ISO/IEC10646 10進16進どちらでも良い
&#x3042; →あ
◆CDATAセクション(Character Data)
特殊な記号などもそのまま表現できる
逆にXMLとして解析対象になるものを Parsed Character Data という
◆XMLでは大文字と小文字を区別される
◆文書型宣言
文書型宣言にはルート要素名を書く
◆DTDを記述する
内部サブセットと外部サブセット
外部サブセットを使う場合はSYSTEMというキーワードを使う
<!DOCTYPE 売上 SYSTEM “sales.dtd”>←外部サブセットを指定する
<!DOCTYPE html
PUBLIC “-//w3c//DTD XHTML 1.0 Strict//EN”
“DTD/xhtml1-strict.dtd”> ←標準の外部サブセットを使う
「”-//w3c//DTD XHTML 1.0 Strict//EN”」は公開識別子(public identifier)と呼ばれています
◆2種のDTDを併用する
<!DOCTYPE 売上 SYSTEM “sales.dtd”[ ←外部サブセットを指定
<!ATTLIST 単価 値引 (あり|なし) “なし”> ←内部サブセットを追加
]>
◆外部サブセットの扱い方
外部サブセットを適用したくない場合、無視させる事ができる
<?xml version=”1.0″ stndalone=”yes”?>
<!DOCTYPE 売上 “sales.dtd”[ ←この外部サブセットを処理しない
]>
◆要素が現れる回数
無指定 要素は1回現れる
+ 要素は1回以上現れる
* 要素は0回以上現れる
? 要素は0回または1回現れる
<!ELEMENT 親 (子+)>
<!ELEMENT 親 (子*)>
<!ELEMENT 親 (子?)>
例)
<!ELEMENT 親 (子?)>
<親>
<子>長男</子>
<子>次男</子> ←子が2回以上現れてはいけない
</親>
要素が現れる順番
,
|
#PCDATA
EMPTY
ANY
属性のデータ型
CDATA 文字データ
ID 文書内でただ一つの値
IDREF,IDREFS ID型の値
ENTITY,ENTITIES 実体名
NMTOKEN,NMTOKENS 最初の文字が数値でも良い
NOTATION 記法名

 

コメント