Введение в XML

advertisement
XML - расширенный язык
разметки
(eXtensible Markup Language)
Моисеевой О.
Макушиной Д.
Зачем нам это надо?
Основой WWW является HTML – набор тэгов, который
позволяет создавать разметку документа
Недостатки HTML:

даже самый большой список тэгов не в состоянии
полностью удовлетворить запросы создателей документов силу
того, что этот список ограничен

HTML – документы ориентированы прежде всего на
отображение, а не на автоматическую обработку. Из базы
данных можно передать данные в HTML-документ. Обратная
операция намного сложнее.
Корни XML
1986 г. – организация ISO (International Organization for
Standardization) принимает язык SGML (Standard Generalized
Markup Language) в качестве официального стандарта
SGML позволяет:
 описывать структурированные данные
 организовывать и представлять информацию, содержащуюся в
документах
 создавать свои конструкции разметки
Недостатки SGML:
 описание спецификации занимает более 500 страниц
Следствие => создание языка XML, отличного от SGML и HTML
Корни XML
XML – подмножество SGML, расширенный язык разметки,
пришедший на смену HTML
XML позволяет:
 создавать свой язык для каждого типа документа или даже для
каждого документа отдельно
 максимально легко интегрировать данные из различных
приложений
Недостатки XML:
 адекватное отображение содержимого XML-файлов различными
браузерами достигается далеко не всегда
Структура XML - документов
В XML докумение можно выделить 2 основные части:
1.
2.
Описания структуры документа DTD – блок (Document Type Definition)
Непосредственно содержание документа
В первой части мы можем использовать:
•
Инструкции XML – процессора
•
Объявление элементов структуры документа
•
Атрибуты для каждого элемента
•
Cущности
DTD-блок может внедряться как в сам документ, так и находиться во внешнем
файле.
В XML – документе, как и в любой объектной иерархии существует некий корневой
элемент, от которого наследуются все остальные.
Содержимое XML – документа (2-ая часть) форматируется при помощи тэгов, которые
определяются в описании типа документа.

Наименования тэгов полностью совпадают с наименованием элементов
Инструкция XML - процессора
В качестве первой строки каждого XML – документа должна использоваться
исполняемая инструкция, предназначенная для XML – процессора:
<?xml version=“1.0”?>
xml – ключевое слово для каждой исполняемой инструкции
version - параметр инструкции, указывающий на то, что будет использоваться первая версия
стандарта XML.
Пролог XML – документа – блок исполняемых инструкций.
Инструкция для указания конкретной кодировки, которая будет использоваться:
<?xml encoding=“UTF-8”?>
encoding – параметр инструкции
UTF-8 – одна из наиболее часто используемых кодировок
Инструкция XML - процессора
Инструкция, позволяющая правильно обработать DTD-блок:
<?xml standalone=‘no’?>
standalone – параметр для указания местонахождения описание структуры для данного
XML – документа
Значения:
no – извещает XML-процессор, что для данного документа DTD-блок выделен в
отдельный файл
yes – указывает на то, что DTD-блок размещен в теле документа
Инструкция XML - процессора
Определение XML – инструкций из спецификаций XML в форме Бэкуса-Наура:
XMLDecl ::= ‘<?xml’ VersionInfo EncodingDecl? SDDecl? S? ‘?>’
VersionInfo ::= S ‘version’ Eq (‘VersionNum’ | “VersionNum”)
Eq ::= S? ‘=’ S?
VersionNum ::= ([a-zA-Z0-9_.:] | ‘-’)+
Левая часть – имя конструкции
::= - оператор эквивалентности
Правая часть – расшифровка имени, которая содержит формат и правила
оформления
Объявление типа документа
DTD-блок – объявление типа документа,
помещаятся сразу после исполняемой
инструкции, указывающей на тот факт,
что данный документ создан с
применением языка XML.
В нем определяются:

Элементы документа

Атрибуты элементов

Сущности

