メインコンテンツまでスキップ

6. Serializing Origins (生成元のシリアライズ)

6. Serializing Origins (生成元のシリアライズ)

このセクションでは, 生成元 (origin) をUnicode [Unicode6] 文字列とASCII [RFC20] 文字列にシリアライズする方法を定義します。

6.1 Unicode Serialization of an Origin (生成元のUnicodeシリアライズ)

生成元のUnicodeシリアライズ (unicode-serialization) は, 次のアルゴリズムによって返される値です:

  1. 生成元がスキーム/ホスト/ポート (scheme/host/port) 3つ組でない場合, 文字列を返します

    null

    (つまり, コードポイントシーケンス U+006E, U+0075, U+006C, U+006C) これらのステップを中止します。

  2. それ以外の場合, result を生成元3つ組のスキーム (scheme) 部分とします。

  3. 文字列 "://" を result に追加します。

  4. 生成元3つ組のホスト (host) 部分の各コンポーネント (次のように変換) を result に追加します, U+002E FULL STOP コードポイント (".") で区切ります:

    1. コンポーネントがAラベル (A-label) の場合, 代わりに対応するUラベル (U-label) を使用します ([RFC5890] および [RFC5891] を参照)。

    2. それ以外の場合, コンポーネントをそのまま使用します。

  5. 生成元3つ組のポート (port) 部分が, 生成元3つ組のスキーム部分で指定されたプロトコルのデフォルトポートと異なる場合:

    1. U+003A COLON コードポイント (":") と指定されたポート (10進数) を result に追加します。
  6. result を返します。

6.2 ASCII Serialization of an Origin (生成元のASCIIシリアライズ)

生成元のASCIIシリアライズ (ascii-serialization) は, 次のアルゴリズムによって返される値です:

  1. 生成元がスキーム/ホスト/ポート (scheme/host/port) 3つ組でない場合, 文字列を返します

    null

    (つまり, コードポイントシーケンス U+006E, U+0075, U+006C, U+006C) これらのステップを中止します。

  2. それ以外の場合, result を生成元3つ組のスキーム (scheme) 部分とします。

  3. 文字列 "://" を result に追加します。

  4. 生成元3つ組のホスト (host) 部分を result に追加します。

  5. 生成元3つ組のポート (port) 部分が, 生成元3つ組のスキーム部分で指定されたプロトコルのデフォルトポートと異なる場合:

    1. U+003A COLON コードポイント (":") と指定されたポート (10進数) を result に追加します。
  6. result を返します。