Пишем содержимое

Итак, структура описана. Теперь при написании собственно содержимого мы будем вынуждены следовать собственным правилам. Если что-то будет не так, нас грубо одернут. Пишем содержимое (см. листинг 2). Наверное, все понятно. Только одно небольшое замечание: каждый тег должен иметь закрывающего «напарника», порядок появления тегов должен строго соблюдаться (т. е. допустимо <p1> <p2> 123 </p2> </p1> , но не <p1> <p2> 123 </p1> </p2> ), содержимое должно соответствовать установленным в DTD правилам, регистр букв должен соблюдаться как уголовный кодекс.

Что осталось сделать после того, как мы собрали вместе DTD и содержимое (в файле с расширением XML)? Конечно же, написать в самом верху объявление, что это за документ:

<?xml version=”1.0”?>

Теперь кто угодно догадается, что это файл XML (версии 1.0). Но как нам проверить, что все сделано правильно? Потребуется скачать из Интернета какую-либо программу проверки правильности XML-кода (так называемый валидатор). Например, xmlint с сайта msdn.microsoft.com. Подобные программы будут вам очень полезны.

Небольшое лирическое отступление. Строго говоря, не требуется включать в каждый XML-документ или подключать к нему внешний файл с DTD (хотя и весьма рекомендуется). Это некоторое послабление для ленивых. Таким образом, существует две разновидности XML-документов: правильно оформленный (well-formed), в котором DTD нет, но в остальном он подчиняется правилам формирования XML, и действительный (valid) документ — «полный», т. е. с DTD, в соответствии с которым он может быть проверен. Когда будете выбирать себе валидатор (какое словосочетание!), обратите на это внимание — программы проверки могут работать, например, только с well-formed документами.

Прекрасно, наше творение прошло проверку. Но как насладиться плодами труда? Очень просто: запускаем Internet Explorer 5 и загружаем в него наш документ. Что мы видим? Нечто странное — почти то же самое, что и в Notepad ( рис. 1). Причина проста — никто не сказал броузеру, какой конечный вид мы хотим придать документу. Для этого есть старое проверенное средство — каскадные таблицы стилей (CSS). Их-то мы и применим.

Быстренько создадим файл VI.CSS (см. листинг 3). Здесь особых комментариев, вроде бы, не нужно. Пожалуй, необходимо лишь уточнить, что у нас есть два тега <title> , но один из них применяется только внутри тега <chapter> . Как их различить? Смотрите первую и четвертую строчки. Все очевидно.

Теперь добавим в наш основной файл строчку (сразу после указания версии XML):

<?xml:stylesheet type=”text/css” href=”vi.css”?>

И смотрим результат в броузере ( рис. 2). Радуемся, а затем задумываемся над вопросом: если CSS были разработаны для HTML, то неужели они так легко и просто подходят для XML? Естественно, нет. Такой подход чреват массой проблем. В частности, XML-документы плохо «ложатся» в структуру «каскадирования», характерную для CSS. Кроме того, каскадные таблицы стилей не предназначены для генерации текстов (они только задают оформление), не способны работать с двунаправленным или вертикальным текстом и т. д. Естественным выходом из такой ситуации было взять за основу средства представления данных, разработанные для SGML, и адаптировать их к XML.

Действительно, существует DSSSL (Document Style Semantics and Specification Language, язык семантики и спецификации стиля документа) — большой свод правил преобразования и стилевого оформления SGML-документов. Сначала разработчики создали DSSSL-O (online-версию), а затем и язык XSL (eXtensible Style Language) — расширяемый язык стиля. Строго говоря, XSL задает не только (и не столько) представление XML-документа, но и занимается переводом документов из одного DTD в другой. Таким образом, мы можем на лету преобразовать наш справочник в HTML, понятный броузеру.

Создадим под именем VI.XSL еще один файл (см. листинг 4). Что можно в нем отметить? Во-первых, это XML-документ. Во-вторых фактически это шаблон HTML-документа, ряд полей которого надо заполнить. В-третьих, заполнением будет заниматься сам броузер, руководствуясь инструкциями вида for—each (т. е. для любого элемента, расположенного между соответствующими тегами), value-of select=”123” (выбрать значение тега с именем 123). Кроме того, обратите внимание на вторую строку (в ней задается используемое пространство имен, о котором я еще упомяну) и на теги, заканчивающиеся символами />. Это так называемые пустые теги. Их аналогом в HTML может служить, например, <hr>. Очевидно, что конструкция вида <hr> содержимое </hr> абсурдна. Но в XML все теги должны быть парными. Соответственно пустой тег тоже будет «закрыт», но так: <тег />. Кроме того, поменяем в исходном документе (файл с расширением XML) вторую строку на:

<?xml-stylesheet type=”text/xsl” href=”vi.xsl”?>

Затем запускаем броузер и наслаждаемся мощью XML (рис. 3). Добавлю только, что в XSL заложены огромные возможности по поиску и фильтрации нужных фрагментов XML-документов. Теперь можно будет забыть о поиске словосочетаний средствами броузера!

< Назад Вперед >

Статья опубликована журналом Hard'n'Soft в номере 2000, 10. Публикуется с любезного разрешения Hard'n'Soft


© журнал принадлежит Web Creation
по всем вопросам обращаться А. Кузьмин