Что означает директива "standalone" в XML?
что значит 'standalone
' директива означает в XML-документе?
5 ответов
на standalone
объявление-Это способ сказать парсеру игнорировать любые объявления разметки в DTD. После этого DTD используется только для проверки.
в качестве примера, рассмотрим скромный <img>
тег. Если вы посмотрите на В XHTML 1.0 ДТД, вы видите объявление разметки, сообщающее синтаксическому анализатору, что <img>
теги должны быть пустыми и обладают src
и alt
атрибуты. Когда браузер проходит через документ XHTML 1.0 и находит <img>
тег, он должен заметить, что DTD требует src
и alt
атрибуты и добавьте их, если они не присутствуют. Он также самостоятельно закроет <img>
тег, так как он должен быть пустым. Это спецификация XML означает, что " объявления разметки могут влиять на содержимое документа."Тогда вы можете использовать standalone
объявление, чтобы сообщить синтаксическому анализатору игнорировать эти правила.
действительно ли ваш парсер делает это, это другой вопрос, но совместимый со стандартами проверяющий парсер (например, браузер) должен.
обратите внимание, что если вы не указываете DTD, то автономное объявление "не имеет значения", поэтому нет причин использовать его, если вы также не укажете DTD.
- автономная директива является необязательным атрибутом объявления XML.
- допустимые значения:
yes
иno
, гдеno
значение по умолчанию. - атрибут имеет значение только при DTD это. (Атрибут не имеет значения при использовании - схемы вместо DTD.)
-
standalone="yes"
означает, что XML-процессор должен использовать DTD только для проверки. в этом случае он будет не использоваться для:- значения по умолчанию для атрибутов
- сущность заявления
- нормализация
- отметим, что
standalone="yes"
может добавить ограничения действительности, если документ использует внешний DTD. Когда документ содержит вещи, которые потребуют изменения XML, такие как значения по умолчанию для атрибутов иstandalone="yes"
используется тогда документ недействителен. -
standalone="yes"
может помочь оптимизация производительности обработки документов.
источник: автономный псевдо-атрибут актуален только в том случае, если используется DTD
standalone
описывает, зависит ли текущий XML-документ от объявления внешней разметки.
W3C описывает свое назначение в " расширяемом языке разметки (XML) 1.0 (пятое издание)":
объявления разметки могут повлиять на содержание документа, как передано от процессора XML к применение; примеры атрибут значения по умолчанию и объявления сущностей. Этот автономное объявление документа, которое может появиться в качестве компонента в XML объявление, сигналы ли или не есть такие заявления, которые появляются внешние сущности документа или в объектах параметров. [Определение: Объявление внешней разметки определенными в качестве разметки декларация происходящие во внешнем подмножестве или в объект параметра (внешний или внутреннее, последнее будучи включенным поскольку недопустимые процессоры не обязательно их читать).]
намерение standalone=yes
декларация должна гарантировать, что информация внутри документа может быть точно восстановлена только на основе внутреннего DTD, т. е. документ может "стоять отдельно" без внешних ссылок. Проверка автономного документа гарантирует, что не проверяющие процессоры будут иметь всю информацию, доступную для правильного анализа документа.
автономное объявление не служит никакой цели если документ не имеет никакое внешнее DTD, и внутреннее DTD не имеет ссылок на сущности параметров, поскольку эти документы уже неявно автономны.
ниже приведены фактические эффекты использования standalone=yes
.
заставляет процессоры выдавать ошибку при разборе документов с внешним DTD или параметром ссылки на сущности, если документ содержит ссылки на сущности, не объявленные во внутреннем DTD (за исключением замены текста параметра сущностями, поскольку не проверяющие процессоры не являются требуется разобрать это);
amp
,lt
,gt
,apos
иquot
исключениепри разборе документа, не объявленного как автономный, не-проверяющий процессор может прекратить разбор внутреннего DTD, как только он встречает ссылку на объект параметра. Объявление документа как автономного заставляет не проверяющие процессоры анализировать объявления разметки во внутреннем DTD даже после того, как они игнорируют один или несколько объектов параметров ссылки на литературу.
-
заставляет проверяющие процессоры выдавать ошибку, если в документе найдено любое из следующего, и их соответствующие объявления находятся во внешнем DTD или в тексте замены сущности параметра:
- атрибуты со значениями по умолчанию, если их значение не указано явно
- ссылки на сущности (кроме
amp
,lt
,gt
,apos
иquot
) - атрибуты типы маркера, если значение атрибута будет изменено нормализации
- элементы с содержимым элемента, если в их содержимом имеется пробел
недопустимый процессор может рассмотреть возможность извлечения внешнего DTD и расширения всех ссылок на сущности параметров для документов, которые не являются автономными, даже если он не обязан это делать, т. е. установка standalone=yes
теоретически может улучшить производительность недопустимые процессоры (предупреждение спойлера: это, вероятно, не будет иметь значения).
другие ответы здесь либо неполные, либо неправильные, основное заблуждение заключается в том, что
автономное объявление-Это способ сказать синтаксическому анализатору игнорировать любые объявления разметки в DTD. После этого DTD используется только для проверки.
standalone= " yes " означает, что XML-процессор должен использовать DTD для только проверка.
совсем наоборот, объявление документа как автономного фактически заставит недействительный процессор анализировать внутренние объявления, которые он должен обычно игнорировать (т. е. после ссылки на объект игнорируемого параметра). Не проверяющие процессоры должны по-прежнему использовать информацию во внутреннем DTD для предоставления значений атрибутов по умолчанию и нормализации маркированных атрибутов, поскольку это не зависит от проверки.