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

Поделиться

6

Re: XML

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

Поделиться

7

Re: XML

Поделиться

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

Поделиться

14

Re: XML

Поделиться

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>

Поделиться