このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

名前

名前は難しい。

  1. タグ名 -- 先頭数字許す Nmtoken
  2. パスセグメント -- 非負整数表現を許したい、ピリオドはダメ、「2a」とかは?
  3. 変数名 -- 先頭数字と先頭ハイフンはダメ、ハイフン許したい
  4. コマンド名 -- 先頭数字と先頭ハイフンはダメだろう、ハイフン許している
  5. 型名 -- コマンド名となんか違うのか、ハイフン許したい
  6. オプション名 -- 先頭数字許したい。先頭ハイフンはダメ、ハイフン許している
  7. モジュール名 -- 型名と同じかな
  8. パッケージ名 -- 型名と同じかな
  9. 外部(Web)から見えるファイル名 -- 先頭ピリオドと先頭アンダスコアはダメだろう

名前と文字の関係

  1. '-' -- 特別な意味はないが禁止している
  2. '=' -- 左に同じ
  3. '○' -- 許す
  4. WSC -- Word Start Char
  5. WC -- Word Char
文字 XJSONパス XJSON スクリプト スキーマ WSC WC
0x21 ! - - - -
0x22 " 文字列 文字列 = =
0x23 # 数値ワイルド - ハッシュ記法'#(' -
0x24 $ ルート - when条件 -
0x25 % - - 変数 -
0x26 & - - ANDパイプ'|&' AND演算
0x27 ' - - - -
0x28 ( - - グルーピング グルーピング
0x29 ) - - グルーピング グルーピング
0x2a * 文字列ワイルド - - クリーネスタ
0x2b + - - - Rマージ++
0x2c , - 区切り = =
0x2d - - - 特殊な名前 -
0x2e . - - - -
0x2f / - - - -
0x3? 数字 インデックス 数値 = =
0x3a : - 区切り = =, '::'
0x3b ; - - voidパイプ 終端
0x3c < - - - 括弧
0x3d = - - 代入 代入
0x3e > - - リダイレクト 括弧
0x3f ? - - - オプション
0x40 @ 予約 タグ = =, '@['
0x5b [ 括弧 括弧 = =
0x5c \ - - - -
0x5d ] 括弧 括弧 = =
0x5e ^ 予約 - - -
0x5f _ - - - -
0x60 ` - - - -
0x7b { - 括弧 = =
0x7c | = = パイプ ユニオン
0x7d } - 括弧 = =
0x7e ~ - - - -
  • ワード列を終端させる記号: ')', '}', ']', ';' |', '|&' '||', ','
  • ワード列中でエラーとなる記号:'(', '{', '[', '<', '>', "'", '"', '%', '&', '*', '?', '\'

名前の定義を http://www.w3.org/TR/2008/REC-xml-20081126/#NT-Name より:


Name ::= NameStartChar (NameChar)*

NameStartChar ::= ":" | [A-Z] | "_" | [a-z] |
[#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] |
[#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] |
[#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] |
[#xFDF0-#xFFFD] | [#x10000-#xEFFFF]

NameChar ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]

Nmtoken ::= (NameChar)+

これを参考にすると:


I18NNameChar :: = [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] |
[#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] |
[#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] |
[#xFDF0-#xFFFD] | [#x10000-#xEFFFF]


Name ::= NameStartChar (NameChar)*

NameStartChar ::= [A-Z] | "_" | [a-z] | I18NNameChar

NameChar ::= NameStartChar | "-" | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]

Nmtoken ::= (NameChar)+

とか?