Я думал, что XML — это приложение SGML, и что синтаксис объявления SGML по умолчанию начинается с разделителя "<!"
.
Основываясь на этом понимании, я не понимаю, как возникает "<?"
.
Кто-нибудь, пожалуйста, объясните? Спасибо.
Я думал, что XML — это приложение SGML, и что синтаксис объявления SGML по умолчанию начинается с разделителя "<!"
.
Основываясь на этом понимании, я не понимаю, как возникает "<?"
.
Кто-нибудь, пожалуйста, объясните? Спасибо.
<!
начинает объявление DOCTYPE, а <?
начинает инструкцию обработки. Инструкция обработки <?xml
определяется стандартом, чтобы указать, что далее следует XML, указать версию XML и кодировку текста. Он не имеет никакого отношения к фактической структуре документа, как это было бы с объявлением DOCTYPE. Я не уверен, почему объявление DOCTYPE указывается иначе, чем инструкция по обработке, но многие (возможно, большинство) XML-документов в наши дни имеют свою структуру, определенную схемой XML или RelaxNG, и только DTD можно ссылаться из DOCTYPE. Существуют и другие способы использования инструкций обработки; в основном они были введены, чтобы предоставить продавцам боковой вход для их собственных функций. Вероятно, второе наиболее распространенное использование — это ссылка на таблицы стилей XSLT или CSS.
Первоначально XML задумывался как упрощенное подмножество SGML, но с тех пор он сильно изменился. Было бы несправедливо говорить, что XML «является» SGML в каком-либо смысле, просто они связаны историей и генеалогией.
DOCTYPE
и объявления XML — это совершенно разные вещи. Не странно, что они указаны по-разному.
- person mzjn; 18.07.2011