проверка пространства имен в строке XML или URI? - PullRequest
3 голосов
/ 19 апреля 2009

Мне всегда было интересно, как синтаксический анализатор XML обрабатывает проверку пространства имен URI. это на основе строк или на основе URI? другими словами, это стандартный URI для SVG

xmlns="http://www.w3.org/2000/svg"

предположим, что я пишу вместо

xmlns="http://www.w3.org/2000/../2000/svg"

или

xmlns="http://www.w3.org/2000/svg/"

или даже

xmlns="http://www.w3.org:8000/2000/svg"

Будут ли эти случаи распознаваться как пространства имен SVG (на основе URI) или нет (на основе строк)?

Спасибо

Редактировать : тот факт, что вы можете использовать URN (например, uuid), заставляет меня чувствовать, что он основан на строках, потому что вы не можете применить надлежащие соображения URL / URI к URL-подобному URI. Но, может быть, в этом случае он будет работать как строка?

Редактировать : Как указывает Тормод, это делается с помощью сравнения строк. Это заставляет меня задуматься, есть ли рекомендации по определению URI (например, без косой черты в конце, все строчные буквы и т. Д.). Или это просто для всех?

1 Ответ

6 голосов
/ 19 апреля 2009

Они основаны на строках. Все ваши примеры URI разрешаются в разных пространствах имен.

http://www.w3.org/TR/REC-xml-names/#NSNameComparison

Ссылки URI, идентифицирующие пространства имен, сравниваются при определении, принадлежит ли имя данному пространству имен и принадлежат ли два имени одному и тому же пространству имен. [Определение: два URI обрабатываются как строки, и они идентичны тогда и только тогда, когда строки идентичны, то есть, если они представляют собой одинаковую последовательность символов. ] Сравнение учитывает регистр, и% -экранирование не выполняется и не отменяется.

...