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

スポンサーリンク

XMLの構成

XML文書は、処理命令およびスキーマ定義、XMLインスタンスから構成される。このうち、処理命令とスキーマ定義は省略することができる。

処理命令(省略可能)
スキーマ定義(省略可能)
XMLインスタンス

XML文書の例を次に示す。

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

スキーマ定義

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

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

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

XMLインスタンス

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

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

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

コメント

マークアップの外側であれば、XML文書の任意の場所にコメント(注釈)を記述できる。

XML文書にコメントを入れるには、次の構文で記述する。

<!-- comment -->
comment

任意のコメントを記述する。改行を含めてもよい。ただし、ダブルハイフン(--)をコメントに含めてはならない。タグとcommentの間に必ずしも空白は必要ではないが、「--->」で終わってはいけない。

コメントは複数の行に跨っても良い。

<!--
    comment1
    comment2
-->

予約済み属性

XMLでは任意の要素や属性を定義することができるが、XMLであらかじめ定義されている予約済み属性が存在する。

XMLの予約済み属性
Attribute Description
xmlns[:prefix] 名前空間のURIを指定する。
prefixに接頭辞を指定することで、要素タイプ名を「prefix:elementType」と記述できるようになる。
xml:base 基底URIを指定する。
xml:id XML文書の中で一意な識別子を指定する。
xml:lang コンテンツがどの言語で記述されているかを指定する。
xml:space コンテンツ中の文字列に含まれる空白の扱いを指定する。
defaultを指定した場合、XMLプロセッサのデフォルト動作どおりになる。
preserveを指定した場合、すべての空白を保存する。

予約済み接頭辞

XMLではxmlns属性で任意の接頭辞を定義することができるが、XMLであらかじめ定義されている予約済み接頭辞が存在する。

接頭辞 xml は、名前空間「 http://www.w3.org/XML/1998/namespace」を表す予約済み接頭辞である。予約済みの接頭辞は明示的に定義することなく使用できる。したがって、次のようなxmlns属性の定義は不要である。

xmlns:xml="http://www.w3.org/XML/1998/namespace"

XMLパーサ(XMLプロセッサ)

XMLパーサ(XMLプロセッサ)とは、XML文書をアプリケーションで利用できる形式に変換するプログラムである。XMLパーサ(XMLプロセッサ)は、XML文書を読み込み、そのXML文書の構造を解析(パース)する。 アプリケーション開発者は、XMLパーサ(XMLプロセッサ)が提供する標準的なAPIを利用して、XML文書を操作できる。 このXML文書を操作するための代表的なAPIとして、DOM (Document Object Model)やSAX (Simple API for 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

MathML

MathML とは、数式をXMLで書くための文法である。これにより、Webブラウザで数式を表示したり、数式を条件検索したりできるようになる。

数字

<mn>256</mn>

変数、関数

<mi>x</mi>

演算子

<mi>+</mi>

分数

<mfrac>
 <mrow>分子</mrow>
 <mrow>分母</mrow>
</mfrac>

ルート

平方根

<msqrt>
 <mrow>数式</mrow>
</msqrt>

累乗根

<mroot>
 <mrow>本体</mrow>
 <mrow>基数</mrow>
</mroot>

行列

<mtable>
 <mtr>
  <mtd>数</mtd>
  <mtd>数</mtd>
 </mtr>
 <mtr>
  <mtd>数</mtd>
  <mtd>数</mtd>
 </mtr>
</mtable>

SAML

SAML (Security Assertion Markup Language)は、認証及び承認データを交換するためのXMLに基づいたオープンな標準データ形式であり、OASISによって策定された。

XACML

XACML (Extensible Access Control Markup Language)は、OASISによって策定されたアクセス制御のための言語仕様であり、XMLに基づいている。

PAP (Policy Administration Point)はポリシーやポリシーセットを生成する機能を持つ。

PDP (Policy Decision Point)はポリシーに基づいて、要求者の要求は対象となる資源に関して権限が与えられるかどうかを判断する機能を持っている。

PEP (Policy Enforcement Point)はポリシーに基づいて、アクセス制御を実施する機能と持つところである。要求者から要求を受け付けて、アクセス制御ポリシーに適合した応答を要求者に返す。

XKMS

XKMS (XML Key Management Specitication)とは、暗号化技術の一種で、公開鍵基盤(PKI)の管理を行うプロトコルである。

このエントリーをはてなブックマークに追加
スポンサーリンク