1

Тема: XML

Заметки по XML - it-wiki.org.ua/doku.php/xml


Темы:
- Введение в языки разметки
Язык разметки позволяет представить в виде текстового документа данные (текст, информацию и т.п.)
Существует множество языков разметки
Как правило, они не универсальны

XML - Универсальный, расширяемый язык разметки данных. Независимость от платформы, операционной системы и программ обработки.  Представление произвольных данных и дополнительной метаинформации.

Представление данных
Документ может содержать…
Данные
Структуру
Уровень представления

Структура XML документа
XML – представление любых данных
Пространства имен
Привязка пространств имен
Применение XML

Поделиться

2

Re: XML

HTML описывает ИЗ ЧЕГО СОСТОИТ и КАК отображать документ.
<TABLE>
<TR>
<TD>Name</TD><TD>Jake</TD>
</TR>
<TR>
<TD>Salary</TD><TD>25000</TD>
</TR>
<TR>
<TD>Region</TD><TD>Ohio</TD>
</TR>
</TABLE>


XML определяет ЗНАЧЕНИЕ и ОТНОШЕНИЕ данных
<employee>
<name>Jake</name>
<salary>25000</salary>
<region>Ohio</region>
</employee>

Поделиться

3

Re: XML

XML состоит из элементов
Для определения данных используются тэги
<name> Lars Peterson </name>

Элементы могут быть вложенными
<employee>
<name>Lars Peterson</name>
<salary>25000</salary>
</employee>

Поделиться

4

Re: XML

Синтаксис, грамматика и семантика Элементов.

Синтаксис – правила записи элементов разметки
Грамматика – отношения элементов разметки друг к другу
Семантика – смысловые значения элементов разметки

Чем отличаются теги HTML?
<b> и <strong>
<i> и <em>
<p> и <div>

Поделиться

5

Re: XML

Что может быть в XML?

Процессинговые инструкции <? ?>
Описание грамматики -  DTD или XML-схема
Пустые (empty) элементы<emptyElement />
Секция CDATA <description><![CDATA[ Какой-то <br> текст ]]></description>

Поделиться

6

Re: XML

Корректный (хорошо сформированный) XML-документ
Если документ содержит символы, выходящие за рамки ASCII, необходимо указать кодировку
Должен существовать только один корневой элемент, который содержит все остальные элементы
XML чувствителен к регистру символов
Имя может начинаться с буквы, подчёркивания, двоеточия. Остальными символами имени могут быть те же символы, а также цифры, дефис, точка
Теги должны быть правильно вложены друг в друга
Все парные теги должны быть закрыты
Возможно формирование пустых элементов – без содержимого
Значения атрибутов заключаются в одинарные или двойные кавычки
У каждого конкретного элемента не должно быть повторяющихся атрибутов

Поделиться

7

Re: XML

Лабораторная работа 1.1
Создание простого XML-документа
Упражнение 1: Подготовка к работе
• Откройте проводник Windows и перейдите в раздел диска «С»
(В реальных условиях у Вас при работе с правами пользователя может не быть доступа на запись
в другие папки, кроме папки «Мои документы». На этом курсе расположение папок с примерами
и лабораторными работами роли не играет, и поэтому мы с Вами используем наиболее короткий
для записи путь. )
• Создайте папку «XML»
Упражнение 2: Создание XML документа
• Создайте пустой текстовый документ lab-1.xml
• Щелкните по нему правой кнопкой мышки и выберите «Edit with Notepad++»
(На этом курсе мы будем использовать бесплатный и очень мощный редактор Notepad++.
Получить его бесплатно можно по адресу: notepad-plus.sourceforge.net/ru/site.htm.
Если Вы предпочитаете другой редактор – пользуйтесь другим редактором. )
• Установите кодировку документа UTF-8
[ Кодировки -> Кодировать в UTF-8 ]
• Впишите пролог документа:
<?xml version="1.0" encoding="UTF-8"?>
• Создайте XML разметку, отражающую ваши занятия на этом курсе, например (будьте
внимательны, в примере могут быть опечатки!):
<timeTable>
<lesson no=1>
<date>2012-03-21</date>
<time>18:30:00<time>
</lesson>
</TimeTable>
• Сохраните файл
• Проверьте правильность вашего документа:
◦ Для этого можно просто открыть его с помощью браузера…
◦ Или в редакторе Notepad++ выбрать следующую возможность:
[ Дополнения -> XML Tools -> Check XML syntax now ]
(Чтобы эта возможность была Вам доступна необходимо установить дополнение XMLTools
для Notepad++. Получить бесплатно это дополнение можно через Менеджер Расширений
редактора: Плагины -> Plugin Manager -> Show Plugin Manager )
• Если есть ошибки, исправьте их и сохраните свою работу

Поделиться

8

Re: XML

Пространства имен:
Устраняют конфликты элементов
Объявляются с помощью URI
Uniform Resource Identifier
URI:
URN
▪ urn:schemas-microsoft-com:xml-data
URL
w3.org/1999/XSL/Transform

Поделиться

9

Re: XML

