Занятие 1. Назначение XML и XSDXML — это язык разметки с простым синтаксисом и правилами. С помощью xml можно из файла или строки сделать документ, который будет удобно читать, как компьютерным программам, так и человеку.
читать дальше
В отличие от текстового файла, xml-документ оперирует не строками, а сущностями. Чтобы создать описание товарной позиции в xml-документе, достаточно определить набор сущностей (тегов), дать им имена и рассказать системе-потребителю о том, какая информация в каких сущностях будет содержаться.

Xml позволяет:
1. Создавать иерархическую структуру данных в виде бизнес сущностей;
2. Выполнять автоматическую проверку структуры документа;
3. Обмениваться информацией между разными информационными системами, не связанными между собой.
Как создать xml-документ
Работать с xml-документами можно в обычном текстовом редакторе (notepad). Но существуют специальные редакторы, которые делают работу с xml-документом более удобной и эффективной, об этом мы поговорим на следующих занятиях
В каких случаях xml — не лучший формат данных
XML может оказаться не лучшим форматом при работе с данными с простой структурой и небольшим содержанием полей. В этом случае доля xml-разметки в общем объеме может быть велика, а программная обработка XML может оказаться неоправданно затратной по сравнению с данными более простой структуры. В этой области разработчики рассматривают средства, изначально ориентированные на данные, такие как JSON.
Занятие 2. Структура и синтаксис xml
Xml-документ имеет структуру, в которой элементы разметки заключены в символы < >. С физической точки зрения документ состоит из сущностей, каждая из которых может отсылать на другую сущность. Однако документируемая сущность (корневой элемент) должна присутствовать и обязательно в единственном экземпляре.

В приведенном выше примере содержимое файла не может являться xml-документом, т.к. оно имеет некорректную структуру. В нем нет единственного корневого элемента, вместо этого присутствует два элемента Book. Давайте исправим разметку этого файла и превратим его в xml-документ, добавив тег Catalog, который будет единственным корневым элементом:

