автор Floris Lambrechts <floris(at)linuxfocus.org>
Об авторе:
Я являюсь главным редактором отдела LinuxFocus/Nederlands несколько лет. Я
учусь на инженера электронной промышленности в Leuven, Belgium и трачу свое
время на развлечения с Linux, PHP, XML и LinuxFocus, читая книги Stephen Hawking
и (сейчас) Jef Raskin, 'The Humane Interface'.
Перевод на Русский:
Алексей Отвагин <forlelik(at)yahoo.com>
Содержание:
|
Изучаем XML
Резюме:
Это очень краткое введение в XML. Вы встретитесь с Eddy - мета-котом,
контролем синтаксиса XML и несколькими DTD. Не волнуйтесь, мы все
поясним ;-)
Введение
Летом 2001 года, некоторые из редакторов LinuxFocus собрались в Бордо во время LSM. Большинство разговоров и дискуссий в
специальной группе по документации на LSM обратились к одной и той же теме: XML.
Долгие (и приятные) часы прошли в разъяснениях, что же такое XML, в чем его
преимущества и как его можно использовать. Если Вы заинтересовались, то это
именно то, что попытается обсудить эта статья. Я хотел бы поблагодарить Egon
Willighagen и Jaime Villate, познакомивших меня с XML. Эта статья частично
основана на информации из статей Jaime, которые Вы можете найти по ссылкам,
указанным ниже.
Что такое XML
Мы - люди, занимающиеся документацией, более или менее знаем, что же такое XML.
Итак, по синтаксису он подобен HTML и является еще одним языком
разметки, как SGML и (опять же) HTML, верно? Верно. Но он является и чем-то
большим.
XML обладает некоторыми свойствами, которые делают его полезным
форматом представления данных для чего угодно. Похоже, что на нем можно
описать очень сложные вещи, но он останется легким для прочтения человеком, и
легким для программного разбора. Как это может быть? Давайте исследуем этот
странный язык.
Eddy - мета-кот
Во-первых, XML - это язык разметки. Документы, написанные на
языках разметки содержат, в основном, две вещи: данные и
мета-данные. Если Вы точно знаете, что такое данные, пожалуйста,
сообщите мне, но до этого давайте поговорим о мета-данных;). Скажем просто:
мета-данные - это дополнительная информация, которая добавляет данным
контекст или смысл. Простой пример: возьмем фразу 'Моего кота зовут
Eddy'. Будучи человеком, Вы знаете, что 'кот' это название
существа или животного, а 'Eddy' - его собственное имя.
Компьютерные программы, однако, не люди и не знают всего этого. Поэтому мы
используем мета-данные, чтобы добавить данным смысла (используя синтаксис XML,
конечно!):
<sentence>
Моего <animal>кота</animal> зовут <name>Eddy</name>.
</sentence>
Теперь даже глупая компьютерная программа может сказать, что 'кот' - это
животное, и что 'Eddie' - это имя. Если мы захотим создать документ, где все
имена будут напечатаны синим, а все названия
животных красным, то XML сделает это для нас
действительно простым. Без всяких проблем, вот то, что у нас получится:
Моего кота зовут Eddy.
Теперь, теоретически, мы может поместить информацию об оформлении (в данном
случае о цвете) в отдельный файл, так называемую таблицу стилей. Когда мы это
сделаем, мы действительно отделим информацию об оформлении от содержимого,
что считается целью дизайна для Web TM. Пока что мы не сделали
ничего особенного, поскольку добавление мета-данных - это то, для чего
были созданы языки разметки. Итак, что же особенного делает XML?
Контроль синтаксиса
Во-первых, у XML очень строгий синтаксис. Например,
в XML каждый <тэг> должен иметь закрывающий
</тэг>. [ Примечание: поскольку писать <тэг></тэг>, когда между ними ничего нет,
слегка глупо, Вы можете также написать <тэг />
и сохранить несколько мгновений своей жизни].
Другое правило состоит в том, что Вы не можете 'смешивать' тэги. Вы закрываете
тэги в порядке, обратном порядку их открытия. Что-либо, подобное этому, будет
неправильным: <B>утолщенный текст<I>
утолщенный наклонный текст</B>наклонный текст</I>
Правила синтаксиса гласят, что Вы должны закрыть тэг </I> прежде, чем Вы закрыли </B>
Будьте внимательны - ВСЕ элементы в документе XML должны заключаться в тэги
(исключая два внешних тэга, конечно!). Именно поэтому в примере выше мы
написали тэги <sentence> вокруг предложения.
Без них некоторые слова в предложении могли бы не попасть между тэгами, и
поэтому во многих случаях, сильно рассердили бы контроль синтаксиса XML.
Работа контроля синтаксиса в Mozilla
Однако, уверенность в строгих механизмах контроля имеет свои преимущества: она
гарантирует порядок. Поскольку XML следует этим строгим правилам
синтаксиса, программам очень легко его читать. К тому же, данные в Ваших
документах XML хорошо структурированы, что позволяет людям легко читать и
записывать их.
Отметьте, пожалуйста, что 'теоретические' ценности XML не всегда реализуемы
на практике. Например, большинство имеющихся парсеров (программ для разбора) XML
недостаточно быстры, и зачастую очень велики. Получается, что XML не столь
легок для чтения программным обеспечением. Давайте просто скажем, что идея
делать *все* с помощью XML недостаточно хороша, хотя Вы на это способны. Для
приложений, в которых Вам нужно выполнять множество операций поиска в
документе, или в которых документы чрезвычайно велики - XML зачастую не совсем
верный выбор. Но это не означает, что XML невозможно использовать для этих
целей.
Прекрасным примером мощности XML, но в то же время и его
медлительности является тот факт, что Вы можете написать на нем базу данных
(попробуйте использовать HTML! :p). Это именно то, что Egon Willighagen
сделал для датского раздела LinuxFocus, его статья об этой системе доступна по
ссылке, приведенной в конце. В этом случае гибкость и расширяемость
доморощенного формата файла были выбраны в противоположность чистой скорости
(скажем, mySQL).
Коснемся строгого синтаксиса XML: если Вы смогли стать хорошими друзьями со
средствами проверки синтаксиса, то можно найти некоторые способы, чтобы
заставить средства контроля выполнять часть работы за Вас. Если Вы хотите
сделать это, Вы должны грамотнее использовать DTD...
DTD
В нашем маленьком примере 'Eddy - мета-кот' выше, мы ввели наши собственные
тэги XML. Кстати, такой творческий акт силы контроля пропустили! 'Люди в
форме' хотят знать, что Вы делаете, как, когда и (если возможно) почему. Хорошо,
нет проблем, Вы можете все объяснить с помощью DTD...
DTD позволяет Вам 'изобретать' новые тэги. Практически, это позволяет Вам
изобретать совершенно новые языки, до тех пор, пока они следуют синтаксису XML.
DTD, или Document Type
Definition (определение типа документа) - это файл, содержащий описание
языка XML. В действительности это список всех возможных тэгов, их возможных
атрибутов, а также их возможных комбинаций. DTD описывает, что
осуществимо в Вашем языке XML, а что - нет. Итак, когда мы говорим о 'языке
XML', в действительности речь идет об определенном DTD.
Заставьте контроль работать
Иногда DTD заставляет Вас сделать что-нибудь в определенном месте.
Например, DTD может заставить Вас включить тэг, содержащий название документа.
Что в этом действительно прекрасно, так это то, что уже существует программное
обеспечение (например, модули emacs), которое может автоматически заполнять
требуемые тэги.
Таким образом, некоторые части структуры Вашего документа будут заполняться
автоматически. Поскольку синтаксис очень строг и хорошо определен, DTD может
вести Вас в процессе написания документа. Когда Вы делаете ошибку, например
забываете закрыть тэг, средства контроля информируют Вас. Наконец,
полицейские не слишком 'безумны'; когда полицейские в реальном мире говорят
'Вы имеете право хранить молчание', полиция XML очень доброжелательно
сообщает Вам о 'Синтаксической ошибке в строке xx :
'... :)
Поскольку средства контроля выполняют всю эту работу за Вас, *Вы* можете
просто отойти от этого и сконцентрироваться на содержании.
Смеси
Последней из грандиозных возможностей XML является возможность использовать
одновременно несколько DTD. Это означает, что Вы можете использовать
несколько различных типов данных в документе в одно и то же время.
Такое 'смешение' возможно благодаря пространствам имен xml. Например, Вы
можете включить Docbook DTD в ваш документ .xml ( префикс 'dbk'
в этом примере).
Все тэги Docbook можно использовать в Вашем документе в такой форме
(скажем, существует тэг docbook <просто_тэг>):
<dbk:просто_тэг> просто несколько слов </dbk:просто_тэг>
Используя систему пространств имен, Вы можете использовать любой тэг и любой
атрибут любого xml DTD. Это открывает Вам целый мир возможностей, что Вы
сможете увидеть в следующей главе...
Доступные DTD
Здесь приведена небольшая коллекция DTD, которые уже (частично) используются.
- Docbook-XML
Docbook - это язык для написания
структурированных документов, например, книг и статей. Он также используется
для очень разных задач. Docbook является SGML DTD (SGML - это стандарт
разметки), но существует его популярная XML-версия. Это один из наиболее
популярных XML DTD.
- MathML
MathML - это язык математической разметки, используемый для описания
математических выражений и формул. Это действительно необходимый инструмент
для людей-математиков. С другой стороны, химики не хотят завидовать
своим коллегам-математикам; для них существует CML - язык химической разметки.
Отметьте, что Mozilla 1.0 поддерживает MathML по умолчанию.
- RDF
RDF - Resource Description Framework (Способ описания ресурсов). Он
создан для облегчения кодирования и повторного использования мета-данных; на
практике он часто используется веб-сайтами, чтобы сообщить другим
сайтам, какие новости они показывают. Например, датский сайт linuxdot.nl.linux.org использует файл
RDF от других сайтов, чтобы показать их новости. Большинство популярных
новостных сайтов (например, Slashdot) содержат доступный файл RDF, так что Вы
можете скопировать их заголовки новостей, например, на боковой фрейм вашей
домашней страницы.
- SOAP
SOAP означает Simple Object Access Protocol (протокол доступа простого
объекта). Это язык, используемый процессами для общения друг с другом
(обмена данными и выполнения удаленных вызовов процедур). Благодаря SOAP,
процессоры могут удаленно взаимодействовать, например, через протокол http
(internet). Я думаю, что Atif здесь, на LF, может сказать Вам об этом больше,
так что смотрите ссылку :-)
- SVG
Scalable Vector Graphics (масштабируемая векторная графика). Трио PNG,
JPEG2000 и SVG призвано воплотить будущее изображений в WWW. PNG займет
место GIF (сжатые без потерь изображения с прозрачностью), а JPEG2000 может
когда-нибудь заменить сегодняшний .jpg (изображения с настраиваемой
степенью потерь при сжатии). SVG основано не на битовых картах, а на векторах,
что означает, что изображение представлено не пикселями, а математическими
фигурами (линиями, квадратами,...). SVG также содержит функции для поддержки
скриптов и анимации, так что Вы можете сравнить ее с Macromedia Flash. Вы можете
использовать JavaScript в файлах .svg, и используя JavaScript, Вы можете даже
писать код .svg. Очень гибкая вещь, не так ли ?
Однако, svg относительно новый формат; сейчас существует только
высококачественный SVG-плагин для броузера от Adobe для платформ Windows & Mac.
Mozilla работает над встроенным вьювером SVG, но он еще не закончен и Вам
необходимо скачать специально скомпилированную версию броузера, чтобы
использовать его.
Примечание: Файлы .svg могут быть очень большими, поэтому Вы чаще
всего встретите файлы .svgz. Это сжатые версии, использующие алгоритм gzip.
- XHTML
XHTML - это XML-вариант HTML версии 4.01. Из-за строгого синтаксиса XML,
здесь существует несколько возможностей - есть некоторые вещи, которые
можно сделать в HTML, но они будут неправильными в XHTML. Но с другой стороны,
страница, которую Вы напишете в XHTML будет в то же время верной для HTML.
Отметьте, что программа HTML tidy может преобразовать Ваши существующие
страницы HTML в XML.
- Другие
Многие новые форматы файлов используют XML, часто в сочетании со
сжатием в .gz или .zip. Простой пример: форматы файлов KOffice являются XML DTD.
Это очень полезно, поскольку позволяет пользователю комбинировать
функциональность различных приложений в одном документе. Например:
Вы можете создать документ KWord со встроенной таблицей KChart в нем.
Ссылки
The W3C, or World Wide Web Consortium
Содержит информацию о XML, MathML, CML, RDF, SVG, SOAP, XHTML,
пространствах имен...
www.w3.org
Некоторые материалы Jaime Villate (Вам может понадобиться онлайн-переводчик,
чтобы прочесть первые два:)
Введение в XML(на
испанском)
Как генерировать HTML с помощью XML(на испанском)
Слайды LSM<
/A>
Программа HTML tidy:
www.w3.org/People/Raggett/tidy
Docbook
www.docbook.org
Mozilla.org SVG project
www.mozilla.org/projects/svg
Статьи LinuxFocus по этой теме:
Использование XML и XSLT для
создания LinuxFocus.org(/Nederlands)
Создание документов PDF с помощью DocBook
Страница отзывов
У каждой заметки есть страница отзывов. На этой странице вы можете оставить
свой комментарий или просмотреть комментарии других читателей.
2002-05-03, generated by lfparser version 2.19