bdo要素(bidirectional override)は言語ごとに決まっている書字方向を強制的に変更します。世界中の主だった言語で使用される文字を含んだ国際的なコードである Unicode には言語毎にそれぞれの文字が左から右へと書かれるものなのか、右から左へと書かれるものなのかといった情報が含められています(日本語や英語であれば左から右、ヘブライ語やアラビア語であれば右から左)。そして、UA は文書内で使用されている文字に応じて適切な方向に表示する双方向アルゴリズムを搭載しているはずです。
そして、bdo要素は、Unicode の双方向アルゴリズムを無効化して強制的にテキストの方向を上書きします。これは例えば、サンプルのようにひとつの文書に書字方向の異なる日本語とヘブライ語が含められていて、ヘブライ語を適切な書字方向で表示するための機能である双方向アルゴリズムによって逆に不正確なプレゼンテーションが行われる場合などに使用します。異なる書字方向が混在する現象を双方向性(bidirectionality)と呼びます。必須属性である dir属性によりその方向を指定します。Safari, Macintosh版Internet Explorer 5 は bdo要素をサポートしていません。
双方向アルゴリズムを無効化して、書字方向を左から右にする "ltr"(left to right)、または右から左にする "rtl"(right to left)のいずれかのキーワードを指定します。HTML4 ではキーワードは半角アルファベットの大文字・小文字が区別されません(case-insensitive)が、XHTML の規格はすべて大文字・小文字を区別する(case-sensitive)ので小文字で記述する必要があります。なお、HTML4 の規格より dir属性は共通属性となったため、bdo要素以外にも多くの要素型に指定することができます。ただし、bdo要素の dir属性とは異なり、他の要素型における dir属性は中立の文(固有の方向性を持たない文)がある場合に、その文字の基本方向を指定するために使うものであるため、Unicode の双方向アルゴリズムを搭載した UA であれば双方向アルゴリズムの方が優先されます。なお、CSS の directionプロパティと unicode-bidiプロパティを組み合わせることで代替も可能です(Netscape, Macintosh版Internet Explorer 5, Safari は unicode-bidiプロパティに対応していません)。
*bdo要素のイベント属性が定義されているのは XHTML1.0 のみです。HTML4.01, XHTML1.1 にはありません。
<p>ヘブライ語で「こんにちは」は、 <bdo dir="ltr" lang="he">םולש</bdo> (シャローム)といいます。</p>
ヘブライ語で「こんにちは」は、םולש(シャローム)といいます。
サンプルのように書字方向の異なる言語が混在しており、ヘブライ語自体が最初から本来の右から左に表記されていると、Unicode の双方向アルゴリズムをもつ UA ではヘブライ語のデータ部分を自動的に逆転して表示してしまいます。つまり、双方向アルゴリズムによって不正確なプレゼンテーションが行われる場合に bdo要素を使うことで双方向アルゴリズムを無効化して、強制的にテキストの方向を上書きすることができます。
http://w3g.jp/xhtml/dic/bdo実績:大阪学院 入試サイト New! / 三田市民病院 / 神戸女学院大学 入試サイト / 釣りサンデー