140 likes | 276 Views
XML eXtensible Markup Language. Определение типа документов ( DTD ) Язык навигации внутри XML- документа ( XPath ). Определение типа ( DTD). DTD — Document Type Definition Задаёт возможную структуру для некоторого типа XML- документов (т. е. задаёт один возможный язык)
E N D
XML eXtensible Markup Language Определение типа документов (DTD) Язык навигации внутри XML-документа (XPath)
Определение типа (DTD) • DTD — Document Type Definition • Задаёт возможную структуру для некоторого типа XML-документов(т. е. задаёт один возможный язык) • как могут называться элементы • как они могут друг в друга вкладываться • какие у каждого элемента могут быть атрибуты
Скачиваем XML-редактор • www.firstobject.com • (справа — версия 2.2.5, exe в архиве zip)
Простой XML-документ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE booklist SYSTEM "books-1.dtd"> <booklist> <book> <author>А.А. Зализняк</author> <title>Древнерусские энклитики</title> <city>Москва</city> <year>2008</year> </book> <book> <author>J.K. Rowling</author> <title>Harry Potter and the Secret Chamber</title> <city>New York</city> <year>2005</year> </book> </booklist>
Определение типа (DTD) <?xml version="1.0" encoding="UTF-8"?> <!ELEMENT booklist (book)*> <!ELEMENT book (author, title, city, year)> <!ELEMENT author (#PCDATA)> <!ELEMENT title (#PCDATA)> <!ELEMENT city (#PCDATA)> <!ELEMENT year (#PCDATA)>
Определение типа (DTD) Содержимое элементов <!ELEMENT book (author, title, city, year)> author, title — последовательность author|title — выбор (или — или) EMPTY — пустой элемент ANY— любая комбинация допустимых типов #PCDATA— Parsed Character Data СПИСОК ДОЧЕРНИХ ЭЛЕМЕНТОВ
Определение типа (DTD) Количество повторенийэлемента <!ELEMENT booklist (book)*> book — 1, обязательный book? — 1, необязательный (0 или 1) book+ — 1 или больше (сколько угодно) book* — 0 или больше (сколько угодно) • Добавим в bookнеобязательный элемент publisher?(издательство)
Определение типа (DTD) Добавляем атрибуты В документ: <book lang="rus"bookid="AAZ01"> <author>А.А. Зализняк</author> … </book> В DTD: <!ATTLIST book lang CDATA #IMPLIED bookid ID #REQUIRED> имя атрибута
Определение типа (DTD) Типы атрибутов <!ATTLIST book lang CDATA #IMPLIED bookid ID #REQUIRED genre (fiction|nonfiction) #IMPLIED> CDATA— простой текст (Character data) ID— идентификатор (значение не может повторяться) IDREF— ссылка на идентификатор другого элемента (..|..)— одно из перечисленных значений
Определение типа (DTD) Значения атрибутов по умолчанию <!ATTLIST book lang CDATA"eng" bookid ID #REQUIRED genre (fiction|nonfiction) #IMPLIED> либо заданное значение, либо: #IMPLIED— атрибут необязателен #REQUIRED— атрибут обязательный #FIXEDзначение — значение неизменно
XPath — навигация внутри документа • Основные понятия: • набор узлов (nodeset)Выражение на XPath (путь) описывает набор узлов в документе • элементы • атрибуты • корень документа (корневой элемент) • абсолютный / относительный путь • родитель-дети • сиблинги (узлы одного уровня) • предки-потомки
XPath — навигация внутри документа • Простые выражения • путь от корня (абсолютный) начинается с / • фрагмент пути между двумя / — шаг по дереву (по умолчанию — от корня к листьям) • в результат входят все узлы, подходящие под описанный путь • /booklist; /booklist/book/author • путь без / (относительный) считается не от корня, а от текущей позиции • book/author • // любое количество шагов • //book ; //author ; /booklist//author • @ атрибут • //book/@lang
XPath — навигация внутри документа • Простые выражения • .(точка) Текущий узел • .. (две точки) Родительский узел ../title (путь отbook/authorк book/title) • * Любой узел без указания имени /booklist/* все дети /booklist/*/* все внуки //book/@*все атрибуты
XPath — навигация внутри документа • Выражения с условием (предикатом) • условие на порядковый номер узла в дереве book[2]; book[last()] ; book[position()<3] • условие на значение элементов(путь отсчитывается от текущей позиции) book[city=“Москва”] book[price>250] • условие на значение атрибутов //book[@lang=“rus”]/title • Условие […]применяется к тому узлу, после которого стоит book[1]/author vs. book/author[1]