Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИТ.doc
Скачиваний:
15
Добавлен:
18.09.2019
Размер:
5.68 Mб
Скачать

2.3. Технологии xml

XML-технологии — современное развитие инструмен­тария HTML и SGML. В начале февраля 1998 г. международная ассоциация W3C утвердила спецификацию «Extensible Markup Language(XML) 1.0». Сегодня появляются новые языки, создан­ные на основе XML. Возникают многочисленные Web-серверы, использующие и технологию XML для организации хранящейся на них информации.

Упрощая ситуацию, можно сказать, что разработчики XML взяли лучшие решения SGML и. руководствуюсь опытом HTML, создали язык, не уступающий по мощности SGML, но гораздо более удобный и легкий в использовании. XML предна­значен для создания новых языков разметки и используется в качестве средства для описания грамматики других языков и контроля за правильностью составления документов.

С его помощью можно описать целый класс агрегатов дан­ных, называемых X М L - д о к у м е н т а м и. ориентированными на конкретную предметную область. XML позволяет определить допустимый набор тэгов, их атрибуты и внутреннюю структуру документа. Тэги (подобно тэгам в HTML) представляют специ­альные инструкции, предназначенные для формирования в до­кументах определенной структуры и четких отношений между различными элементами этой структуры. Для описания данных XML использует DTD (Document Type Definition — Определение типа документа) или схему документа.

Синтаксис XML

Так же, как и в HTML, инструкции, заключенные в угловые скобки, называются тэгами и служат для разметки основного текста документа. В XML существуют открывающие, закрываю­щие и пустые тэги (в HTML понятие пустого тэга тоже сущест­вует, но специального его обозначения не требуется).

Тело документа XML состоит из элементов разметки и непо­средственно содержимого документа — данных. XML-тэги пред­назначены для определения элементов документа, их атрибутов и других конструкций языка.

Любой XML-документ должен всегда начинаться с инструк­ции <?xml?>, внутри которой также можно задавать номер вер­сии языка, номер кодовой страницы и другие параметры, необ­ходимые программе-анализатору в процессе разбора документа.

Содержимое XML-документа представляет собой набор эле­ментов, секций CDATA, директив анализатора, комментариев, спецсимволов, текстовых данных. Рассмотрим каждый из них подробней.

Элементы данных. Элемент — это структурная единица XML-документа. Например, заключая слово rose в тэги, мы оп­ределяем непустой элемент, называемый <flower>. содержи­мым которого является rose. В общем случае в качестве содер­жимого элементов могут выступать как просто какой-то текст, так и другие, вложенные, элементы документа, секции CDATA, инструкции по обработке, комментарии, т. е. практически лю­бые части XML-документа.

Любой непустой элемент должен состоять из начального, ко­нечного тэгов и данных между ними, заключенных: <flower> rose </flower>.

Элемент в DTD определяется с помощью дескриптора ! element, в котором указывается название элемента и структура его содержимого.

Например, для элемента <flower> можно определить сле­дующее правило:

<!ELEMENT flower PCDATA>

Ключевое слово element указывает, что данной инструкци­ей будет описываться элемент XML. Внутри этой инструкции за­дается название элемента (flower) и тип его содержимого.

Атрибуты. Если при определении элемента необходимо за­дать какие-либо параметры, уточняющие его характеристики, то имеется возможность использовать атрибуты элемента. Атри­бут — это пара название = значение, которую надо задавать при определении элемента в начальном тэге, например,

ccolor RGB="t«ae">#ff08£f</color> <color RGB="false">white</cclox>

Списки атрибутов элемента определяются с помощью клю­чевого слова !attlist. Внутри него задаются названия атрибу­тов, типы их значений и дополнительные параметры. Например, для элемента <article> могут быть определены следующие ат­рибуты:

<!ATTLIST article id ID #REQUIRED about CDATA #IMPLIED

type (actusЛ ! review \ teach ) 'actual' ' ' >

