- •5 Введение
- •Глава 1
- •1.1. Информатика — состав и структура
- •1.2. Соотношение понятий «информация», «данные», «знания»
- •1.3. Структуризация взаимосвязи информатики с предметной областью применения
- •1.4. Уровни информационных процессов
- •Глава 2
- •2.1. Текстовая информация. Модель документа
- •2.2. Языки разметки документов
- •2.3. Технологии xml
- •2.4. Текстовый редактор Word
- •Глава 1 5
- •5.3. Физическая организация данных в системах управления данными 296
- •Глава 3
- •3.2. Форматы записи-воспроизведения аудиосигналов
- •3.3. Технологии статических изображений
- •3.4. Программные средства обработки изображений
- •3.5. Цифровое видео
- •Глава 4
- •4.1. Оптическое распознавание символов (ocr)
- •Глава 1 5
- •5.3. Физическая организация данных в системах управления данными 296
- •Глава 5
- •5.2. Базы данных и субд
- •Логический файл
- •Логический файл
- •Очереди
- •Время установки головок чтения-записи
- •5.4. Анализ информации и хранилища данных
- •Глава 6
- •Глава 1 5
- •5.3. Физическая организация данных в системах управления данными 296
- •Глава 7
- •Глава 8
- •Глава 1 5
- •5.3. Физическая организация данных в системах управления данными 296
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) представляют собой определения, содержимое которых может быть повторно использовано в документе. В языках программирования подобные элементы называются макроопределениями (рас ш и р е н и я м и ). Для того чтобы включить в документ символ, используемый для определения каких-либо конструк- пий языка (например, символ угловой скобки) и не вызвать при зтом ошибок в процессе разбора такого документа, нужно использовать его специальный символьный либо числовой иденти- ;;: кагор.
Например, ⁢ , > " или $ (десятичная форма записи), &#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>
Формат 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
</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. Готовы к использованию или находятся в стадии разработки еше несколько модулей и инструментов.