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エディター機能のアドインを無料で入手できますが、機能は十分ではありません。