Xml standalone что это
Что означает «автономная» директива в XML?
Что означает директива ‘ standalone ‘ в документе XML?
ОТВЕТЫ
Ответ 1
Независимо от того, действительно ли ваш парсер это делает, это еще один вопрос, но совместимый с требованиями к стандартам парсер (например, браузер) должен.
Ответ 2
Ответ 3
standalone описывает, зависит ли текущий документ XML от внешнего объявления разметки.
W3C описывает свою цель в «Расширяемый язык разметки (XML) 1.0 (пятое издание)»:
Ответ 4
Объявления разметки могут влиять на содержание документа, прошедшего от процессора XML до выражение; примерами являются атрибуты объявления по умолчанию и сущности. отдельная декларация документа, которая может отображаться как компонент XML декларация, сигналы независимо от того, есть такие заявления, которые внешний вид объекта документа или в объектах параметров. [Определение: Внешняя декларация разметки определенная как объявление разметки возникающих во внешнем подмножестве или в объект параметра (внешний или внутренний, последний включен потому что не проверяющие процессоры не требуется их читать).]
Ответ 5
Цель декларации standalone=yes состоит в том, чтобы гарантировать, что информация внутри документа может быть достоверно извлечена только на основе внутреннего DTD, то есть документ может быть «автономным» без внешних ссылок. Проверка отдельного документа гарантирует, что у не проверяющих процессоров будет вся доступная информация для правильного анализа документа.
Автономное объявление не имеет смысла, если документ не имеет внешнего DTD, а внутреннее DTD не имеет ссылок на объекты параметров, поскольку эти документы уже неявно автономны.
При разборе документа, не объявленного как автономный, не проверяющий процессор может прекратить анализ внутреннего DTD, как только он обнаружит ссылку на объект параметра. Объявление документа как автономного заставляет не проверяющие процессоры анализировать объявления разметки во внутреннем DTD даже после того, как они игнорируют одну или несколько ссылок на сущности параметра.
Вынуждает процессоры проверки выдавать ошибку, если в документе обнаружены какие-либо из следующих признаков, а их соответствующие объявления находятся во внешнем DTD или в тексте замены сущности параметра:
Не проверяющий процессор может рассмотреть извлечение внешнего DTD и расширение всех ссылок на сущности параметров для документов, которые не являются автономными, даже если он не обязан это делать, т.е. установка standalone=yes теоретически может повысить производительность для не проверяющих процессоров ( предупреждение спойлера: это, вероятно, не будет иметь никакого значения).
Другие ответы здесь либо неполные, либо неправильные, основное заблуждение состоит в том, что
standalone = «yes» означает, что процессор XML должен использовать DTD только для проверки.
Скорее наоборот, объявление документа в качестве отдельного фактора фактически заставит не проверяющий процессор анализировать внутренние объявления, которые он обычно должен игнорировать (т.е. после игнорированной ссылки на объект параметра). Не проверяющие процессоры должны по-прежнему использовать информацию во внутреннем DTD для предоставления значений атрибутов по умолчанию и нормализации токенизированных атрибутов, поскольку это не зависит от проверки.
Xml standalone что это
Номер версии в XML-объявлении в начале пролога документа может быть заключен как в одинарные, так и в двойные кавычки. Строки в кавычках в XML-разметке носят название литерал. Таким образом, обе приведенные ниже записи являются допустимыми:
XML-объявление в примере (см. Листинг 3-1) также включает в себя объявление документа автономным (standalone=’yes’). Это объявление может использоваться в некоторых XML-документах с целью упростить обработку документа. (Об объявлении документа автономным будет рассказано в главе 6.)
В рассматриваемом примере имеется комментарий в прологе, а также другой комментарий, следующий за элементом Документ. (Подробнее о комментариях вы узнаете в главе 4.)
В нашем примере имеется одна инструкция по обработке в прологе, а также другая инструкция по обработке в разделе, следующем после элемента Документ. (Об инструкциях по обработке речь пойдет в главе 4.)
Наконец, документ включает в себя sine qua поп (обязательную часть) XML-документа: элемент Документ. Создание элемента Документ и вложенных в него элементов является основным предметом рассмотрения в этой главе.
Примечание. Валидный документ должен содержать один дополнительный компонент, не включенный в листинг рассматриваемого в примере документа: объявление типа документа, которое может быть помещено в любое место внутри пролога, но вне других элементов разметки и после XML-объявления. Объявление типа документа задает структуру валидного XML-документа. (Подробнее об этом вы узнаете в главе 5.)
Наименьший XML-документ
Пролог рассматриваемого XML-документа (см. Листинг 3-1) содержит примеры каждого из разрешенных внутри пролога включений. Заметим, однако, что все эти включения не являются обязательными (хотя в спецификации XML заявлено, что вам «следует» включать XML-объявление). Следовательно, и сам пролог является необязательным, что подтверждается следующим минимальным документом, который содержит только элемент Документ, в соответствии с XML-стандартом для корректно сформированного документа.
Посмотрите, как этот документ будет отображен в Internet Explorer 5.
Добавление элементов в документ
Элементы в XML-документе содержат фактическую информацию, имеющуюся в документе (для Листинга 3-1, например, это названия книг, фамилии авторов, цена и т. д.), а также отражают логическую структуру информации.
xml объявление
Назначение
Считается хорошим тоном начинать XML-документы (а XHTML базируется на XML) с объявления XML (XML declaration). Объявление XML предоставляет важную информацию об основах синтаксиса XML-документа: номер версии языка, а также некоторые дополнительные параметры, например, кодировку документа.
Раздел 2.8 Рекомендации W3C по XML 1.0 в частности гласит:
XML-документы должны начинаться с объявления XML, в котором определяется версия используемого XML.
Синтаксис
Версия
Согласно стандарта XML 1.1, который был утвержден W3C, как рекомендованный, объявление версии документа является обязательным. Любой XML-документ без объявления XML является документом XML 1.0. Кроме этого, версию XML нужно указывать по причине того, что она является очень важной при определении кодировки.
Кодировка
Основной кодировкой XML является Unicode. Самыми распространенными кодировками являются UTF-8 и UTF-16, которые передают символы Unicode, соответственно, как последовательность 8-битных и 16-битных значений. Обе эти кодировки должны поддерживаться парсерами. Если кодировка не задана, обработчик XML подразумевает, что используется кодировка UTF-8 или UTF-16 в зависимости от наличия или отсутствия в самом начале обрабатываемого файла особой последовательности байт (называемой Byte Order Mark или BOM).
При указании кодировки, проверьте, чтобы документ соответствовал заявленной.
Пример объявления XML с указанием кодировки:
Такая форма (с указанием версии XML и кодировки) является минимальным объявлением XML, настоятельно рекомендованным к использованию во всех XML-файлах. Вообще, следует объявлять кодировку в любом случае, даже если она является одной из заданных по умолчанию (UTF-8 или UTF-16).
Standalone (Автономный)
Это объявление указывает, содержит ли внешнее подмножество DTD какие-либо объявления, которые могут повлиять на текущее содержимое документа. Это имеет значение только когда используется DTD.
Рекомендация
Рекомендуется включать объявление XML с указанием кодировки во все XML-документы. Использование такой политики убережет вас от скрытых ошибок, например, с определением кодировки документа.
Подводные камни
Сюрприз от Microsoft — если браузеру IE6 в первой строке не встретился корректный DOCTYPE, браузер переключается в режим обратной совместимости (начинает интерпретировать некоторые свойства CSS по своему, например, по своему интерпретирует блочную модель).
Вывод
XML-объявление — это некий взгляд в будущее. Используя его, вы закладываете фундамент грамотной верстки в будущем. Но будьте внимательны, не забывайте о «сюрпризах» от IE6.
Что означает «автономная» директива в XML?
Что означает директива ‘ standalone ‘ в документе XML?
4 ответа
Другой вопрос, действительно ли это делает ваш синтаксический анализатор, но соответствующий стандартам проверяющий синтаксический анализатор (например, браузер) должен.
Обратите внимание: если вы не укажете DTD, то отдельное объявление «не имеет значения», поэтому нет причин использовать его, если вы также не укажете DTD.
Объявления разметки могут влиять на содержимое документа при передаче от процессора XML к приложению; примерами являются значения атрибутов по умолчанию и объявления сущностей. Объявление автономного документа, которое может появиться как компонент объявления XML, сигнализирует, существуют ли такие объявления, которые кажутся внешними по отношению к объекту документа или в объектах параметров. [Определение: объявление внешней разметки определяется как объявление разметки, встречающееся во внешнем подмножестве или в объекте параметра (внешнем или внутреннем, последний включается, потому что непроверяющие процессоры не обязаны их читать).]
Автономное объявление не имеет смысла, если документ не имеет внешнего DTD, а внутренний DTD не имеет ссылок на сущности параметров, поскольку эти документы уже неявно являются автономными.
При синтаксическом анализе документа, не объявленного как автономный, непроверяющий процессор может остановить синтаксический анализ внутреннего DTD, как только он обнаружит ссылку на объект параметра. Объявление документа автономным заставляет непроверяющие процессоры анализировать объявления разметки во внутреннем DTD даже после того, как они игнорируют одну или несколько ссылок на сущности параметров.
Заставляет проверяющие процессоры выдавать ошибку, если в документе обнаружено одно из следующего, и их соответствующие объявления находятся во внешнем DTD или в тексте замены объекта параметра:
Непроверяющий процессор может рассмотреть возможность получения внешнего DTD и расширения всех ссылок на сущности параметров для документов, которые не являются автономными, даже если он не обязан это делать, т.е. установка standalone=yes теоретически может улучшить производительность для неподтвержденных процессоры (предупреждение о спойлере: это, вероятно, не будет иметь значения).
Остальные ответы здесь либо неполные, либо неверные, главное заблуждение состоит в том, что
standalone = «yes» означает, что процессор XML должен использовать DTD только для проверки.
Напротив, объявление документа как автономного фактически заставит непроверяющий процессор анализировать внутренние объявления, которые он обычно должен игнорировать (то есть те, которые находятся после ссылки на объект игнорируемого параметра). Непроверяющие процессоры должны по-прежнему использовать информацию во внутреннем DTD для предоставления значений атрибутов по умолчанию и нормализации токенизированных атрибутов, поскольку это не зависит от проверки.
standalone описывает, зависит ли текущий XML-документ от объявления внешней разметки.
W3C описывает свою цель в «Расширяемом языке разметки (XML) 1.0 (пятое издание)»:
What does the ‘standalone’ directive mean in XML?
What does the ‘ standalone ‘ directive mean in an XML document?
5 Answers 5
The standalone declaration is a way of telling the parser to ignore any markup declarations in the DTD. The DTD is thereafter used for validation only.
As an example, consider the humble tag. If you look at the XHTML 1.0 DTD, you see a markup declaration telling the parser that tags must be EMPTY and possess src and alt attributes. When a browser is going through an XHTML 1.0 document and finds an tag, it should notice that the DTD requires src and alt attributes and add them if they are not present. It will also self-close the tag since it is supposed to be EMPTY. This is what the XML specification means by «markup declarations can affect the content of the document.» You can then use the standalone declaration to tell the parser to ignore these rules.
Whether or not your parser actually does this is another question, but a standards-compliant validating parser (like a browser) should.
Note that if you do not specify a DTD, then the standalone declaration «has no meaning,» so there’s no reason to use it unless you also specify a DTD.
standalone describes if the current XML document depends on an external markup declaration.
W3C describes its purpose in «Extensible Markup Language (XML) 1.0 (Fifth Edition)»:
The intent of the standalone=yes declaration is to guarantee that the information inside the document can be faithfully retrieved based only on the internal DTD, i.e. the document can «stand alone» with no external references. Validating a standalone document ensures that non-validating processors will have all of the information available to correctly parse the document.
The standalone declaration serves no purpose if a document has no external DTD, and the internal DTD has no parameter entity references, as these documents are already implicitly standalone.
When parsing a document not declared as standalone, a non-validating processor is free to stop parsing the internal DTD as soon as it encounters a parameter entity reference. Declaring a document as standalone forces non-validating processors to parse markup declarations in the internal DTD even after they ignore one or more parameter entity references.
Forces validating processors to throw an error if any of the following are found in the document, and their respective declarations are in the external DTD or in parameter entity replacement text:
A non-validating processor might consider retrieving the external DTD and expanding all parameter entity references for documents that are not standalone, even though it is under no obligation to do so, i.e. setting standalone=yes could theoretically improve performance for non-validating processors (spoiler alert: it probably won’t make a difference).
The other answers here are either incomplete or incorrect, the main misconception is that
The standalone declaration is a way of telling the parser to ignore any markup declarations in the DTD. The DTD is thereafter used for validation only.
standalone=»yes» means that the XML processor must use the DTD for validation only.