Когда использовать SGML и XML?
Этот вопрос эквивалентен: "Каковы преимущества и недостатки использования SGML над XML и XML над SGML?".
Я уже знаю несколько сходств и различий между SGML и XML, но они не отвечают на этот вопрос.
СХОДСТВА
- SGML и XML позволяют нам описывать документы (структуру, данные, метаданные);
- Оба отделяют внешний вид (цвета и т. Д.) От данных / структуры / метаданных;
- Как SGML, так и XML могут использоваться на веб-страницах / в Интернете (даже если XML более специализирован в веб, чем SGML)
- Документы SGML и XML должны содержать DTD, чтобы быть "VALID"
РАЗЛИЧИЯ
- SGML предоставляет несколько способов записи вещей (например: мы можем писать пустые и не закрытые теги, мы можем писать
<foo>d</>
, так далее.) - Документы SGML могут быть очень трудными для написания
- Таким образом, синтаксический анализ документов SGML может быть очень низким и сложным
- XML - это подмножество SGML, которое проще в освоении, использовании
- XML не позволяет писать вещи несколькими способами, противоречащими SGML (например, пустые и незамкнутые теги НЕ допускаются)
- Таким образом, разбор XML проще и быстрее, чем разбор SGML
- Документы SGML не имеют статуса "WELL FORMED", а документы XML. (и имеют этот статус, если синтаксис правильный)
- Документы SGML должны содержать DTD: не XML.
НО ВОПРОС ОСТАЕТСЯ
Каковы преимущества и недостатки SGML/XML (то есть: когда использовать один из них, а не другой?)?
2 ответа
Разница в том, что во всем мире используется XML, и для него существует огромное количество программного обеспечения, тогда как SGML используется только небольшим высокопоставленным священством и имеет очень мало доступного программного обеспечения.
Технические различия в такой ситуации в значительной степени не имеют значения.
Позвольте мне присоединиться к вам как к человеку, который недавно приложил немало усилий на SGML.
Я думаю, что ваш пункт 3 (XML более специализированный для Интернета, чем SGML) не верен, потому что синтаксический анализ HTML выходит за рамки возможностей XML; напротив, я утверждаю, что мы увидим более широкое использование SGML в современных основанных на HTML рабочих процессах, где HTML используется и как формат разработки, и как формат доставки.
Ваш пункт 4 (SGML должен иметь DTD) сохраняется только для традиционного SGML, но уже в 1998 году, наряду со спецификацией XML, в редакции Приложения K SGML, также называемой "WebSGML", было отменено это требование, чтобы сделать XML без DTD правильным подмножество SGML. Конечно, без деклараций DTD у вас нет пропусков / выводов тегов, пустых элементов (HTML-элементов void), синтаксисов Wiki и всех других мощных функций, которые SGML имеет по сравнению с XML.
Также позвольте мне отметить, что обсуждение "SGML vs. XML" я считаю бессмысленным. SGML является надлежащим расширенным набором XML и может быть преобразован в XML, так что вы ничего не оставляете при использовании SGML. Я лично использую как XML, так и SGML; SGML, когда мне нужны его дополнительные функции.
Для современной учетной записи об использовании SGML я хотел бы указать вам на мой доклад / статью по адресу http://www.xmlprague.cz/day2-2017/ ("HTML 5.1 DTD").