Upload
takoda
View
50
Download
0
Embed Size (px)
DESCRIPTION
XML eXtensible Markup Language. Определение типа документов ( DTD ) Язык навигации внутри XML- документа ( XPath ). Определение типа ( DTD). DTD — Document Type Definition Задаёт возможную структуру для некоторого типа XML- документов (т. е. задаёт один возможный язык) - PowerPoint PPT Presentation
Citation preview
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]