Я нашел интересную ошибку и хотел знать, что вы думаете. Краткая справка: я написал собственный DTD и пример XML-файла (оба UTF-8). Теперь я реализовал парсер SAX в Java, который я хочу протестировать. Я получил SAXException с жалобой «В открытом идентификаторе был обнаружен недопустимый символ XML (Unicode: 0x7e)». Теперь URL моего DTD содержит символ тильды (юникод 0x7e). Если я переместу файл DTD на другой URL, который не содержит тильду, то мой пример XML-файла анализируется без возникновения SAXException.
Итак, у меня есть обходной путь для этой проблемы, но мне интересно знать: почему это происходит? Это ошибка? Если да, то с UTF-8, Java (1.6.0_18 x86), Windows (Server 2008 R2 x86_64) или как? Или это один из тех маленьких неясных нюансов спецификации XML 1.0?