Відповіді:
standalone
Декларація являє собою спосіб сказати парсер ігнорувати будь-які оголошення розмітки в DTD . Згодом DTD використовується лише для перевірки.
Як приклад, розглянемо скромний <img>
тег. Якщо ви подивитеся на XHTML 1.0 DTD , ви побачите декларацію розмітки, яка повідомляє аналізатору, що <img>
теги повинні бути EMPTY, а також володіти src
та alt
атрибутами. Коли браузер переглядає документ XHTML 1.0 і знаходить <img>
тег, він повинен помітити, що DTD вимагає src
і alt
атрибутів, і додавати їх, якщо їх немає. Він також самостійно закриє <img>
тег, оскільки він повинен бути ВИПУСКОВО. Це те, що специфікація XML означає "декларації розмітки можуть впливати на зміст документа". Потім ви можете використовувати standalone
декларацію, щоб сказати аналізатору ігнорувати ці правила.
Чи справді це робить ваш парсер чи ні, це вже інше питання, але стандартний валідаційний аналізатор (як браузер) повинен відповідати стандартам.
Зауважте, що якщо ви не вказуєте DTD, то окрема декларація "не має значення", тому немає ніяких причин використовувати її, якщо ви також не вказали DTD.
standalone=yes
, декларації розмітки не ігноруються, натомість вони призводять до недійсного XML документа. Чи не заперечуєте, якщо я відредагую це у відповідь?
yes
і no
, де no
це значення за замовчуванням.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 = "так" означає, що процесор XML повинен використовувати DTD лише для перевірки.
Зовсім навпаки, оголошення документа як автономного фактично змусить недійсний процесор аналізувати внутрішні декларації, які він зазвичай повинен ігнорувати (тобто ті, які мають після ігнорування посилання на сутність параметра). Процесори, що не підтверджують, все ще повинні використовувати інформацію у внутрішньому DTD для надання значень атрибутів за замовчуванням та нормалізації акетонів, що мають означення, оскільки це не залежить від перевірки.