XMLによる文書管理 (第3回 XML名前空間)

名前空間

名前のユニーク性が保証される範囲や枠組みのことを、名前空間と呼びます。

元々はプログラミングの概念でしたが、最近は一般的に使われています。

名前空間は同時に複数存在すると考えます。

ひとつの名前空間内での名前の重複はありませんが、異なる名前空間には同じ名前が存在する可能性があります。

名前空間名

名前空間を識別するための名前を名前空間名と呼びます。

名前空間名がグローバルにユニークであれば、名前空間名と名前の組み合わせもグローバルにユニークになります。

身近な名前空間の使用例

インターネットドメイン「.com」は、「.com」名前空間内でユニークな企業ドメイン名を管理しています。

しかし、「.com」以外のドメイン(「.co.jp」など)には、同じ企業ドメイン名が存在する可能性があります。

インターネットドメイン「.com」は世界にひとつだけなので、「.com」で終わるフルドメイン名は世界的にユニークです。

XMLにおける名前空間の使用

スキーマと名前空間

ひとつのスキーマ内の要素名はユニークですが、スキーマが異なれば、同じ名前が別の目的で使用されます。

つまり、スキーマは名前空間に該当します。

スキーマにユニークな名前空間名を付けることで、すべての要素をユニークに識別できます。

名前空間を使ったXMLの記述

名前空間名を使うことにより、複数のスキーマを組み合わせたXMLを記述することができます。

スキーマを拡張するとき、拡張部分を別の名前空間として定義しておくと、複数の人がバラバラな拡張を行っても、名前のユニーク性は失われません。

① 名前空間名

スキーマを表すユニークな文字列です。

名前の衝突を避けるため、自分が管理するURLまたはURNを使用することになっています。

名前空間名としてのURLは、単なる文字列です。そのURLでスキーマにアクセスできるわけではありません。

② 名前空間プリフィックス

名前空間名の一時的な省略形です。要素名の前に前置きすることで、要素をグローバルに識別します。

タグ内に名前空間名を直接書くことはできません。

③ 名前空間宣言

xmlnsで始まる属性は名前空間宣言と呼ばれ、通常の属性と区別されます。

名前空間宣言は、名前空間名と名前空間プリフィックスを対応付けます。

名前空間宣言は下位要素に継承されます。

④ デフォルト名前空間宣言

名前空間プリフィックスを付けない場合の名前空間名を、1個だけ宣言できます。

スキーマ変換と名前空間の関係

XSLTでスキーマ変換を行うプログラムでは、変換前のスキーマと変換後のスキーマを同時に扱う必要があります。

スキーマごとに別の名前空間名を持っていれば、変換前後のすべての要素をユニークに識別できます。

XML作成ツール

XMLを一般的なテキストエディタで作成すると、入力ミスや文法エラーを起こしやすくなります。

リアルタイムのエラーチェックや、入力の自動補完機能を備えた、XML作成ツールの使用をお薦めします。

代表的なXML作成ツールを、以下に紹介します。

Microsoft Visual Studio (企業は有償、個人は無償)

プログラマー用の汎用開発ツールで、XMLエディターも含まれています。

簡単な設定で、入力アシスト付きのXMLファイルの編集ができます。

WYSIWYG編集機能はありません。

Visual Studio Code (無償)

Microsoft Visual Studioのオープンソース版です。

XMLエディター機能のアドインを無料で入手できますが、機能は十分ではありません。

Adobe FrameMaker (有償)

ワードプロセッサーですが、XMLエディターの機能も備えています。

近年は、XMLエディターとして使われることが多くなっています。

XMLにリアルタイムでスタイル付けを行い、WYSIWYG編集を行うことができます。

スキーマに従った入力アシスト機能があります。

XMLエディターとして使用するためには、高度な設定が必要です。(弊社で設定実績あり)

Adobe FrameMaker の XML 編集画面