XML eXtensible Markup Language

Post on 07-Jan-2016

42 views 0 download

description

XML eXtensible Markup Language. Определение типа документов ( DTD ) Язык навигации внутри XML- документа ( XPath ). Определение типа ( DTD). DTD — Document Type Definition Задаёт возможную структуру для некоторого типа XML- документов (т. е. задаёт один возможный язык) - PowerPoint PPT Presentation

Transcript of XML eXtensible Markup Language

XML XML eXtensible Markup eXtensible Markup

LanguageLanguage1.1. Определение типа Определение типа

документов документов ((DTDDTD))

2.2. Язык навигации внутри Язык навигации внутри XML-XML-документа документа ((XPathXPath))

Определение типа (Определение типа (DTD)DTD)

DTD — Document Type DefinitionDTD — Document Type Definition Задаёт возможную структуру для Задаёт возможную структуру для

некоторого типа некоторого типа XML-XML-документовдокументов(т. е. задаёт один возможный язык)(т. е. задаёт один возможный язык)– как могут называться элементыкак могут называться элементы– как они могут друг в друга как они могут друг в друга

вкладыватьсявкладываться– какие у каждого элемента могут быть какие у каждого элемента могут быть

атрибутыатрибуты

Скачиваем Скачиваем XML-XML-редакторредактор

www.firstobject.comwww.firstobject.com (справа — версия 2.2.5, (справа — версия 2.2.5, exe exe в в

архиве архиве zip)zip)

Простой Простой XML-XML-документдокумент<?xml version="1.0" encoding="UTF-8"?><?xml version="1.0" encoding="UTF-8"?><!DOCTYPE booklist SYSTEM "books-1.dtd"><!DOCTYPE booklist SYSTEM "books-1.dtd"><booklist><booklist> <book><book> <author><author>А.А. ЗализнякА.А. Зализняк</author></author> <title><title>Древнерусские энклитикиДревнерусские энклитики</title></title> <city><city>МоскваМосква</city></city> <year><year>20082008</year></year> </book></book> <book><book> <author><author>J.K. RowlingJ.K. Rowling</author></author> <title><title>Harry Potter and the Secret ChamberHarry Potter and the Secret Chamber</title></title> <city><city>New YorkNew York</city></city> <year><year>20052005</year></year> </book></book></booklist></booklist>

Определение типа (Определение типа (DTD)DTD)

<?xml version="1.0" encoding="UTF-8"?><?xml version="1.0" encoding="UTF-8"?>

<!ELEMENT booklist (book)*><!ELEMENT booklist (book)*>

<!ELEMENT book (author, title, city, year)><!ELEMENT book (author, title, city, year)>