С помощью атрибута xmlns
<catalog xmlns = "megabook.ru/catalog">
<book>
<title>Мега Книга</title>
<author>Иван Петров</author>
</book>
</catalog>
 <catalog>
<item xmlns = "megashop.ru/catalog/music">
<title>Мега Альбом</title>
</item>
<item xmlns = "megashop.ru/catalog/book">
<title>Мега Книга</title>
</item>
</catalog>

Поделиться

10

Re: XML

С помощью префикса xmlns:prefix
 <c:catalog xmlns:c = "megabook.ru/catalog">
<book>…</book>
</c:catalog>
 <catalog xmlns = "megabook.ru/catalog"
xmlns:m = "megashop.ru/catalog/music"
xmlns:b = "megashop.ru/catalog/book">
<m:item>
<m:title>Мега Альбом</m:title>
</m:item>
<b:item>
<b:title>Мега Книга</b:title>
</b:item>
</catalog>

Поделиться

11

Re: XML

Лабораторная работа 1.2
Использование пространств имен XML
Упражнение 1: Создание XML-документа с пространствами имен XML
• Откройте файл lab-1-1.xml с помощью Notepad++
• Пересохраните его с именем lab-1-2.xml
• Измените свой документ так, чтобы он использовал пространство имен
mysupersite.ru/ns/courses/xml/lab1
• Проверьте XML-документ на правильность
• Допишите в XML-документ информацию о комплексе, в котором проходят занятия.
При этом необходимо использовать следующие данные:
<offices xmlns="mysupersite.ru/ns/courses/xml/office">
<office code="БК">
<name>Комплекс "Бакунинский"</name>
<address>ул. Бакунинская, 71</address>
</office>
<office code="РА">
<name>Комплекс "Радио"</name>
<address>ул. Радио, д. 24</address>
</office>
</offices>
• Обратите внимание на пространство имен этого документа
• Используйте указанное пространство имен с помощью префикса в своем документе
• Проверьте XML-документ на правильность
• Сохраните свою работу

Поделиться

12

Re: XML

XML – очень распространенная технология
Представление любых данных
Четко выраженная структура данных
Сериализация данных - Обычно используется сериализация Base64 (ru.wikipedia.org/wiki/Base64)

Выводы:
XML – это представление любых данных
Структура XML-документа отражает структуру данных
У языка есть синтаксис, грамматика и семантика
Пространства имён – способ решения конфликтов с именами
Привязка пространств имён через атрибуты
XML применяется в самых разных областях

Поделиться

13

Re: XML

Описание DTD:
Представление документа в виде дерева объектов
Любой элемент документа рассматривается парсером как объект в памяти.

Способы программного анализа документа
Для программного анализа используются парсеры XML
Парсер – синтаксический анализатор документа
SAX – Simple API of XML
DOM – Document Object Model
Парсер представляет документ как иреархию объектов
Объекты DOM – это узлы (node) связанные друг с другом
Объект Document –основной объект документа
Другие объекты представляют элементы, текст, атрибуты, комментарии и т.д.


DTD (Document Type Definition) – описание типов документа
Построение DTD
Язык описания структуры документа Описывает:
Какие элементы могут присутствовать в документе
Повторения элементов
Какие атрибуты могут быть у элементов
Какие атрибуты обязательны
Какие сущности могут применятся

Пример DTD:
<!ELEMENT pricelist (book+)>
<!ELEMENT book (title, author+, price, description?)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ATTLIST price currency CDATA #IMPLIED>


