目次へ

2.5 xml:space属性とxml:lang属性

XMLはメタ言語であり、データを「木構造」になるように新しい言語を作成します。その際に、基本情報単位となる要素や属性を定義しますが、XMLにはすでに定められている属性が存在します。これがxml:space属性とxml:lang属性です。

xml:space属性とは、 コンテンツ中の文字列に含まれるスペースの扱いについて決定する属性です。値は、defaultとpreserveがあります。defaultは、XMLプロセッサのデフォルト動作を示し、preserveはすべての空白を保存する方法を示します。以下のXML文章を例にします。

<bookinfo>
 <book-title xml:space=preserve>カイマナヒラの家 Hawaiian sketches</book-title>
 <book-author role="著" reading="イケザワナツキ">池澤夏樹</book-author>
</bookinfo>

以上の例では、book-tilte要素の中のコンテンツについて、「空白はすべて保存する」よう設定されています。そのため、XMLプロセッサには、book-titleのコンテンツとして「カイマナヒラ Hawaiian sketeches」とスペースを含んだ文字列が受け渡されます。

スペース、改行、タブ文字などの扱いは、HTMLより厳密になっています。例えば、以下のような、XML文書を考えます。

<bookinfo>
 	<book-title>
 		カイマナヒラの家
 	<book-title>
 </bookinfo>

上の例のように、ユーザがデータを見やすいように、改行やスペースを挿入することはよくあります。しかし、上のようなXML文書を処理するソフトウェアモジュール=XMLプロセッサにわたすと、XMLプロセッサは、book-title要素の値は、「(改行)(スペース)(スペース)カイマナヒラの家(改行)」の12文字であると判断します。つまり、XMLプロセッサは改行文字もスペースも含まれた状態で、アプリケーション側に渡す、ということです。XML文書の処理を行うシステムを構築する際には、注意が必要です。

xml:lang属性は、コンテンツがどの言語で記述されているか示す属性です。以下に例を示します。

<greeting>
  <thanks xml:lang="en">Thank  you </thanks>
  <thanks xml:lang="jp">ありがとう  </thanks>
  <thanks xml:lang="fr">merci </thanks>
</greeting>

上の例では、最初のthanks要素は英語、2番目の要素は日本語、最後の要素はフランス語でかかれていることを示します。

これより、XMLは当初より多元語対応を意図して設計されていることを意味します。例えば、上の文により、ブラウザの言語設定により、表示させる挨拶を変化させるようなアプリケーションを簡単に作成できます。また、XMLなら新たな言語の挨拶を追加することも容易です。さらに、Unicode使用時の問題点を解消するねらいもあります。Unicodeは、全世界の文字コードのスーパーセットとして制定されましたが、漢字の表示などで、問題が含まれています。例えば、同じ「国」という漢字でも、中国語と日本語では表記の仕方がだいぶ違いますが、Unicodeでは同じコードが割り当てられています。この場合、XMLでは、xml:lang属性により、どっちの「国」を表示するのか、アプリケーションがわかるように明示することができます。

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp