XML入門

XML (Extensible Markup Language) とは、複雑な構造の文書をツリー構造で簡潔に記述できるマークアップ言語です。 XML 文書は要素(エレメント)によって構成されています。ひとつの要素は一対の開始タグと終了タグによって記述します。 XML 文書の中の要素はツリー構造で管理されます。XMLは単なるテキストファイルなので、エディタで編集することができます。

目次

XMLの構成

XML文書は次の3つの部分から構成されます。

XML 宣言とスキーマ定義は省略可能です。次にXML文書の一例を示します。

<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE book [
<!ELEMENT book (title)>
<!ELEMENT title (#PCDATA)>
]>
<book>
<title>XMLの構造</title>
</book>

処理命令(Process Instruction: PI)

次にXML処理命令の例を示します。

<?xml version="1.0" encoding="Shift_JIS"?>

スキーマ定義

スキーマ定義では、XML文書内で使用している要素の名前、順序、属性などの定義を行います。スキーマ定義は省略することが可能です。スキーマの定義はスキーマ定義言語で行います。スキーマ定義言語には以下の3種類があります。

次にDTDで記述したスキーマ定義の例を示します。

<!DOCTYPE book [
<!ELEMENT book (title)>
<!ELEMENT title (#PCDATA)>
]>

XMLインスタンス

実際のタグ付き文書を記述した部分です。XMLインスタンスは、以下の要素で構成されています。

次にXMLインスタンスの例を示します。

<book>
<title>XMLの構造</title>
</book>

XMLプロセッサ

XMLプロセッサはXML文書をアプリケーションで利用できる形式に変換するプログラムです。アプリケーションプログラムインタフェース (API) には DOM (Document Object Model)SAX (Simple API for XML) があります。

DOM (Document Object Model)

XMLパーサはXML文書を読み込み、そのXML文書の構造を解析(パース)します。 アプリケーション開発者はXMLパーサが提供する標準的なAPIを利用して、XML文書を操作できます。 このXML文書を操作するための代表的なAPIとして、DOM (Document Object Model)SAX (Simple API for XML)があります。

XML文書は、タグとその間のデータをそれぞれノードとした木(ツリー)構造とみなすことができます。このツリーにアクセスするための標準的なインタフェースのひとつがDOMです。このDOM APIを利用することによって、XML文書の操作(データの検索や、要素や属性の追加、および削除など)ができます。

SAX (Simple API for XML)

DOMはツリーを柔軟に操作可能な一方で、SAXは大規模なXML文書を高速に処理できる特徴があります。SAXでは、DOMのようにXML文書を全てメモリに読み込んだ後に処理するのではなく、XML文書の先頭から1行づつ順番に処理をしていきます。そのため、大きなXML文書を処理するときでも、メモリの使用量はそれほど負担にならず、処理も一般的に高速だという利点があります。

トラバース

XML文書の構造を解析して、ツリー構造で表現されるデータの集合を生成すること。XML文書は、ルート(根)から各要素が枝分れしながら次々に派生するツリー構造をもっています。これを解析してプログラムで利用可能にする動作がトラバースです。

演算子

and

and演算子により「複数の条件をすべて満たす」という条件を設定できます。次のように XPath 表現式で条件を複数指定する場合に利用できます。

/bookshelf/book[author/text()="夏目漱石" and publisher/text()="岩波書店"]

また、次のようにFLWOR表現式で条件を複数指定する場合にも利用できます。

for $x in /bookshelf/book
where $x/author/text()="夏目漱石" and $x/publisher/text()="岩波書店"
return $x

or

or演算子により「複数の条件のどれかを満たす」という条件を設定できます。次のように XPath 表現式で条件を複数指定する場合に利用できます。

/bookshelf/book[author/text()="芥川龍之介" or author/text()="夏目漱石"]

また、次のようにFLWOR表現式で条件を複数指定する場合にも利用できます。

for $x in /bookshelf/book
where $x/author/text()="芥川龍之介" or $x/author/text()="夏目漱石"
return $x
SEO 仕事 掲示板 レンタルサーバー プロフ SEO