XMLマスターへの道
〜「XMLマスター:ベーシック」試験対策〜
第3回 XML文書の要素、エンコーディング、宣言
武田栄子
ウチダ人材開発センタ
2003/1/29
前回 (「第2回 XMLの概要と起源、関連規格」)の最後に、予習として下記の問題を出題しました。XMLマスター:ベーシック試験の出題方法がイメージできたでしょうか?
問題 | ||||||||||||
(Q1) 整形式のXML文書をすべて選択してください。なお、文字エンコーディングは合っているものとします。
|
||||||||||||
(Q2) 以下のXML文書で要素を表しているものを1つ選択してください。
|
今回は、この問題に回答するうえで必要な知識となる、下記の11の内容について解説することで、XMLマスター:ベーシック試験に対応できるようにします。
- XML文書
- XMLパーサ
- 要素
- 文字エンコーディング
- XML宣言
- 命名規則
- 属性
- ルート要素
- 定義済み実体
- コメント
- well-formed XML(整形式XML)
今回の内容はかなりボリュームがありますので、2回に分けて解説します。この部分はそれだけ出題の頻度も高いカテゴリですので、この内容を確実に理解することが、XML マスター:ベーシック合格への近道です。
余談ではありますが、筆者の経験からいいますと、このような資格試験では「デフォルト値は何か」を押さえておくと、いい成績が取れる傾向があります。ただし、デフォルト値を暗記するだけではつまらないし、すぐに記憶から消えてしまいます。そこで、今回は、表1の社員データをXMLで記述・修正することで、何ができて何ができないのか、トライ&エラーを繰り返すことで理解するように進めていきます。「今回の学習内容で実機確認を行うときに役立つフリーツール」をまとめノートの中で紹介しているので、必要に応じて入手して、試してみてください。
問題の解答は、次回の解説が終了した後で掲載します。まず、解説で利用する社員データを下記に示します。
|
||||||
表1 XML文書の基になる社員データ (emp) |
任意のデータに対してタグを追加することで、データに対して意味を持たせるのが「マークアップ」の役割であることは前回「XMLの概要と起源、関連規格 」で解説しました。それを踏まえ、表1の社員データを記述したのがリスト1のtest3_01.xmlです。test3_01.xmlはWindows標準のメモ帳や、記事の最後にあるまとめノートで紹介しているサクラエディタのような高機能エディタを使って記述できます(編集注:XML文書をシフトJISで記述する場合には、一般のエディタで問題なく記述できますが、UTF-8やUTF-16などの文字エンコーディングで記述する場合には、Windows 2000/XPに付属のメモ帳や、サクラエディタなどの、UTF-8やUTF-16に対応したエディタを使用する必要があります)。
<emp> |
リスト1 社員データをXML文書として記述(test3_01.xml) |
Internet Explorer 5.0以上がインストールされているマシン上でtest3_01.xmlを表示すると、ツリー構造でマークアップされたデータが画面上に表示されます(画面1)。もしも画面2のようなエラー画面となった場合、ファイルの内容に何らかの記述ミスがありますので、データを見直してファイルの内容を修正してください。
画面1 test3_01.xmlをInternet Explorer 5.5 SP2上で表示 |
画面2 test3_01.xmlの記述にミスがあった場合、エラーが表示される |
リスト1は4行しか記述されていないシンプルな内容ですが、XML 1.0仕様に従って記述されています。このようなドキュメントのことを「XML文書」といいます。なお、今回は拡張子「xml」でファイルを作成しましたが、XML 1.0仕様ではファイルの命名規則を特に規定していませんので、拡張子は実際には何にしても構いません。
■XMLパーサ
リスト1のようなテキストドキュメントを読み込んで、XML 1.0仕様に従っているかを解析したり、テキストドキュメントの内容と構造を解析して、任意のアプリケーションへ処理を渡すソフトウェアを、「XMLパーサ」または「XMLプロセッサ」といいます(この2つの用語は同義ですので、以下の本稿では「XMLパーサ」で統一します)。逆を返せば、XML 1.0仕様はXMLパーサの振る舞いを定義したものともいえます。
Internet Explorer 5.0以降では、マイクロソフト製のXMLパーサであるMSXMLが組み込まれているため、先ほどのように拡張子「xml」のテキストドキュメントを解析して結果を返すようになっています。しかしすべてのWebブラウザがXMLパーサを組み込んでいるわけではありません。そのほかのXMLパーサとしてはXerces、XML Parser for Java (XML4J)、Java API for XML Parsing (JAXP)、Oracle XML Developer's Kit (XDK)、iPEX、XTなど、さまざまなものがあります。
では、リスト1の内容を詳しく見ていきましょう。XML文書は、
<emp>〜</emp>
のように、マークアップの開始を表す命令から終了を表す命令までの集まりが組み合わされたファイルです。この情報の集まりのことを「要素」といい、XML文書の最小単位となります。図1は、要素の構成と名称を表したものです。試験対策のポイントとしては、要素を構成する各部品の名称を整理しておいてください。
要素の内容には、文字データ、要素(要素の中の要素は「子要素」 として扱われます)、文字データと要素、が混在したデータを含めることができます。
図1 要素を構成する各部の名称 |
XMLでは開始タグと終了タグは、必ず対で記述しなければならず、HTMLの<BR>のように終了タグを省略して記述することはできません。ただし、内容がない要素の場合、
<要素名/>
という形式の空要素タグを使って、記述することも可能です。下のリスト2とリスト3は、いずれも空要素を表すXML文書です。
<root></root> |
リスト2 開始タグと終了タグの間に内容を含めない記述(test3_02.xml) |
<root/> |
リスト3 空要素タグを使って記述(test3_03.xml) |
そのほかXMLがHTMLと違うところは、XMLでは開始タグと終了タグの要素名で大文字小文字を識別する点です。HTMLでは要素名の大文字小文字の組み合わせが異なっていても、Webブラウザが開始・終了タグの組み合わせであると解釈してくれることもありますが、XMLでは大文字小文字が完全に一致していないとエラーとなります(リスト4)。
<emp> |
リスト4 大文字小文字の組み合わせが一致していない場合(test3_04.xml) |
ここまで紹介したXML文書のサンプルはすべてASCII文字で記述してきましたが、XMLではさまざまな国の文字 (Unicode、ISO/IEC 10646にエントリされている文字) を扱うことができます。しかし表2のように、name要素とdept要素の内容をASCII文字から非ASCII文字へ変更すると、エラーとなります。
|
||||||||||||
表2 name要素とdept要素の内容を、ASCII文字から非ASCII文字へ変更 |
<emp> |
リスト5 内容を非ASCII文字に変更後のXML文書(test3_05.xml) |
XML 1.0仕様では、XMLパーサはデフォルトの文字エンコーディングとしてUTF-8とUTF-16を処理できなければならない、と規定しています。そのため、Shift-JISやEUC-JPなどの文字エンコーディングを利用したい場合、XML文書内へ明示的にエンコーディング宣言を記述します。ただし、UTF-8、UTF-16以外の文字エンコーディングをXMLパーサが処理できるかどうかは、XMLパーサに依存します。文字エンコーディングは、XML宣言(後述)の中で記述します。
なお、ASCII文字はUTF-8のサブセットなので、通常のASCII文字ではエンコーディング宣言を厳しく要求されません。
XML宣言は、XML仕様のどのバージョンに従って記述されているかを宣言するものであり、XML文書内で最初に記述します。xml、version、encoding、standaloneは小文字を使って下の構文の順序で宣言し、=の右辺にある値は二重引用符 (")または一重引用符 (') でくくります。
<?xml |
XML宣言の構文 |
|
||||||||||||
表3 XML宣言の記述および説明 |
XML仕様のバージョンが1.0、文字エンコーディングがUTF-8またはUTF-16、スタンドアロン文書宣言がnoをすべて満たしている場合、XML宣言自体の省略が可能です。
今回はWindows標準の文字エンコーディングであるシフトJISを使って記述し、XML宣言を追加します(スタンドアロン文書宣言は記述しません)。
<?xml version="1.0"
encoding="Shift_JIS"?>
|
リスト6 XML文書にXML宣言を追加したファイル(test3_06.xml) ※UTF-8形式で保存したファイル(test3_07.xml) test3_07.xmlファイルをエディタで開く場合、UTF-8に対応していないと文字が化けてしまいます。Windows 2000/XP付属のメモ帳はUTF-8に対応していますが、それ以外の環境の場合、サクラエディタや秀丸などのUTF-8対応エディタを入手してください(Windows 9x/NTに付属のメモ帳はUTF-8に対応していません)。 |
なお、参考ファイルとしてUTF-8形式で保存したtest3_07.xmlを用意しました。test3_07.xmlの中にencoding宣言がなくても正常にファイルをInternet Explorer上で実行できることを確認してください。
次回は説明の続きとして、タグの命名規則、属性、ルート要素、定義済み実体、コメント、そして整形式のXML文書について解説します。
今回と次回に解説する内容の要点と、関連するリンクなどを紹介します。
○今回の試験対策のポイント
- XML文書
- well-formed XML
- XMLパーサ
- XMLの構文
- XML宣言
- 文書本体
- 要素
- 属性
- ルート要素
- 文字エンコーディング
- 命名規則
- 引用符
- 定義済み実体
- コメント
○今回の学習内容で出題範囲となる仕様
- Internet Explorer 5.0 以上
- サクラエディタ
- MSXML
Parser 3.0 Service Pack 2 Release
※ 別途、Xmlinst.exe Replace Mode Toolが必要になる場合あり(詳細は、Microsoft XML Parser Version 3.0 Releaseの新機能をご参照ください)
○今回の学習内容で参考になる@ITの記事
- 技術者のためのXML再入門 第4回 XML文書の構造を詳しく見ていく
- やさしく読む「XML 1.0勧告」 第1回 XMLの仕様書によると、XMLの目標とは…
- やさしく読む「XML 1.0勧告」 第2回 XML勧告読解に必須のEBNF
- やさしく読む「XML 1.0勧告」 第3回 XML仕様が目指す10のゴール
- やさしく読む「XML 1.0勧告」 第4回 XML仕様書で使われる言葉の意味
- やさしく読む「XML 1.0勧告」 第5回 「整形式」のXML文書 と文字の定義
- XMLを学ぼう 第1回 最短のXML入門とメタ言語
- XMLを学ぼう 第2回 XMLのカタチ
- XMLを学ぼう 第3回 現実のXML文書を見る
- XMLを学ぼう 第6回 Unicodeでも発生する文字化けの危機と回避
- XMLを学ぼう 第11回 多言語対応の問題と解決を考える
- XMLを学ぼう 最終回 XML仕様書の構造と読み方
- XMLと関連仕様に強くなるために 〜 W3Cサイト徹底攻略法!〜 > XML 1.0の仕様書の読み方
- XMLの基礎を理解する10のポイント ポイント#1 XML文書はテキストデータである
- XMLの基礎を理解する10のポイント ポイント#2 タグがデータに意味を持たせる
- XMLの基礎を理解する10のポイント ポイント#3 XML宣言とDTDと本体
- XMLの基礎を理解する10のポイント ポイント#5 整形式な文書と妥当な文書
- Ask XML Expert タグの大文字小文字の区別、使える文字を教えて
- Ask XML Expert タグと要素 (エレメント) の違いを説明してください
- Ask XML Expert UTF-8とUTF-16の違いとは?
- Ask XML Expert MSXML3とは何? 何が変わるの?
- Ask XML Expert XMLパーサにはどんなものがあるの?
- Ask XML Expert UnicodeのXML文書はどのように作るのですか?
○今回の学習内容で参考になるXML用語集 (@IT XML用語事典より)
- BNF (Backus Naur Form)
- BOM (Byte Order Mark)
- CDATAセクション
- DTD
- EBNF (Extended BNF)
- MSXML
- PI (処理命令)
- UCS (Universal Multiple-Octet Coded Character Set)
- Unicode
- UTF-16
- UTF-8
- Xerces
- XMLパーサ
- XML宣言
- XML日本語プロファイル
- XML文書 (XML Document)
- インスタンス
- エンコード
- エンディアン
- シフトJIS (Shift_JIS)
- スタンドアロン文書
- タグ
- フラグメント (Fragment)
- ルート
- ルート要素
- 開始タグ
- 空要素タグ
- 終了タグ
- 整形式のXML文書 (Well-Formed XML Document)
- 属性 (Attribute)
- 妥当なXML文書 (Valid XML Document)
- 定義済み実体
- 文字参照
- 要素 (Element)
(4)すべてのXM文書は整形式である |
連載:XMLマスターへの道 |
- QAフレームワーク:仕様ガイドラインが勧告に昇格 (2005/10/21)
データベースの急速なXML対応に後押しされてか、9月に入って「XQuery」や「XPath」に関係したドラフトが一気に11本も更新された - XML勧告を記述するXMLspecとは何か (2005/10/12)
「XML 1.0勧告」はXMLspec DTDで記述され、XSLTによって生成されている。これはXMLが本当に役立っている具体的な証である - 文字符号化方式にまつわるジレンマ (2005/9/13)
文字符号化方式(UTF-8、シフトJISなど)を自動検出するには、ニワトリと卵の関係にあるジレンマを解消する仕組みが必要となる - XMLキー管理仕様(XKMS 2.0)が勧告に昇格 (2005/8/16)
セキュリティ関連のXML仕様に進展あり。また、日本発の新しいXMLソフトウェアアーキテクチャ「xfy technology」の詳細も紹介する
|
|