出版

XML文書は情報を表現する優れた手段です。しかし、アンパサンドなどの特殊文字は特別な意味を持つため、問題を引き起こす可能性があります。ここでは、アンパサンドやその他の特殊文字がもたらす落とし穴を回避する方法を説明します。
XMLによるデータ記述は非常に普及しており、今ではあらゆる種類のデータがXMLの馴染み深いタグベースの言語で表現されています。しかし、XMLで表現すると問題が発生する可能性のあるデータも存在します。ここでは、そうした落とし穴をいくつか見ていきます。
そして、そして、そして…
アンパサンドは英語で非常によく使われる文字です。企業は社名や製品名にアンパサンドを頻繁に使用しています。しかし、XMLではアンパサンドを他の文字とは異なる方法で扱います。XMLパーサーにとって、アンパサンドは、その後に続くものが別のデータに解析する必要があるエンティティであることを示します。そのため、「裸の」アンパサンドはXMLタグ付きコンテンツ内では確実に使用できません。以下では、XML内でアンパサンドがコンテンツタグと記述タグを区切るためにどのように使用されるかを説明し、コンテンツデータ内でアンパサンドを適切に表示する方法を説明します。
アンパサンドの最も一般的な用途は、XMLデータに大なり記号と小なり記号を含める機能を提供することです。例えば、XMLデータに次のような文字列が含まれているとします。C
:\>dir
これは明らかにディレクトリ一覧を実行するDOSコマンドを示しています。このデータはXMLベースのDOSチュートリアル文書に含まれる可能性があります。これをXMLコンテキストに当てはめると、次のようになります。
<DirectoryCommand>C:\>dir</DirectoryCommand>
データに大なり記号が含まれているため、パーサーはどの大なり記号がDirectoryCommandタグの真の終端記号であるかを判断できない可能性があります。この問題を回避するには、「エスケープシーケンス」を使用することで、XMLに大なり記号を実際に記述することなく、その記号を記述することができます。これはアンパサンドを使用することで実現できます。
XMLパーサーは、XMLデータ内でアンパサンドを検出すると、シンボル名とそれに続くセミコロンを期待します。シンボル名は、アンパサンド、大なり記号、小なり記号などの他のエンティティまたは文字へのシンボル参照を提供します。大なり記号のシンボル名はgt、小なり記号のシンボル名はltです。XMLデータに大なり記号を含めるには、次の構文を使用する必要があります:
>
ご覧のとおり、アンパサンドとセミコロンはデータ内で使用されるシンボル名を囲んでいます。このアプローチを上記のディレクトリコマンドに適用してみましょう。このデータのXMLドキュメントにおける正しい形式は、
<DirectoryCommand>C:\>dir</DirectoryCommand>です。
これは、前の構文よりも明らかに読みにくくなっています。ただし、コードのどの部分がコンテンツで、どの部分がタグであるかが XML パーサーに明確に伝わります。
その他の文字参照
これらの単一の文字を表すエスケープシーケンスは、XMLでは文字参照と呼ばれます。XMLを扱う際に使用できる定義済みの文字参照がいくつかあります。定義済みの文字は次のとおりです。
- アンパサンド—&—&
- より大きい—>—>
- より小さい—<—<
- アポストロフィ—'—'
- 引用—”—"
概要
XMLデータの扱いは時に困難を伴い、注意すべき点がいくつかあります。アンパサンドや大なり記号などの文字を使用すると、データが正しく見えてもXMLパーサーがエラーを起こす可能性があります。この記事では、定義済み文字参照を使用して特殊文字による問題を回避する方法について説明しました。

ブライアンシャフナー