XML eXtensible Markup Language 1.Определение типа документов (DTD) 2.Язык навигации внутри XML-документа (XPath)
Определение типа (DTD) DTD Document Type Definition DTD Document Type Definition Задаёт возможную структуру для некоторого типа XML-документов (т. е. задаёт один возможный язык) Задаёт возможную структуру для некоторого типа XML-документов (т. е. задаёт один возможный язык) –как могут называться элементы –как они могут друг в друга вкладываться –какие у каждого элемента могут быть атрибуты
Скачиваем XML-редактор (справа версия 2.2.5, exe в архиве zip) (справа версия 2.2.5, exe в архиве zip)
Простой XML-документ А.А. Зализняк А.А. Зализняк Древнерусские энклитики Древнерусские энклитики Москва Москва J.K. Rowling J.K. Rowling Harry Potter and the Secret Chamber Harry Potter and the Secret Chamber New York New York
Определение типа (DTD)
Определение типа (DTD) Содержимое элементов author, title последовательность author|title выбор (или или) EMPTY пустой элемент ANY любая комбинация допустимых типов #PCDATA Parsed Character Data СПИСОК ДОЧЕРНИХ ЭЛЕМЕНТОВ
Определение типа (DTD) Количество повторений элемента book 1, обязательный book? 1, необязательный (0 или 1) book+ 1 или больше (сколько угодно) book* 0 или больше (сколько угодно) Добавим в book необязательный элемент publisher? (издательство)Добавим в book необязательный элемент publisher? (издательство)
Определение типа (DTD) Добавляем атрибуты В документ: А.А. Зализняк А.А. Зализняк … В DTD: bookid ID #REQUIRED> имя атрибута
Определение типа (DTD) Типы атрибутов genre (fiction|nonfiction) #IMPLIED> CDATA простой текст (Character data) ID идентификатор (значение не может повторяться) IDREF ссылка на идентификатор другого элемента (..|..) одно из перечисленных значений
Определение типа (DTD) Значения атрибутов по умолчанию genre (fiction|nonfiction) #IMPLIED> либо заданное значение, либо: #IMPLIED атрибут необязателен #REQUIRED атрибут обязательный #FIXED значение значение неизменно
XPath навигация внутри документа Основные понятия: Основные понятия: –набор узлов (nodeset) Выражение на XPath (путь) описывает набор узлов в документе –элементы –атрибуты –корень документа (корневой элемент) –абсолютный / относительный путь –родитель-дети –сиблинги (узлы одного уровня) –предки-потомки
XPath навигация внутри документа Простые выражения Простые выражения путь от корня (абсолютный) начинается с / путь от корня (абсолютный) начинается с / фрагмент пути между двумя / шаг по дереву (по умолчанию от корня к листьям) фрагмент пути между двумя / шаг по дереву (по умолчанию от корня к листьям) в результат входят все узлы, подходящие под описанный путь в результат входят все узлы, подходящие под описанный путь /booklist ; /booklist/book/author /booklist ; /booklist/book/author путь без / (относительный) считается не от корня, а от текущей позиции путь без / (относительный) считается не от корня, а от текущей позиции book/author book/author //любое количество шагов //любое количество шагов //book ; //author ; /booklist//author //book ; //author ; атрибут
XPath навигация внутри документа Простые выражения Простые выражения. (точка) Текущий узел. (точка) Текущий узел.. (две точки) Родительский узел.. (две точки) Родительский узел../title (путь от book/author к book/title) * Любой узел без указания имени * Любой узел без указания имени /booklist/* все дети /booklist/*/* все внуки все атрибуты
XPath навигация внутри документа Выражения с условием (предикатом) Выражения с условием (предикатом) условие на порядковый номер узла в дереве условие на порядковый номер узла в дереве book[2] ; book[last()] ; book[position()250] условие на значение атрибутов условие на значение Условие […] применяется к тому узлу, после которого стоит Условие […] применяется к тому узлу, после которого стоит book[1]/author vs. book/author[1]