Защо една XML декларация започва с ‹?xml вместо ‹!xml?

Мислех, че XML е приложение на SGML и че синтаксисът по подразбиране за SGML декларация започва с разделител "<!".

Въз основа на това разбиране не ми е ясно как възниква "<?".

Моля, някой би ли обяснил? Благодаря ти.


person Otosaat    schedule 18.07.2011    source източник
comment
Защо е трудно да се отговори на въпроси. Зависи дали имате предвид (а) като историческа информация записват ли протоколите защо комисията е взела това решение? или (б) можете ли да се сетите за някаква основателна причина, поради която един рационален човек би сметнал, че това е добра идея? Не са едно и също...   -  person Michael Kay    schedule 18.07.2011


Отговори (1)


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

Първоначално XML е замислен като опростено подмножество на SGML, но оттогава е станал много по-различен. Не би било наистина честно да се каже, че XML „е“ вече SGML в никакъв смисъл, само че те са свързани по история и генеалогия.

person Daniel Lyons    schedule 18.07.2011
comment
Даниел, благодаря ти много за полезното обяснение. По-конкретно, високо оценявам вашето позоваване на термина инструкция за обработка. Намерих следните две полезни връзки, за да науча повече за това: is-thought.co.uk/book/sgml-8.htm#PI en. wikipedia.org/wiki/Processing_Instruction - person Otosaat; 18.07.2011
comment
Бих казал, че DOCTYPE декларациите и XML декларациите са доста различни неща. Не е странно, че са посочени по различен начин. - person mzjn; 18.07.2011
comment
Даниел: Съжалявам за неправилното изписване на името ви по-горе. :( - person Otosaat; 18.07.2011
comment
@mzjn - моята гледна точка е само, че е интересно, че има два извънлентови механизма, един с общо и един със специално предназначение, където може да има един вместо него. Сигурен съм, че има причини. - person Daniel Lyons; 18.07.2011