HTML5文字実体参照をタブ区切りファイルに変換

概要

  • HTML5で定義されている文字実体参照を、タブ区切りファイル(TSV形式)に変換するサンプルコードを紹介します。
  • HTML5の文字実体参照はHTML Living Standard13.5 Named character referencesで定義されています。このページからダウンロードできる文字実体参照の一覧(JSON形式)を変換元(入力ファイル)として使用します。(以後、「文字実体参照JSONファイル」と表記)
  • サンプルコードは次の環境で動作確認しています。
    OSWindows 10(64ビット)
    IDEMicrosoft Visual Studio Community 2019(16.8.5) + C#(8.0)
  • サンプルの完全なソースコードはこちらで公開しています。
  • 文字実体参照については、こちらをご覧ください。
    NDW

    目次 1 数値文字参照・文字実体参照2 HTML4, HTML5のエスケープ3 HTML4における文字実体参照4 HTM…

サンプルコード

前提とする入出力ファイル仕様

  • 入力ファイル仕様
    想定しているHTML5の文字実体参照JSONファイルのイメージを次に示します。
  • 出力ファイル仕様

    ここで説明するサンプルコードでは、変換した内容をタブ区切りファイルに出力します。
    このファイルに出力する項目は次の通りです。

    項番項目名説明サンプル値
    1No.1から始まる連番376
    2文字実体参照名特定文字を表現するための名称⊃⃒
    3コードポイント(1/2)文字実体参照に対応するコードポイント値。
    文字実体参照が2文字に対応する場合、2文字目のコードポイント値を「コードポイント(1/2)」に出力する。
    8835
    4コードポイント(2/2)8402
    5数値文字参照(10進数)(1/2)文字実体参照に対応する10進数形式の数値文字参照。
    文字実体参照が2文字に対応する場合、2文字目の数値文字参照を「数値文字参照(10進数)(2/2)」に出力する。
    ⊃
    6数値文字参照(10進数)(2/2)⃒
    7数値文字参照(16進数)(1/2)文字実体参照に対応する16進数形式の数値文字参照。
    文字実体参照が2文字に対応する場合、2文字目の数値文字参照を「数値文字参照(16進数)(2/2)」に出力する。
    ⊃
    8数値文字参照(16進数)(2/2)⃒

    出力イメージを次に示します。
    (ここでは見やすいようタブではなく任意長の空白を使用しています。前述のサンプル値をハイライトで表示しています。)

変換サンプルコード(1:N)

文字実体参照JSONファイルを単純にタブ区切りファイルに変換するサンプルコードです。
文字実体参照JSONファイルは、コードポイントに対して複数の文字実体参照が対応(1:N)する場合がありますが、そのままファイルに出力します。

変換サンプルコード(1:1)

前述の「変換サンプルコード(1:N)」と同様にタブ区切りファイルに変換するサンプルコードです。
こちらのサンプルでは、次のルールに従ってコードポイントに対する文字実体参照を1:1に対応させています。

条件候補例優先候補
同じコードポイントで”;”の有無が異なる文字実体参照がある場合、”;”がある文字実体参照を優先する。&LT“, “<<
同じコードポイントで大小文字が異なる文字実体参照がある場合、小文字の文字実体参照を優先する。<“, “<<
同じコードポイントで異なる文字実体参照がある場合、短い方を優先する。 “, “