Я имею в виду спецификацию 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]
Если я правильно интерпретирую это, последний диапазон (#x10000-#xEFFFF
) выходит за пределы UTF16 диапазона типа Java char
. Значит, это должно быть UTF32 , верно? Итак, мне нужно проверить пары char
по этому диапазону, а не одиночные char
с, верно?
Мои вопросы:
- Как проверить наличие таких диапазонов символов с помощью стандартных методов Java?
- Как можно определить такие диапазоны в JavaCC?
- JavaCC жалуется на
\u10000
и \uEFFFF
Спасибо!
ПРИМЕЧАНИЕ: Не волнуйтесь, я не пытаюсь написать собственный XML-парсер.
РЕДАКТИРОВАТЬ: Я пишу парсер, который будет проверять, будет ли ввод текста из разных (не XML) текстовых форматов соответствовать действительные имена XML.