14
XML XML eXtensible Markup eXtensible Markup Language Language 1. 1. Определение типа Определение типа документов документов ( ( DTD DTD ) ) 2. 2. Язык навигации внутри Язык навигации внутри XML- XML- документа документа ( ( XPath XPath ) )

XML eXtensible Markup Language

  • 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

Page 1: XML  eXtensible Markup Language

XML XML eXtensible Markup eXtensible Markup

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

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

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

Page 2: XML  eXtensible Markup Language

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

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

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

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

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

Page 3: XML  eXtensible Markup Language

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

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

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

Page 4: XML  eXtensible Markup Language

Простой Простой 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>

Page 5: XML  eXtensible Markup Language

Определение типа (Определение типа (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)>

Page 6: XML  eXtensible Markup Language

Определение типа (Определение типа (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

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

Page 7: XML  eXtensible Markup Language

Определение типа (Определение типа (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? (издательство)(издательство)

Page 8: XML  eXtensible Markup Language

Определение типа (Определение типа (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>>

имя атрибута

Page 9: XML  eXtensible Markup Language

Определение типа (Определение типа (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 — ссылка на идентификатор другого — ссылка на идентификатор другого

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

Page 10: XML  eXtensible Markup Language

Определение типа (Определение типа (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 значениезначение — значение неизменно — значение неизменно

Page 11: XML  eXtensible Markup Language

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

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

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

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

Page 12: XML  eXtensible Markup Language

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

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

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

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

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

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

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

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

Page 13: XML  eXtensible Markup Language

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

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

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

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

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

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

Page 14: XML  eXtensible Markup Language

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]