Broadcast Markup Language

Broadcast Markup Language (BML) とは、XMLベースのデータ放送向けの記述言語でARIB（社団法人電波産業会）によって策定されている。
BSデジタル放送、110度CSデジタル放送、地上デジタル放送で使用されている。
それぞれ対応の受信機には、BMLを表示、実行する「BMLブラウザ」が搭載されている。
XHTMLをベースに、デジタル放送に向いた拡張が盛り込まれている。
地上デジタル放送の場合、Aプロファイル、B プロファイル、C プロファイルと3種類のプロファイルがあり、A プロファイルは固定型テレビ用のデータ放送。C プロファイルはワンセグ向け放送用のデータ放送規格として規格化されている。B プロファイルは移動受信向けのデータ放送規格だが、規格化は未定となっている。
これは車載向け3セグメント放送が（主にアンテナ技術の向上により）普通の家庭向け13セグメント放送で高感度受信できるメドが立ち、規格化の必要性がほぼなくなってしまったことによる。
実装.
BMLは通常、BMLの仕様（ARIB STD-B24）によってサブセット化されたXHTML（これをBML文書と呼ぶ）とJavaScriptを標準化したECMAScript、PNG（静止画及び動画:MNGに対応。8bit index colorのみ）、JPEG（プロファイルはARIB STD-B24で規定される）、MPEG(MPEG1,MPEG2)、MPEG Audio、バイナリーテーブル（ECMAScript上でスキーマを定義してES上から抽出できるデータセットの一種）のセットによって構成される（これをマルチメディアコンテンツと呼び、構成要素をモノメディアと呼ぶ）。ECMAScriptによりDHTML的な動的コンテンツ作成が可能である。さらにイベントと呼ばれるメカニズムによりES(Elementary Stream)上の変化を検出し、放送局側からコンテンツに動きを与える事が出来る。例えば、相撲の中継において勝敗表をテレビ局側から送出システムに入力すると直ちに受信機にイベントが発生し、ECMAScriptによってBML文書のDOMツリー上のデータを書き換える事でリアルタイムに情報を反映する事が出来る（これらのイベントドリブン的なデータ伝送にはもっぱらバイナリーテーブルが使われる）。この他、ECMAScriptには受信機側から電話回線（BASIC手順）・LAN(TCP/IP)によって放送局側へデータを伝達する機構（双方向機能/双方向通信機能）がある。こちらはプライバシーの問題や費用が視聴者・局側両方に発生する事から、それほど普及していない。B-XMLは、よりXMLとしての使い方を追求したARIB STD-B24で規定される異なる仕様だが、現在運用されていない。
セキュリティ.
BMLにはいくつかのセキュリティが施されている。これはECMAScriptによって受信機から個人情報等を読み取る事が可能である事、双方向通信によって読み出した個人情報等を第三者に送りつける事が可能である為である。まず第一のセキュリティは放送設備によって実現している。許可されない者が許可されていないコンテンツを送らない様に保護している。しかしながらこれは放送局のセキュリティポリシーによって実現している為完全ではない。第二のセキュリティは放送局識別情報によって行われる。ある放送波によって書き込まれた情報は、他の放送波によって送りつけられたECMAScriptから読み取る事が出来ない。これにより他局の情報を回収するといった行為が禁止される。第三のセキュリティはB-CASカードによって実現している。B-CASカードに書き込まれるデータは暗号化される。したがって復号鍵が無い状態でデータを読み込む事は出来ない。より強固なセキュリティの提案もあったが、むしろ重要な情報を受信機にむやみに書き込まないというポリシーの方が現実的であった為、現在受信機に保存されている個人情報等は必要最小限にとどめ、デジタル放送初期にみられた完全な個人情報の記録は、ポリシー制定合意に伴い削除された。なお、受信機に使われるメモリはフラッシュメモリが使われておりウェアレベリングによってデータ書き込み先の分散が行われている。その為、ECMAScript上から削除されても、物理的には記録が残っている可能性がある。その為、受信機には、個人情報が保存されている可能性がある注意書きが添えられている。
文字コード.
BMLではJIS X 0208の空き領域に独自の漢字や記号類を追加した文字集合を使用する。エンコーディングはBML宣言で宣言される。ワンセグのデータ放送ではShift_JISエンコーディングが採用されている。
隠し機能.
ARIB STD-B24の定めには、BMLブラウザのバージョンを判定する方法は定義されていない。しかしながら、受信機の世代によって対応するSTD-B24の版が異なり、実装に差異が存在する。またメーカーによってBMLブラウザやECMAScriptエンジンのミドルウエア製造元が異なり、たとえばソニーと松下ではかなり大きな実装の差が見受けられる。そこで受信機メーカーはARIBに無断でBMLブラウザの製造元とバージョンを判別する方法を定義した。それは受信機メモリの残り容量を返す関数が実装上無意味なのを利用して、残り容量を取得する関数を呼び出すと、受信機メーカー・受信機の製造日・BMLブラウザのバージョン・ECMAScriptエンジンのバージョンを示すマジックナンバーが返されるようにした。BMLコンテンツはこのマジックナンバーを判別することにより、受信機によって異なる振る舞いを回避し、すべての受信機で同じように振舞うコンテンツの製作を可能にしている。しかしながらこの実装はARIBの標準化委員会の意向を無視し、受信機メーカー側が勝手に結託してデファクトスタンダードを作った事から、標準化委員会の間ではこれを問題視する委員もいる。