2009-05-05 7 views
6

Как я понимаю, XML - это подмножество SGML, предназначенное для упрощения его и поощряющее более широкое использование.Есть ли какие-либо причины использовать SGML вместо XML?

Я полагаю, что большинство полезных функций было внесено в XML, но есть ли какие-либо возможности в SGML, достаточно мощные, чтобы мотивировать его использование вместо XML (и принять накладные расходы по сложности)?

ответ

8

Одним из преимуществ SGML, если вы редактируете его вручную, является то, что вы можете аббревиатура тегов различными способами. То, что вы можете сделать, зависит от объявления SGML для используемого DTD. Например, в DocBook вы можете писать такие вещи, как < literal> foo < />. В HTML вы можете опустить теги конца, поэтому вы можете написать < p> foo ... < p> bar, не закрывая теги. Или вы можете вообще опустить теги, поэтому < body> является необязательным в HTML.

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

Что касается обработки, обе формы эквивалентны, потому что вы можете конвертировать туда и обратно, за исключением некоторых угловых случаев.

+0

Nrrgh, нужна кнопка +2 ...! (+1 за отличное объяснение, +1 за потрясающие мелочи!) – pinkgothic

1

Невозможно ответить, если у вас нет конкретного приложения. Вы можете улучшить индексирование и поиск с помощью SGML, но я не нашел случая, когда это лучший вариант, чем XML. Я уверен, что они там, я просто их не нашел.

Коэффициент выигрыша - это зрелость рендеринга на нескольких платформах XML. Для SGML такой же совместимости не существует. Однако, если вы можете контролировать среду, это не может быть фактором. Кажется, что XML обеспечивает 90% функциональности для гораздо меньшей сложности.

2

№. Единственная причина использования SGML заключается в том, что вы работаете в издательской индустрии, где SGML уже является частью производственного процесса. (Могут быть другие отрасли, но это единственный, где у меня есть опыт).

Еще один способ взглянуть на это, хотя в SGML есть некоторые интересные функции, не стоит платить за инструменты, если вы не можете четко показать финансовую выгоду, используя SGML (см. «Издательская индустрия»).