Почему объявление XML начинается с «<? Xml» вместо «<! Xml»? - PullRequest
1 голос
/ 18 июля 2011

Я думал, что XML является приложением SGML, и что синтаксис по умолчанию для объявления SGML начинается с "<!" разделитель.

Исходя из этого понимания, я не понимаю, как получается "<?".

Кто-нибудь, пожалуйста, cxplain?Спасибо.

1 Ответ

4 голосов
/ 18 июля 2011

<! начинает объявление DOCTYPE, а <? начинает инструкцию обработки. Инструкция обработки <?xml определяется стандартом, чтобы указать, что ниже следует XML, указать версию XML и кодировку текста. Он не имеет никакого отношения к фактической структуре документа, как это делает декларация DOCTYPE. Я не уверен, почему объявление DOCTYPE указано иначе, чем инструкция обработки, но многие (может быть, большинство) XML-документов в наши дни имеют свою структуру, определенную XML-схемой или RelaxNG, а из DOCTYPE можно ссылаться только на DTD. Есть и другие способы использования инструкций по обработке; в основном они были представлены, чтобы предоставить поставщикам боковой вход для их собственных функций. Вероятно, второе наиболее распространенное использование - это ссылки на таблицы стилей XSLT или CSS.

XML изначально задумывался как упрощенное подмножество SGML, но с тех пор он стал намного более другим. На самом деле было бы несправедливо говорить, что XML "является" SGML в каком-либо смысле, просто потому, что они связаны историей и генеалогией.

...