XML概要
XMLはeXtensible Markup Languageの略です。
日本語では「拡張可能なマーク付け言語」といいます。
XMLは構造を持った文書です
これまでいろいろなアプリケーションやそのバージョンごとに異なった形式で文書が作成されてきました。ところがデータの再利用、他のアプリケーションでの利用を考えると、独自の形式を使っていたのでは困難です。一方でアプリケーションごとに異なった機能があるわけですから、個別に特殊なデータを埋め込んで保存する要求もあるわけです。
もっとも互換性のあるデータ形式はテキストファイルです。 テキストファイルとは文字だけが並んだファイルです。ここで言う文字とはアルファベットや数字、記号、漢字、かな、改行、タブなどのことです。 ワープロで作成する文書とは異なり、テキストファイルには文字の大きさ、位置、色などを指定することはできません。
文字以外の情報はタグという仕組みを使ってテキストファイル内に記述します。 Webページで使われるHTMLでもタグが使われています。HTMLでは使えるタグがあらかじめ決められていますが、XMLでは利用者が新しいタグを定義することができます。
HTML
XMLに似たものにHTMLがあります。
Webページの記述に用いられるHTMLの例を示します。
<html> <head> <title>sample page</title> </head> <body> <h1>lesson 1</h1> <div>タグを使って<strong>属性</strong>を記述します。</div> </body> </html>
< と > で挟まれた部分をタグと言います。 例では<html>、<head>、<title>、</title>、</head>、 <body>、<h1>、</h1>、<div>、<strong>、 </strong>、</div>、</body>、</html>のタグが使われています。 <strong>タグは強調を意味し、ブラウザで表示すると<strong>と</strong>で挟まれた部分が太字になります。
XMLの例
XML文書の例を示します。
<?xml version="1.0"?> <!DOCTYPE greeting SYSTEM "hello.dtd"> <greeting>Hello, world!</greeting>
HTMLと違って、書き方(文法)がきっちり決まっています。 また、タグを自由に作り出して使うことができます。 例では<greeting>というタグが使われています。
- 1行目はこれがXMLドキュメントであるという宣言です。
- 2行目はこのXMLドキュメントがどんなデータなのかを示すための宣言です。
- 3行目からがXMLのデータです。この例では1行しかありません。
XML宣言、DOCTYPE宣言は文書により書き方が決まっています。指示されたとおりに書いてください。
- データ部はタグを使って書きます。
- タグを複数個使って構造化することができます。
- データは1つのルート要素でできていること。
要素の書き方は2通りあります
要素の書き方(1)
- 「開始タグ」 「内容」 「終了タグ」
<text>This is a pen.</text>
要素の書き方(2)
- 「単独タグ」
<break />
「開始タグ」は
<tagname> または <tagneme attribute="value">
のように書きます。
- タグ名(tagname)は英数字で自由につけられます。ふつうは英字の小文字を用います。
- 属性(attribute)とその値(value)は複数個書くこともできます。属性名も自由につけられます。
- 値の指定にはダブルクオートが必要です。
「終了タグ」は
</tagname>
のようになります。
- / の後ろは開始タグの名前と同じものです。
「内容」にはふつうのテキスト(文字列)のほかに、要素(タグを使った項目)を含むこともできます。
「単独タグ」は「内容」が必要のないときに使います。
<tagneme attribute="value" />
のような形で /> で終わります。
- 属性の無い場合もあります。
属性
開始タグ、単独タグ内には属性を書くことができます。空白で区切って複数個書くこともできます。属性は
- attribute="value"
のように書きます。
- attributeの部分を属性の名前、valueの部分を属性の値といいます。XMLでは属性の値を省略できません。ダブルクオートも必要です。
空白
- スペース、タブ、改行
- いくつ並べても同じ
- S ::= (#x20 | #x9 | #xD | #xA)+
全角スペースはだめ
名前
- 英数字、ピリオド、ハイフンを並べたもの
- 先頭は英字
NameChar ::= Letter | Digit | '.' | '-' | '_' | ':' | CombiningChar | Extender
Name ::= (Letter | '_' | ':') (NameChar)*
- コロンは使えるが使わない方がよい
リテラル
- "....." または '...'
特殊な文字の表し方
< は <
> は >
& は &
' は '
" は "
コメント
<!-- ここにコメントを書く、数行にわたっても良い -->
- --を含まないこと