С логической точки зрения XML-документ может состоять из:
-объявлений (declarations)
-элементов (elements)
-атрибутов (attributes)
-комментариев (comments)
Рассмотрим все по порядку.
Объявления (declarations)
Согласно спецификации языка, документ должен начинаться с объявления. Возможно, вы уже обратили внимание на странный тег в приведенных примерах
<?xml version="1.0" encoding="UTF-8" ?>
Это называется объявлением. Объявление содержит версию xml-языка (в данном случае 1.0) и кодировку, используемую в документе (UTF-8).
Если в объявлении не указана кодировка, то используется кодировка по-умолчанию - UTF-8.
<?xml version="1.0"?>
На сегодняшний день существуют две версии xml: 1.0 (самая распространенная) и 1.1. Согласно спецификации языка xml 1.0, рекомендуется каждый xml-документ начинать с объявления. Но все же, если объявление будет отсутствовать в документе, не будет считаться ошибкой.
Элементы (elements)
Элемент в документе содержит имя, значение и должен быть обрамлен начальным и конечными тегами. Имя элемента в начальном и конечном тегах элемента должно совпадать.
Имена элементов учитывают регистр и должны начинаться с буквы или символа подчеркивания. Имя элемента может содержать буквы, цифры, дефисы, символы подчеркивания и точки.
Пример:
650
Price - это имя элемента
650 - значение
- начальный тег
- конечный тег
Примеры элементов c корректными именами:
OK
<_amount>OK</_amount>
Примеры элементов c некорректными именами:
<2chance>OK</2chance>
<-amount>OK</-amount>
Элемент с пустым тегом
В документе элемент может быть описан пустым тегом, то есть не включающим в себя другие элементы и символьные данные.
Подобное написание элемента Price говорит нам о том, что у него отсутствует значение. Альтернативный вариант написания такого тега
Вложенные элементы
Элемент может содержать внутри себя вложенные, дочерние элементы (child elements)
<?xml version="1.0" encoding="UTF-8" ?>
Симпсоны и их математические секреты
The Simpsons
The Simpsons and Their Mathematical Secrets
В данном примере у элемента Book имеется два вложенных элемента Title, внутри которых тоже присутствуют вложенные элементы - Short и Full.
Для программы, которая обрабатывает xml-документы согласно стандартам, два приведенные ниже документа будут идентичными:
Документ 1
<?xml version="1.0" encoding="UTF-8" ?>
Симпсоны и их математические секреты
The Simpsons
The Simpsons and Their Mathematical Secrets
Документ 2
<?xml version="1.0" encoding="UTF-8" ?>
Симпсоны и их математические секретыThe SimpsonsThe Simpsons and Their Mathematical Secrets
Во время парсинга xml-документа символы пробела, табуляции и переноса строк между элементами игнорируются.
Однако, если внутри открывающего и закрывающего тегов содержатся пробелы, знаки табуляции и переносы строк, то эти символы будут являться частью значения.
Документ 3
Значение элемента Full: "Симпсоны и их математические секреты"
<?xml version="1.1" encoding="UTF-8" ?>
Симпсоны и их математические секреты
Документ 4
Значение элемента Full (переходы строк - часть значения элемента):
"
Симпсоны и их математические
секреты
"
<?xml version="1.1" encoding="UTF-8" ?>
Симпсоны и их математические
секреты
Атрибуты (attributes)
У элемента могут присутствовать свойства, называемые атрибутами. Атрибуты могут присутствовать только в начальном либо пустом тегах и должны определяться в следующем формате:
attributeName="value"
где attributeName - название атрибута
value - значение атрибута (обязательно должно быть заключено в кавычки символами " или ' )
Пример элемента с одним атрибутом
650
У элемента Price указан атрибут currency со значением RUR.
Пример элемента с несколькими атрибутами
650
У элемента Price указаны два атрибута: currency со значением RUR и profit со значеним 120
Пример пустого элемента с атрибутом
У пустого элемента Price присутствует атрибут currency со значением USD.
Пример некорректного описания атрибута
650
Комментарии (comments)
XML-документ может содержать комментарии, начинающиеся с символов . Комментарий может содержать любой текст, за исключением символов --
Как правило, комментариями помечается содержимое, не предназначенное для синтаксического анализа (например, замечания о структуре документа или редактировании).
Пример
.
Комментарии могут находиться в начале документа; после документа; и в содержимом. Комментарии не могут находиться внутри значений атрибутов и внутри тегов, но могут находиться внутри элемента. При обработке xml-документа программным средством все комментарии внутри xml-документа автоматически игнорируются.
Пример комментария внутри элемента
Саймон Сингх
Обратите внимание, после обработки xml-документа содержащего данный элемент программным средством, значение элемента Author будет равняться "Саймон Сингх", а не "Саймон Сингх", т.к. комментарии игнорируются при обработки xml-документа.
Запрещенные символы в xml-документе
В спецификации xml 1.0 сказано, что внутри значений элементов не могут быть использованы следующие символы:
& < >
а внутри значений атрибутов символ "
Пример элемента с некорректным значением
James&Layla
Существуют зарезервированные сущности - последовательности символов, которые могут быть использованы вместо запрещенных символов:
& &
< <
> >
а также зарезервированные сущности для использования внутри атрибутов
' '
" "
Предположим, что нам нужно задать значение атрибута currency так, чтобы оно содержало двойные кавычки. Это можно сделать следующим образом:
В данном примере значение атрибута currency будет равно "RUR" (символы кавычек - часть значения)
Приведенный ниже пример с некорректным значением элемента Author
James&Layla
можно исправить следующим образом:
James&Layla
Программа, выполняющая обработку xml документа согласно стандартам в качестве значения элемента Author считает James&Layla, не смотря на то, что в элементе значение представленно символами James&Layla
Символьные данные в секции CDATA
В xml-документе можно указать, что определённая часть документа помечена для парсера, как содержащая только символьные данные, а не разметку. CDATA — это просто альтернативный синтаксис для отображения символьных данных, начинается с символов и заканчивается символами ]]>. Внутри CDATA не требуется преобразовывать символы «<» и «&» в «<» и «&». Секция CDATA .
Пример 1
<?xml version="1.0" encoding="UTF-8" ?>
James&Layla]]>
Программа, выполняющая обработку xml документа в качестве значения элемента Author считает James&Layla.
Нет никакой смысловой разницы между символьными данными, помещенными внутри CDATA и символьными данными, присутствующими в обычном синтаксисе.
Пример 2
<?xml version="1.0" encoding="UTF-8" ?>
James&Layla]]>
В данном примере программа, выполняющая обработку xml документа, в качестве значения элемента считает James&Layla. Обратите внимание, что последовательности символов & не будут преобразованы в символ &
Однако, CDATA не может содержать строку ]]> и, следовательно, невозможно создавать вложенные разделы CDATA.
Как проверить корректность xml-документа
XML-документ является корректным (well formed), если он соответствует всем общим правилам XML-синтаксиса:
существует единственный корневой элемент
корректная структура документа (вложенность элементов)
имена элементов и атрибутов заданы с помощью разрешенных символов
существуют начальные и конечные теги для каждого элемента (или пустой тег)
имена в начальном и конечном тегах элемента совпадают (в том числе по регистру)
символ " в значении атрибута должен быть заменен на последовательность символов "
символ & в значении элемента должен быть заменен на последовательность символов &
символы < и > в значениях элементов должны быть заменены на последовательности символов < и > соответственно.
@темы:
рабочее,
тестирование