[LinuxFocus-icon]
Домой  |  Карта  |  Индекс  |  Поиск

Новости | Архивы | Ссылки | Про LF
эта страница доступна на следующих языках: English  Castellano  ChineseGB  Deutsch  Francais  Italiano  Nederlands  Portugues  Russian  Turkce  Arabic  

[Floris Lambrechts]
автор 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

[Illustration: 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 screenshot
Работа контроля синтаксиса в 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, которые уже (частично) используются.  

Ссылки

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  

Страница отзывов

У каждой заметки есть страница отзывов. На этой странице вы можете оставить свой комментарий или просмотреть комментарии других читателей.
 talkback page 

Webpages maintained by the LinuxFocus Editor team
© Floris Lambrechts, FDL
LinuxFocus.org

Click here to report a fault or send a comment to LinuxFocus
Translation information:
en --> -- : Floris Lambrechts <floris(at)linuxfocus.org>
en --> ru: Алексей Отвагин <forlelik(at)yahoo.com>

2002-05-03, generated by lfparser version 2.19