EscapedData := (<[U+0000〜U+10FFFF]> − <[()^]>) / "^(" / "^)" / "^^" / "(" *EscapedData ")" ;; <https://www.w3.org/TR/xptr-framework/#NT-EscapedData>
[2] 意味はご想像の通り。丸括弧はついになってるときは escape しなくてかまいません。
[3] 面白いことに、 U+0000
〜U+10FFFF
まで一切制限なしの大安売りですよ。すごいなー。
[4] U+0000
は NULL
で文字列末端だと思ってる C 系の処理系君とかサロゲート・ペアがあると怒ってしまう処理系君とか内部目的に U+FFFF 使ってる人とか(略)に楽しいデータを与えたら楽しいことになりそうな。規格適合のデータくらい正しく扱えるようにしてくださいねー。 Unicode マンセー!! (藁
[5] しかもですよ、 IRI の説明 <http://www.w3.org/TR/xptr-framework/#dt-iri> のところに、「指示子を IRI で使うときには、 %
はそらー escape しないとあかんけど、他の文字も escape してもいい。だけどするべきでないよ!」なんて書いてあります。そりゃあ U+0000 なんて指示子中に使う人は普通はいないでしょうけど、かといってそれを容認しちゃうのはどうかしてると思いません?
[6] 素片識別子として使われることが想定されていたはずの XPointer、
なんでわざわざ escape 用の文字として URL 中でそのままでは使えない
^
を選んだんだろう。