<!ELEMENT author (#PCDATA)><!ELEMENT author (#PCDATA)>

<!ELEMENT title (#PCDATA)><!ELEMENT title (#PCDATA)>

<!ELEMENT city (#PCDATA)><!ELEMENT city (#PCDATA)>

<!ELEMENT year (#PCDATA)><!ELEMENT year (#PCDATA)>

Определение типа (Определение типа (DTD)DTD)

Содержимое элементовСодержимое элементов

<!ELEMENT book (<!ELEMENT book (author, title, city, yearauthor, title, city, year)>)>

author, title author, title — последовательность— последовательность

author|title author|title — выбор (или — или)— выбор (или — или)

EMPTYEMPTY — пустой элемент — пустой элемент

ANYANY — любая комбинация допустимых типов— любая комбинация допустимых типов

#PCDATA#PCDATA — — Parsed Character DataParsed Character Data

СПИСОК ДОЧЕРНИХ ЭЛЕМЕНТОВ

Определение типа (Определение типа (DTD)DTD)

Количество повторенийКоличество повторений элементаэлемента

<!ELEMENT booklist (book)<!ELEMENT booklist (book)**>>bookbook — — 11, обязательный, обязательныйbookbook?? — — 11, необязательный (0 или 1), необязательный (0 или 1)book+book+ — 1 или больше (сколько угодно) — 1 или больше (сколько угодно)book*book* — 0 или больше (сколько угодно) — 0 или больше (сколько угодно)

Добавим в Добавим в bookbook необязательный необязательный элемент элемент publisher?publisher? (издательство)(издательство)

Определение типа (Определение типа (DTD)DTD)

Добавляем атрибутыДобавляем атрибуты

В документ:В документ:

<book<book lang="rus" lang="rus" bookid="AAZ01"bookid="AAZ01">><author>А.А. Зализняк</author><author>А.А. Зализняк</author>……

</book></book>В В DTDDTD::

<!<!ATTLISTATTLIST book book lang lang CDATA #IMPLIEDCDATA #IMPLIED bookid bookid ID #REQUIREDID #REQUIRED>>

имя атрибута

Определение типа (Определение типа (DTD)DTD)

Типы атрибутовТипы атрибутов

<!ATTLIST book<!ATTLIST book lang lang CDATACDATA #IMPLIED #IMPLIED bookid bookid ID ID #REQUIRED#REQUIRED genre genre ((fictionfiction||nonfictionnonfiction)) #IMPLIED> #IMPLIED>

CDATACDATA — простой текст — простой текст (Character data)(Character data)IDID — идентификатор — идентификатор

(значение не может повторяться)(значение не может повторяться)IDREFIDREF — ссылка на идентификатор другого — ссылка на идентификатор другого

элементаэлемента((....||....)) — одно из перечисленных значений— одно из перечисленных значений

Определение типа (Определение типа (DTD)DTD)

Значения атрибутов по умолчаниюЗначения атрибутов по умолчанию

<!ATTLIST book<!ATTLIST book lang CDATAlang CDATA ""engeng"" bookid IDbookid ID #REQUIRED #REQUIRED genre (fiction|nonfiction) genre (fiction|nonfiction) #IMPLIED#IMPLIED>>

либо заданноелибо заданное значение значение, либо:, либо:#IMPLIED#IMPLIED — атрибут необязателен— атрибут необязателен#REQUIRED#REQUIRED — атрибут обязательный— атрибут обязательный#FIXED#FIXED значениезначение — значение неизменно — значение неизменно

XPathXPath — навигация внутри — навигация внутри документадокумента

Основные понятия:Основные понятия:– набор узлов (набор узлов (nodeset)nodeset)

Выражение на Выражение на XPath XPath (путь) (путь) описывает набор узлов в документеописывает набор узлов в документе

– элементыэлементы– атрибутыатрибуты– корень документа (корневой элемент)корень документа (корневой элемент)– абсолютный / относительный путьабсолютный / относительный путь– родитель-детиродитель-дети– сиблинги (узлы одного уровня)сиблинги (узлы одного уровня)– предки-потомкипредки-потомки

XPathXPath — навигация внутри — навигация внутри документадокумента

Простые выраженияПростые выражения путь от корня (абсолютный) начинается с путь от корня (абсолютный) начинается с // фрагмент пути между двумя фрагмент пути между двумя // — шаг по дереву — шаг по дереву

(по умолчанию — от корня к листьям)(по умолчанию — от корня к листьям) в результат входят в результат входят все узлы, подходящие под все узлы, подходящие под

описанный путьописанный путь /booklist/booklist ;; /booklist/book/author /booklist/book/author

путь без путь без // (относительный) считается не от корня, а (относительный) считается не от корня, а от текущей позицииот текущей позиции

book/authorbook/author //// любое количество шаговлюбое количество шагов

//book//book ; ; //author //author ; ; /booklist//author/booklist//author @ @ атрибутатрибут

//book/@lang//book/@lang

XPathXPath — навигация внутри — навигация внутри документадокумента

Простые выраженияПростые выражения .. (точка) (точка) Текущий узелТекущий узел .... (две точки) (две точки) Родительский узелРодительский узел

../title../title (путь от (путь от book/authorbook/author к к book/titlebook/title))

** Любой узел без указания имениЛюбой узел без указания имени/booklist/*/booklist/* все дети все дети

/booklist/*/*/booklist/*/* все внуки все внуки

//book/@*//book/@* все атрибутывсе атрибуты

XPathXPath — навигация внутри — навигация внутри документадокумента

Выражения с условием Выражения с условием (предикатом)(предикатом) условие на порядковый номер узла в деревеусловие на порядковый номер узла в дереве

book[2]book[2] ; ; book[last()]book[last()] ; ; book[position()<3]book[position()<3]

условие на значение элементовусловие на значение элементов ((путь отсчитывается от текущей позиции)путь отсчитывается от текущей позиции)

book[city=“book[city=“МоскваМосква”]”]

book[price>250]book[price>250]

условие на значение атрибутовусловие на значение атрибутов//book[@lang=“rus”]/title//book[@lang=“rus”]/title

Условие Условие [[……]] применяется к тому узлу, после применяется к тому узлу, после которого стоиткоторого стоит

book[1]/author book[1]/author vs.vs. book/author[1] book/author[1]