В данном примере для элемента article определяются три атрибута: id, about и туре, которые имеют типы ID (идентифи­катор), cdata и список возможных значений соответственно. Всего существует шесть возможных типов значений атрибута: • cdata — содержимым документа могут быть любые сим­вольные данные; » JD — определяет уникальный идентификатор элемента в документе;

  • IDREF (IDREFS) — указывает, что значением атрибута должно выступать название (или несколько таких названий, разделенных пробелами во втором случае) уникального идентификатора определенного в этом документе элемента;

  • entity (entities) — значение атрибута должно быть на­званием (или списком названий, если используется entities) компонента (макроопределения), определенно­го в документе;

  • nmtoken (nmtokens ) — содержимым элемента может быть только одно отдельное слово (т. е. этот параметр яв­ляется ограниченным вариантом CDATA);

  • список допустимых значений — определяется список зна­чений, которые может иметь данный атрибут.

Также в определении атрибута можно использовать следую­щие параметры:

  • Irequired — определяет обязательный атрибут, который должен быть задан во всех элементах данного типа;

  • #implied — атрибут не является обязательным;

  • #FIXED значение — указывает, что атрибут должен иметь только указанное значение, однако само определение атрибута не является обязательным, но в процессе разбора его значение в любом случае будет передано програм­ме-анализатору. Значение задает значение атрибута по умолчанию

Сущности и специальные символы. Сущности (entity) пред­ставляют собой определения, содержимое которых может быть повторно использовано в документе. В языках программирова­ния подобные элементы называются макроопределения­ми (рас ш и р е н и я м и ). Для того чтобы включить в документ символ, используемый для определения каких-либо конструк- пий языка (например, символ угловой скобки) и не вызвать при зтом ошибок в процессе разбора такого документа, нужно ис­пользовать его специальный символьный либо числовой иденти- ;;: кагор.

Например, &it; , > " или &#036 (десятичная фор­ма записи), &#xla (шестнадцатеричная) и т. д.

Создаются DTD-сущности с помощью инструкции ! entity:

< ! ENTITY hello ' Мы раЖ приветствовать Вас!' >

Программа-анализатор, просматривая в первую очередь со­держимое области DTD-определений, обработает эту инструк­цию и при дальнейшем разборе документа будет использовать содержимое DTD-сущности в том месте, где будет встречаться его название. То есть теперь в документе мы можем использо­вать выражение &hello;, которое будет заменено на строчку «Мы рады приветствовать Вас».

В общем случае, внутри DTD можно задать следующие типы сущностей:

  • внутренние — предназначены для определения строко­вой константы, с их помощью можно организовывать ссылки на часто изменяемую информацию, делая документ более читабельным. Внутренние компоненты включаются в документ с помощью амперсанта &;

  • внешние — указывают на содержимое внешнего файла, причем этим содержимым могут быть как текстовые, так и двоичные данные. В первом случае в месте использования макроса будут вставлены текстовые строки, во втором — бинарные данные, которые анализатором не рассматрива­ются и используются внешними программами.

Комментариями является любая область данных, заключен­ная между последовательностями символов:

<!-- -->.

Комментарии пропускаются анализатором и поэтому при разборе структуры документа в качестве значащей информации не рассматриваются.

Директивы анализатора. Инструкции, предназначенные для анализаторов языка, описываются в XML-документе с помощью специальных тэгов <? и ?>;. Программа клиента использует эти инструкции для управления процессом разбора документа. Наи­более часто инструкции используются при определении типа до­кумента (например, <? Xrcl version=" 1. О" ?>) или создании пространства имен.

CDATA. Чтобы задать область документа, которую при разбо­ре анализатор будет рассматривать как простой текст, игнорируя любые инструкции и специальные символы, но, в отличии от комментариев, иметь возможность использовать их в приложе­нии, необходимо использовать тэги <! [CDATA] и ]]>. Внутри этого блока можно помешать любую информацию, которая мо­жет понадобиться программе-клиенту для выполнения каких-ли­бо действий (в область CDATA можно помещать, например, ин­струкции JavaScript). Естественно, надо следить за тем, чтобы в области, ограниченной этими тэгами, не было последовательно­сти символов ]].

