XML eXtensible Markup Language 1.Язык навигации внутри XML-документа (XPath) 2.Пространства имён (Namespaces) 3.Язык трансформаций (XSLT)
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]
Пространства имён (Namespaces) Представьте, что в одном XML-документе определены такие элементы: Представьте, что в одном XML-документе определены такие элементы: name, age, company, position name, age, company, position А в другом такие: А в другом такие: name, border, size, position name, border, size, position Что случится, если нам понадобится объединить документы этих типов? Что случится, если нам понадобится объединить документы этих типов? Парсер запутается в элементах name и position. К какому типу их отнести?
Пространства имён (Namespaces) Пространство имён позволяет разделять наборы элементов, относящихся к разным объектам Пространство имён позволяет разделять наборы элементов, относящихся к разным объектам Для этого к названию элемента добавляется префикс Для этого к названию элемента добавляется префикс pers:name, pers:age, pers:company, pers:position pers:name, pers:age, pers:company, pers:position image:name, image:border, image:size, image:position image:name, image:border, image:size, image:position У каждого имени может быть только один префикс. Он отделяется двоеточием У каждого имени может быть только один префикс. Он отделяется двоеточием
Пространства имён (Namespaces) Пространства имён, используемые в документе, должны быть объявлены Пространства имён, используемые в документе, должны быть объявлены –объявление делается либо в корневом элементе, либо в элементах, где используется данный префикс –каждому префиксу ставится в соответствие гиперссылка (реальная или условная)
Преобразования XML-данных (XSLT) Как мы помним, XML ничего сам не делает. Его задача описывать структуру данных Как мы помним, XML ничего сам не делает. Его задача описывать структуру данных Чтобы с этими данными что-то сделать, используются специальные средства Чтобы с этими данными что-то сделать, используются специальные средства XSL eXtensible Stylesheet Language XSL eXtensible Stylesheet Language –XSLT: XSL Transformations XSLT выполняет преобразования данных –XSL-FO: XSL Formatting Objects XSL-FO форматирует данные для печати
Преобразования XML-данных (XSLT)
Что умеет делать XSL? Что умеет делать XSL? –Отбирать (фильтровать) определённые данные из целого документа –Упорядочивать данные независимо от исходного порядка –Менять исходную структуру данных (до неузнаваемости) –Преобразовывать XML в другой XML в другой XML в правильный HTML в правильный HTML в другие текстовые форматы в другие текстовые форматы
Преобразования XML-данных (XSLT) В отличие от многих языков программирования (BASIC, Pascal, C,…), XSL не процедурный язык, а декларативный. В отличие от многих языков программирования (BASIC, Pascal, C,…), XSL не процедурный язык, а декларативный. Программа на XSL (transformation, она же stylesheet) сообщает не что нужно делать (последовательность операций), а что должно получиться.
Преобразования XML-данных (XSLT) Программа на XSL состоит из шаблонов (templates), которые сопоставляются с различными частями дерева XML на входе и выдают некоторый выход. Программа на XSL состоит из шаблонов (templates), которые сопоставляются с различными частями дерева XML на входе и выдают некоторый выход. (Далее см. примеры + учебник) (Далее см. примеры + учебник)