комментарии
Объявление типа документа
Пример DTD-блока
<!DOCTYPE body [
<!ELEMENT body (#PCDATA)>
<!ENTITY name “Igor”>
]>
1 стр. – объявление типа документа и его
наименования. В качестве наименования типа
документа мы используем имя самого старшего
элемента, который включает в себя все остальные
элементы.
[] – содержат описание структуры всего документа

Объявление типа документа
DTD-блоки могут находиться как внутри
документа, так и вне его. Для подключения
можно использовать конструкцию
подобную следующей:
<!DOCTYPE main PUBLIC “-//New
Boundaries//SweetImmersing//EN”//www.newbound
aries.com/sweet/dtd/main.dtd”
PUBLIC – файл рассматривает международная
организация по стандартизации ISO
SYSTEM - файл не рассматривается международной
организацией по стандартизации ISO
Объявление типа документа
DTD-файл, содержащий DTD-блок
подчиняется спецификации XML, т.е.
является обычным XML-документом
без значимого содержимого. Первой
его строкой также будет
исаполняемая инструкция.
Номер версии стандарта XML обычно не
указывается, но указывается используемая
кодировка.
Объявление типа документа
DTD-блок должен быть:
1.
Хорошо оформденным
2.
Правильным
Хорошо оформлен:

У документа только один элемент верхнего уровня, и содержимое
документа располагается полностью внутри сответствующего тэга

В одном тэге не могут употребляться несколько раз одни и те же
атрибцты элемента

Все сущности должны объявляться до их использования

Все тэги должны быть правильно вложены друг в друга
Пример:
<?xml version=“1.0” standalone=“yes”?>
<body>well-formed document </body>
Примечание:
XML-процессоры чувствительны к регистру символов.
Объявление типа документа
Правильным считается XML-документ, который
удовлетворяет требованиям, предъявляемым к
хорошо-оформленным документам, и рпи этом
имеет соответствующий DTD-блок и подчиняется
всем правилам, описанным в нем.
Пример:
<?xml version=“1.0” standalone=“yes”?>
<!DOCTYPE body [<!ELEMENT body (#PCDATA)>
]>
<body>valid document </body>
Элементы XML-документа
Элемент – основная структурная единица XML-документа.
Объявляется в DTD-блоке, а затем при разметке
значимого содержимого документа используются тэги,
наименования которых совпадают с наименованием
элементов.
Пример 1:
<!DOCTYPE body [
<!ELEMENT body (#PCDATA)>
]>
ELEMENT – ключевое слово
body – наименование элемента
PCDATA (parseable character data ) – тип (любая информация, с
которой может работать XML-процессор)
Элементы XML-документа
Пример 2:
(усложненная организация с иерархией документов)
<!ELEMENT firm (name+, address, phone*, fax*, email, info)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT address (#PCDATA)>
<!ELEMENT phone (#PCDATA)>
<!ELEMENT fax (#PCDATA)>
<!ELEMENT email (#PCDATA)>
<!ELEMENT info (#PCDATA)>
Модификаторы:
+ применяется для элементов, которые в родительском элементе считаются
обязательными, должны встречаться хотя бы один раз
* указывает на то, что элемент может встретиться в описание родительского элемента
любое количество раз
? Используюися для тех элементов, которые могут появляться в описание родительского
элемента только один раз, или вообще не появляться
Атрибуты элементов
Атрибут позволяет максимально полно детализировать информацию,
предназначенную для отображения или использования в
элементе.
<!ELEMENT text (#PCDATA)>
<!ATTLIST text
create_data CDATA #REQUIRED
last_modified CDATA #IMPLIED
author CDATA #REQUIRED
editor CDATA “Kondikova E.V.”>
create_data - наименование
CDATA – тип
#REQUIRED – модификатор атрибута
Атрибуты элементов
Три типа атрибутов:
1.
CDATA – данные толко в виде строк
2.
Type – перечисляемый тип
Пример:
<!ATTLIST my_element
type (a|b|c “c”)>
Маркер - специализированный атрибут, значение которого несет
заранее предопределенный тип информации. При
использовании мркера нужно включить в описание одно из семи
ключевых слов.
Пример:
<!ATTLIST my_element
id ID #REQUIRED
1.
Атрибуты элементов
Модификаторы атрибутов:
1.
CDATA – данные толко в виде строк
2.
Type – перечисляемый тип
Пример:
#REQUIRED – указывает на то, что для данного атрибута значение может быть не
определено, т.е. этот атрибут не является обязательным для применения
#IMPLIED – указывает на то , что атрибут должен быть обязательно применен. Т.е. во
всех экземплярах элемента в значимом содержимом XML-документа должно быть
обязательно присвоено значение этому атрибуту
#FIXED – применяется в тех случаях, когда заданное для атрибута значение по
умолчанию является фиксированным, т.е. не поддается изменению
Пример:
<!ELEMENT text (#PCDATA)>
<!ATTLIST text
create_data CDATA #REQUIRED
last_modified CDATA #IMPLIED
author CDATA #REQUIRED
editor CDATA “Kondikova E.V.”>
Download