Итак, язык XML впервые открывает перед многомиллионной интернетовской аудиторией дверь в мир настоящей структурной разметки и подлинной ортогональности аспектов содержания и представления. В конечном итоге эта новая технология должна резко увеличить производительность труда авторов, сняв необходимость утомительного, зачастую ручного перевода информации из одного визуально–ориентированного формата в другой. Однако не обойтись на этом пути и без трудностей «перепривыкания» и ломки сложившихся стереотипов. Перейти с HTML на XML — это совсем не то же самое, что обновить версию вашего любимого текстового процессора Может показаться, что идеология ортогональности языка SGML, прекрасно работающая для устоявшихся типов документов с годами отлаживавшимися DTD, не справляется со слишком разнообразным и зачастую нелогичным содержимым современного Интернета. Вспомним, однако, что только противоречие может быть двигателем прогресса, — нам предстоит еще увидеть, как развиваются, взаимообогащаясь и изменяясь под действием друг друга, Интернет и XML…
СИНТАКСИС
Внешне XML-документ очень похож на HTML: те же угловые скобки, открывающие и закрывающие теги, атрибуты и подстановки. Но если в HTML все допустимые теги жестко заданы стандартом, то XML-документ может пользоваться любыми
тегами, пусть даже изобретаемыми на ходу автором документа. Это объясняется разным статусом этих языков: если HTML есть одно из приложений SGML, его отпрыск и порождение, то XML — это подмножество SGML, его «младший брат», обладающий лишь чуть меньшими возможностями и точно так же пригодный для создания фиксированных систем разметки документов. Такие системы на основе XML действительно создаются в последнее время во множестве — от сложного языка Math ML для разметки математических текстов до простеньких наборов из пары десятков тегов для хранения кулинарных рецептов или текстов церковных проповедей.
DTD.
Вся специфика HTML как одного из приложений SGML выражена в особой формальной конструкции, называемой определением типа документа (Document Type Definition, DTD). В идеале DTD — высший авторитет во всем, что касается синтаксиса той или иной версии HTML. Им, к примеру, пользуются HTML-валидаторы — интерпретаторы SGML, проверяющие соответствие HTML-документа некоторому DTD. Поскольку DTD для каждой версии HTML зафиксировано в официальной спецификации языка, в самом документе приводить его не нужно, — однако любой HTML-документ обязан ссылаться на свое DTD с помощью тега! DOCTYPE (стр. 29).Хотя синтаксис DTD мы в этой книге рассматривать не будем, полезно знать, какая именно информация может храниться в определении типа документа:
• полный список допустимых элементов с указанием на обязательность для каждого из них открывающего и закрывающего тегов;
• полный список атрибутов для каждого элемента, с информацией об их обязательности/факультативности и значениями по умолчанию;
• иерархическая структура документа в виде ин 4 юрмации о том, какие другие элементы, в каком порядке и в каких сочетаниях (друг с другом и/или с обычным текстом) могут встречаться внутри каждого из элементов.
Например, в DTD для HTML 4.0 указано, что у элемента HTML можно опускать как открывающий, так и закрывающий теги (границы элемента устанавливаются интерпретатором по контексту), а его содержимое должно состоять из элементов HEAD и BODY, идущих именно в таком порядке. Элемент OL (нумерованный список) обязан иметь как открывающий, так и закрывающий теги, а содержимое его должно состоять из одного или нескольких следующих друг за другом элементов LI. DTD в языке XML на этом уровне рассмотрения имеет только одно существенное отличие от DTD в SGML (и HTML): все элементы XML–до–кумента без исключения обязаны иметь и открывающий, и закрывающий тег.