Примеры DTD, схемы и документа

Формат DocBook. DTD DocBook разработан в 1998—1999 гг. OASIS DocBook Technical Committee для описания прежде всего технической документации, а также книг, статей и другой лите­ратуры. Последняя версия этого формата поддерживается как SGML-, так и XML-обработчиками.

В DocBook DTD представлено свыше 300 элементов, кото­рые могут иметь место в описании структуры книги или статьи.

Иерархия основных элементов:

Book — книга

Dedication — посвящение Division — разделы Parts — части References — ссылки Components — компоненты книги Preface — предисловие Section (1...5) — подразделы (уровни) Chapter — главы Appendix — приложение Glossary — глоссарий Bibliography — библиография Articles — статьи Navigational components — компоненты навигации Table of contents — оглавление List of titles — список заглавий List of figures — список иллюстраций List of tables — список таблиц I List of examples — список примеров

! Index — указатель

Практически все элементы могут иметь вложенные элемен- ' ты, такие как Title, SubTitle, Author, Year и т. д.

| Обыкновенную книгу можно описать в формате Docbook

! следующим образом. Элемент Book (корневой элемент докумен-

I та) содержит некую метаинформацию в подэлементе Booklnfo

; (Заглавие — Title, Автор — Author, Права — Copyright и т. д.),

один или несколько элементов Prefaces, несколько глав (Chapter) и, возможно, несколько приложений (Appendix). Также в книге могут содержаться библиография (Bibliography), Глосса­рий (Glossarvs), Указатель (Indexes). Пример описания книги:

<!DOCTYPE book PUBLIC "-//GASIS//DTD Doc3 <bcok> <bookinfo>

«ffcitle>First Book</tirle> <author>

<firstname>Jane</firstname> <surname>Doe< </author> <copyright>

<year>l998</year> <ho!cer>Jane Dce</holde </copyright> </bookinfo> <preface>

<tit'Ie>Foreword</title> </preface>

<chapter> ... </chapter> <chapter> ... </chapter> <chapter> ... </chapter> <appendix> ... </appendix> <appendix> ... </apper,dix> <inaex> ... </index> </book>

Элементы Chapter, Preface и Appendix имеют одинаковую структуру. Они состоят из заголовка (Title), возможно некоторой дополнительной метаинформации и нескольких элементов под­разделов верхнего уровня (1). Каждый подраздел в свою очередь может содержать подразделы более низкого уровня. Пример описания главы:

<!DOCTYPE chapter PUBLIC "-//OASIS//ЭТJ DocBook V3 . 1//EN">

<chapter><title>My Chapter</title> <para> ... </para>

<sectl><title>First Section</title>

<para> ... </para>

<example> ... </example>

</sectl>

k V3.1//EN"i

/surname>

r>

</chapter>

Формат Docbook позволяет описывать не только книги, но и издания меньшего объема, например журнальные статьи, техни­ческие описания и т. д. Чаше всего такие документы описывают­ся элементом Article. В остальном статья состоит из тех же подэлементов, что и глава.

Элемент Article также может содержать элементы Appendix, Bibliography. Index и Glossary. Пример описания статьи:

<!DOCTYPE arricle PUBLIC "-//OASIS//DTD DocBook

V3.1//EN">

<article>

<artheader>

<title>My Article</title> <author>

<honorific>Dr</hcnoriflc>

<f irstnarne>Emilic</ fir striate >

<surname>Lizardc</surname>

</autnor>

</artheader>

<para> ... </para>

<sectl>

<title>On the Possibility of Going Hcme</title> <para> ... </para> </sectl>

<bibliography> ... </bibliography> </article>

Перевод Excel-таблицы в формат XML. Как уже отмечалось, язык XML позволяет описывать различные типы структуриро­ванных данных (листы табличных процессоров, базы данных и пр.). Предположим, имеется простая таблица данных процессора Excel (рис. 2.9, а). Она может быть переведена в формат XML, в котором будет иметь следующий вид (приводится в сокращении):

