名前
名前は難しい。
- タグ名 -- 先頭数字許す Nmtoken
- パスセグメント -- 非負整数表現を許したい、ピリオドはダメ、「2a」とかは?
- 変数名 -- 先頭数字と先頭ハイフンはダメ、ハイフン許したい
- コマンド名 -- 先頭数字と先頭ハイフンはダメだろう、ハイフン許している
- 型名 -- コマンド名となんか違うのか、ハイフン許したい
- オプション名 -- 先頭数字許したい。先頭ハイフンはダメ、ハイフン許している
- モジュール名 -- 型名と同じかな
- パッケージ名 -- 型名と同じかな
- 外部(Web)から見えるファイル名 -- 先頭ピリオドと先頭アンダスコアはダメだろう
名前と文字の関係
- '-' -- 特別な意味はないが禁止している
- '=' -- 左に同じ
- '○' -- 許す
- WSC -- Word Start Char
- 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)+
とか?