Кратко
- RFC 3151 нормализовал строку публичного идентификатора и детерминированно переносил пробелы, структурные разделители и буквальные зарезервированные символы в
urn:publicid:; правильная транскрипция не проверяла владельца или ресурс. - Эквивалентность оставалась лексической: после нормализации две URN были эквивалентны только при полном совпадении. Одинаковое имя могло встретить разные каталоги, байты и результаты.
- Разрешение оставалось контекстным — каталог, локальный путь, встроенное знание или кэш — поэтому выбор, отображение, получение, разбор и эффект нуждались в отдельных квитанциях.
Переносилось имя, а не местоположение
У внешней сущности XML были системный и публичный идентификаторы. Первый по определению являлся URI и часто обозначал локальное место. Второй был строкой из практики SGML и служил более глобальным, постоянным именем.
Когда новые спецификации потребовали URI, старые строки не вошли в интерфейс. RFC 3151 не отменил установленные каталоги, а создал формальное пространство publicid для записи имени как URN.
Форма URI могла выглядеть как повышение авторитета. Но уникальность и постоянство наследовались от исходного имени. Незарегистрированный владелец не регистрировался от префикса, слабая политика не исправлялась.
RFC был Informational и не задавал Internet Standard. Примеры назывались педагогическими, без гарантии реальности. Они показывали правило, но не развёртывание или достижимый ресурс.
Нормализация стирала след ради сравнения
До транскрипции серии пробелов, табуляций, возвратов и переводов строки превращались в один пробел, края очищались. Разные отступы могли дать одно имя.
Потеря была намеренной и необратимой, если осталась лишь URN. Следовало хранить исходную строку, кодировку, нормализованный результат и версию правила.
Пробел становился +, а буквальный плюс — %2B. Поскольку серии схлопывались заранее, соседние плюсы не должны были появляться из пробелов. Формы свидетельствовали о разных исходных символах.
Правдоподобный результат не доказывал порядок обработки. Квитанция требовала промежуточных состояний.
Контуры структуры не были сертификатом
Formal Public Identifiers обычно содержали владельца, класс, описание, язык и иногда версию. // разделял поля, а :: мог появляться внутри.
RFC 3151 превращал // в :, а :: в ;, сохраняя вид структуры без полного SGML-парсера. Проверка FPI не входила в алгоритм.
Двоеточие доказывало двойной слеш в нормализованном источнике, но не регистрацию владельца или корректность полей.
Литеральное двоеточие становилось %3A, одиночный слеш %2F, точка с запятой %3B; апостроф, вопрос, решётка и процент также экранировались. Позиция и порядок замен были частью доказательства.
Round-trip подтверждал сохранность нормализованного имени, не назначение и не разрешение.
Совпадение текста не означало совпадение ресурса
После нормализации две URN были эквивалентны тогда и только тогда, когда лексически идентичны. Не было смены регистра, псевдонимов владельца или семантического сравнения.
Локальный каталог мог вести два имени к файлу, не делая имена равными. Одна URN могла пройти разные цепочки каталогов, базовые URI, файловые системы и кэши.
Один ресурс мог иметь несколько публичных идентификаторов. Равенство имени, отображения, байтов и поведения были четырьмя проверками. Поздние RFC о URI/URN не расширяли правило 3151 задним числом.
Слабость владельца тоже наследовалась
FPI с зарегистрированным владельцем должны были быть уникальны. Неформальные имена и незарегистрированные владельцы могли столкнуться; единой политики принуждения не было.
Постоянство также приходило от источника. Регистрация давала лучшую основу, но не гарантировала каталог или содержание. Схема IDN на доменном имени наследовала слабости доменов.
urn:publicid: не ремонтировал выдачу, не поддерживал сервис и не замораживал представление. Ресурс без публичного идентификатора сначала получал его по исходным правилам, затем применялась транскрипция.
Нужно сохранять владельца, регистрацию, политику, время и контекст, а не выводить авторитет из формы.
Разрешение осталось локальной цепочкой решений
Документ называл каталоги OASIS, преобразование в локальные пути, встроенные таблицы и кэши. Единого мирового resolver он не задавал.
Порядок каталогов, rewrite, база, mount, сеть и возраст кэша выбирали цель. Совпадение правила подтверждало выбор, не чтение.
Затем требовались байты и хэш, парсер и entity-policy, диагностика и результат приложения. resolved=true скрывал цепочку.
Механизм валидации не задавался. Отсутствие дополнительных security considerations не аутентифицировало владельца, каталог, кэш или содержимое. Точный encoder мог точно привести к старому файлу.
Работающий код исправлял вывод из идеального имени
Идеальная URN может найти старую локальную DTD. Правило, открытие и parsing успешны, но приложение использует неверную версию. Другая машина выберет по тому же имени иные байты.
Таблица RFC авторитетна для транскрипции. Исполнение показывает resolver, правило, байты и эффект. У каждого уровня своя квитанция.
Историческое достижение было точно ограничено: старое имя вошло в архитектуру URI, не выдавая себя за адрес. Перенос идентичности не завершал разрешение.
Источники
- Текст RFC 3151
- Карточка RFC 3151
- RFC 3151 в HTML
- История RFC 3151
- RFC 2141 — синтаксис URN
- RFC 2396 — синтаксис URI
- RFC 2483 — сервисы разрешения
- RFC 3406 — определение пространств URN
- RFC 3986 — синтаксис URI
- RFC 8141 — URN
- XML 1.0 Second Edition
- OASIS XML Catalogs 1.0
- Формальные пространства URN IANA
- Первенство работающего кода
- О слоях реальности
- Минимальная исходная спецификация
Обзор для участников
Подробный контекст профиля
Войдите с подходящим уровнем подписки, чтобы открыть полный обзор и примечания к источникам.
Только для Стратегического сообщества
Стратегическое сообщество
Открыто всем читателям. Вступите и войдите, чтобы открыть обзоры профилей.
Вступить в Стратегическое сообществоТолько для Альянса лидеров
Альянс лидеров
Для проверенных владельцев IP-активов и руководителей. Войдите, чтобы открыть обзоры Альянса.
Вступить в Альянс лидеров