<?xml versicn="1.О"?>

<?mso-application prcgid="Excel.Sheet"?> < . . . >

<DocumentProperties

xmlns="urn:schemas-micrcsoft-com:office:ofrice">

<LastAuthor>nerpOB</LasrAuthor>

<Created>2 0C5-0 5-0 4</Created>

<Version>2</Version>

</DocumentProperties>

<ExcelWorkbook

xmlns = "urn:schemas-microsc fс-com:effice:excel">

<WindcwHeight>37C0</WindоwHeic

<WindowWidth>il355</Windov:VJidt

<ProtectStr-actttte>Fslse</Prot€

<PrоtectWi.odcv/s>Fal se</' Protect

< / F x с e 1W о r kb с о к >

<Styles>

<Alignment S3:Verticai="5ootcr <3orders/>

<Font ss:FonoKame^'Arial Cyr"

<Interior/>

<NumberFormat/>

<Protection/>

</Style>

</Styles>

<Worksheet s s : Name=" Л:-:ст1" > <Table ss : FxpandedColumnConnt= ss : E:-:pandedRcv.-Ccunt=" 5 " x : Full x:FullRows=*J"> <Column ss:Wicth="70.5"/> <Row ss:Index="2"> <Cell><Data ss;s'iype = <Cell><Data ss:Tvpe= </Row> <Row>

<CellxData ss:Type= <Cell><Data ss:Type= </Row> <Row>

<Cell><Data 5b:iyp <CellxDat </Row> <Row>

<CeII><Data ss:Type= <CelX><Data ss:Type= </Rcw> </Table>

ht> h>

ctStructure>

и >

'204'

Lumns^"8

String">наименование</Оа1а></Cell> String" >ueHa</DataX/Cell>

S-ring">TCpT</Data></Cell> Number">52</Data></Cell>

e = " String ">KeKC</Data></Cel,l>

ss:Type="Number">36</Data></Cell>

lScring">Mopo;»;e:-:oe</3ataX/Cell> ".lumber" >4 5</Ua tax/Cell >

1">

:nce:excel

<WorкsheetOptions xmlns="urn:schemas-m

</WorksheetOptions>

<x : WorksheetOptionsX/ x : Wor ksheet Opt ions >

</Worksheet>

</Workbook>

■ Workbook

Петров

•■Worksheet

-™a н аи ме н овак и e ...!•

наименование цена

торт

52

96

< Data тоот ' "ce!h

мороженое

45

^ Data |1 Data •:

а б

Рис. 2.9. Таблица Excel (о). графическая интерпретация XML-документа (о)

На рис. 2.9, б приводится структурная схема данного XML-документа (также в сокращенном виде).

Семейство технологий XML

Спецификация XML 1.0 определяет, что такое метки и атри­буты. За XML 1.0 следует «семейство XML» — растущий набор модулей, предлагающих полезные средства для выполнения важ­ных и постоянно возникающих задач. XLink описывает стандарт­ный способ добавления в XML-файл гиперссылок. Синтаксисы XPointer и XFragments (находятся в разработке) служат для обра­щения к частям XML-документа. XPointer немного похож на URL, однако вместо обращения к сетевым документам, он ука­зывает на строки данных внутри XML-файла. Язык листов сти­лей CSS применим к XML, равно как и к HTML. XSL более сложный язык, предназначенный для составления листов сти­лей. Основывается он на XSLT, языке трансформаций, исполь­

зуемого для перестройки, добавления и удаления меток и атри­бутов. Стандартный набор вызовов функций DOM отвечает за управления файлами на XML (и HTML) из языка программиро­вания. Точно определить структуру своих собственных форма­тов, основанных на XML, разработчикам помогают XML-схемы 1 и 2. Готовы к использованию или находятся в стадии разработ­ки еше несколько модулей и инструментов.