XML 1.1仕様を参照しています。
の定義を見てくださいNameStartChar
:
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]
これを正しく解釈すると、最後の範囲 ( ) はJava の型のUTF16 範囲#x10000-#xEFFFF
を超えています。だからそれはUTF32でなければなりませんよね?では、単一の sではなく、この範囲に対してのペアをチェックする必要がありますよね?char
char
char
私の質問は次のとおりです。
- 標準の Java メソッドを使用して、このような文字範囲を確認するにはどうすればよいですか?
- JavaCCでそのような範囲を定義するにはどうすればよいですか?
- JavaCC は
\u10000
、\uEFFFF
- JavaCC は
ありがとうございました!
注: 心配しないでください。私は独自の XML パーサーを作成しようとしているわけではありません。
編集: パーサーを作成しています。パーサーは、さまざまな (非 XML) テキスト形式からのテキスト入力が有効な XML 名と一致するかどうかをチェックします。