XML (Extensible Markup Language) とは、複雑な構造の文書をツリー構造で簡潔に記述できるマークアップ言語です。 XML 文書は要素(エレメント)によって構成されています。ひとつの要素は一対の開始タグと終了タグによって記述します。 XML 文書の中の要素はツリー構造で管理されます。XMLは単なるテキストファイルなので、エディタで編集することができます。
目次
XMLの構成
処理命令 (Processing Instruction: PI)
スキーマ定義
XMLスキーマ
問い合わせ言語
XSLスタイルシート変換 (XSLT)
- xsl:stylesheet
- xsl:template
- xsl:apply-templates
- xsl:call-template
- xsl:variable
- xsl:param
- xsl:value-of
- xsl:element
- xsl:attribute
- xsl:text
- xsl:comment
- xsl:processing-instruction
- xsl:for-each
- xsl:choose
- xsl:when
- xsl:otherwise
- xsl:if
- xsl:import
- xsl:number
- xsl:output
XML派生言語
- RSS
- SOAP
XMLの構成
XML文書は次の3つの部分から構成されます。
- 処理命令 (Processing Instruction)
- スキーマ定義
- XMLインスタンス
XML 宣言とスキーマ定義は省略可能です。次にXML文書の一例を示します。
<!DOCTYPE book [
<!ELEMENT book (title)>
<!ELEMENT title (#PCDATA)>
]>
<book>
<title>XMLの構造</title>
</book>
処理命令(Process Instruction: PI)
次にXML処理命令の例を示します。
スキーマ定義
スキーマ定義では、XML文書内で使用している要素の名前、順序、属性などの定義を行います。スキーマ定義は省略することが可能です。スキーマの定義はスキーマ定義言語で行います。スキーマ定義言語には以下の3種類があります。
- DTD (Document Type Definition)
- XML Schema
- RELAX (Regular Language Description for XML)
次にDTDで記述したスキーマ定義の例を示します。
<!ELEMENT book (title)>
<!ELEMENT title (#PCDATA)>
]>
XMLインスタンス
実際のタグ付き文書を記述した部分です。XMLインスタンスは、以下の要素で構成されています。
- 要素(タグ)
- 属性
- テキスト
- CDATAセクション
- 処理命令
- コメント
- 実体参照
次にXMLインスタンスの例を示します。
<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 表現式で条件を複数指定する場合に利用できます。
また、次のようにFLWOR表現式で条件を複数指定する場合にも利用できます。
where $x/author/text()="夏目漱石" and $x/publisher/text()="岩波書店"
return $x
or
or演算子により「複数の条件のどれかを満たす」という条件を設定できます。次のように XPath 表現式で条件を複数指定する場合に利用できます。
また、次のようにFLWOR表現式で条件を複数指定する場合にも利用できます。
where $x/author/text()="芥川龍之介" or $x/author/text()="夏目漱石"
return $x