Включения DTD:
<?xml version=1.0" encoding="UTF-8"?>
<!DOCTYPE document [
<!ELEMENT document (greeting, message)>
<!ELEMENT greeting (#PCDATA)>
<!ELEMENT message (#PCDATA)>
]>
<document>
<greeting> Hello From XML </greeting>
<message>
Welcome to the wild and woolly world of XML.
</message>
</document>


Внешние определения DTD:
<?xml version = "1.0" standalone="no"?>
<!DOCTYPE document SYSTEM "mydoc.dtd">
<document>
<customer>
...
</customer>
</document>


Объявление элемента (Списки дочерних элементов)
<!ELEMENT pricelist (book+)>
<!ELEMENT book (title, author+, price?)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT price (#PCDATA)>
Модификаторы
* - ноль или много
? – ноль или один
+ - один или много

Альтернативы элементов и пстые элементы:
<!ELEMENT item
(product, number,
(price | chargeacct | sample))>
<!ELEMENT warning EMPTY>

Объявление атрибута:
<!ATTLIST price
currency CDATA #REQUIRED
symbol CDATA #IMPLIED>

<price
currency="USD"
symbol="$">12.3</price>


Объявление сущностей:
<!ENTITY today "October 15, 2007">
<!ENTITY company "Roga and Copyta">
<!ENTITY nbsp "October 15, 2003">
<?xml version = "1.0"?>
<TEXT>
This text about &company;
is the &nbsp; content.
</TEXT>


Проверка структуры с помощью DTD:
Необходимость:
- Документ может быть не предназначен длявашей системы
- Документ может содержать неправильные данные
- Документ может содержать ошибки в структуре

Поделиться

14

Re: XML

Лабораторная работа 2
Использование DTD в XML-документе
Упражнение 1: XML-документа
• Откройте файл lab-1-2.xml с помощью Notepad++
• Пересохраните его с именем lab-2.xml
• Удалите из XML документа описания пространств имен
• Сохраните файл и проверьте его правильность
Упражнение 2: Создание DTD описания
• Напишите DTD описание этого файла и проверьте файл на валидность:
[ Дополнения -> XML Tools -> Validate now ]
• Сохраните результаты своей работы


Выводы:
XML представляется в виде дерева объектов
Существуют несколько способов программной обработки (SAX, DOM)
DTD описывает структуру документа
DTD может применяться для проверки документа на правильность

Поделиться

15

Re: XML

Описание структуры документа - XML схемы

Недостатки и проблемы DTD
XML схемы – как унифицированный способ описания структуры
Основные элементы XML схемы
Описания типов, элементов и атрибутов
Описание сложных типов данных
Средства создания и работы со схемами
Проверка документов по XML схеме

Поделиться

16

Re: XML

XML схемы:

Унифицированный способ описания структуры
w3.org/XML/Schema
Промышленный стандарт описания XML документа
Описывает:
словарь (названия элементов и атрибутов)
модель содержания (отношения между элементами и атрибутами и их структура)
типы данных

Поделиться

17

Re: XML

Пример простой XML схемы:
<xs:schema xmlns:xs="http://_.w3.org/2001/XMLSchema">
<xs:element name="страна" type="Страна"/>
<xs:complexType name="Страна">
<xs:sequence>
<xs:element name="название" type="xs:string"/>
<xs:element name="население" type="xs:decimal"/>
</xs:sequence>
</xs:complexType>
</xs:schema>

Поделиться

18

Re: XML

Соответствие схемы и документа:
XML-схема
 <?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://_.w3.org/2001/XMLSchema"
targetNamespace="http://_.camera.org"
xmlns="http://_.camera.org"
xmlns:nikon="http://_.nikon.com"
xmlns:olympus="http://_.olympus.com"
xmlns:pentax="http://_.pentax.com"
elementFormDefault="unqualified">
 Документ
 <?xml version="1.0"?>
<my:camera xmlns:my="http://_.camera.org"
xmlns:xsi="http://_.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://_.camera.org/Camera.xsd">

Поделиться

19

Re: XML

Привязка схемы к документу без указанного пространства имен

<?xml version="1.0" encoding="utf-8"?>
<root
xmlns:xsi="http://_.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="myschema.xsd">
<name>Вася Пупкин</name>
<myAge>24</myAge>
</root>

Поделиться

20

Re: XML

Структура XML схемы:
<xsd:schema
xmlns:xsd="http://_.w3.org/2001/XMLSchema">
<!-- Элементы схемы -->
<xsd:annotation>
<xsd:documentation>
Моя схема
</xsd:documentation>
</xsd:annotation>
...
</xsd:schema>

Описание простых элементов:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema
xmlns:xs="http://_.w3.org/2001/XMLSchema">
<xs:element name="name" type="xs:string" />
</xs:schema>

Описание сложных элементов:
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema
xmlns:xs="http://_.w3.org/2001/XMLSchema">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="myAge" type="xs:integer"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

Поделиться

21

Re: XML

Проименнованые типы:

<xsd:complexType name="PersonType">
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="address" type="xsd:string"/>
<xsd:element name="note" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="person" type="PersonType' />

Поделиться

22

Re: XML

Контейнеры-объединители
(композиторы)
 sequence
 choice
 all

Поделиться

23

Re: XML

Лабораторная работа 3.1
Использование простой XML-схемы в XML-документе
Упражнение 1: Создание простой XML-схемы
• Откройте папку с лабораторными работами
• Создайте текстовый файл с именем lab-3-1.xsd
• Откройте этот файл с помощью Notepad++
• Установите кодировку UTF-8
• Напишите простую XML-схему для документа, содержащего данные:
◦ Имя
◦ Фамилия
◦ Возраст
◦ Дата рождения
• Сохраните файл lab-3-1.xsd
• Проверьте синтаксис схемы на правильность
Упражнение 2: Создание XML-документа по XML-схеме
• Создайте документ lab-3-1.xml, соответствующий созданной XML-схеме
• Проверьте XML-документ на правильность
• Подключите созданную схему к Вашему XML-
файлу и проверьте его на соответствие схеме
• Сохраните результат Вашей работы

Поделиться

24

Re: XML

Количество вхождений элементов:
<xsl:persons>
<xsd:complexType>
<xsd:sequence>
<xsd:element name="person" type="PersonType"
minOccurs="0"
maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
</xsl:persons>

Поделиться

25

Re: XML

Определения атрибутов:
<xsd:complexType name="address">
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="street"
type="xsd:string" />
<xsd:element name="city" type="xsd:string" />
</xsd:sequence>
<xsd:attribute name="phone"
type="xsd:string"
use="optional"/>
</xsd:complexType>

Поделиться