XML • Язык разметки • Набор языков для хранения, обработки и представления документов • Технологии обработки и обмена информацией Языки разметки • SGML (Standart Generalised Markup Language, 1986 год) SGML упрощение, фиксирован один язык HTML •HTML SGML, HTML •XML XML • • eXtensible Markup Language HTML – управление представлением + средства определения структуры + средства верификации • Основная функция – описание структурированной текстовой информации • Скорее не язык, а средство определения языков (мета-язык) Определение XML-языков Общий синтаксис XML Общие грамматические ограничения = корректные документы (well-formed) DTD (document type definition) – декларация типа документа = действительные документы (valid) XML-синтаксис + DTD-грамматика = класс XML-документов XML-языки (приложения) • MathMl (Mathematical Markup Language) – запись математических формул • XQL (Extensible Query Language) – запросы к базам данных • KML – Google Earth XML-синтаксис + DTD-грамматика = класс XML-документов Синтаксис XML (сравнение с HTML) • Заголовок, вложенные теги • Для каждого открывающегося тега должен быть закрывающийся • Строгая вложенность • Учитывается регистр в именах тегов • Более строгие синтаксические правила Элементы синтаксиса XML • Символы, спецсимволы: <,>,&,“,‘ • Теги, атрибуты • Директивы • Комментарии • Ссылки на сущности • Секции CDATA Синтаксис XML Директива (заголовок) Теги <?xml version="1.0"?> Комментарий <bibliography> <book> <!-- Информация по одной книге --> <title>Использование символа &amp; в гипертекстах</title> Ссылка на символ <author>Иванов И.И.</author> <keywords><![CDATA[символ,гипертекст,&]]> </keywords> </book> Секция CDATA </bibliography> Структура: элементы Элемент Тип элемента Содержимое <?xml version="1.0"?> элемента <bibliography> Символьные данные <book id="1"> <title>Использование символа &amp;</title> <author>Иванов И.И.</author> <source form="hardcopy" pages="100"/> </book> </bibliography> Пустой элемент Атрибуты элементов <?xml version="1.0"?> <bibliography> <book id="1"> <title>Использование символа &amp;</title> <author>Иванов И.И.</author> <source form="hardcopy" pages="100"/> </book> Значение </bibliography> Имя атрибута Модель документа <a> <b>один</b> <b>два</b> <с>три</с> </a> a: a: b: один b: два c: три b: b: один два c: три Дерево (ребра упорядочены) XML a(b(“один”), b(“два”),c(“три”)) Терм (с произвольным количеством аргументов) XML и HTML <bibliography> <book id="ivanov2003"> <title>Использование символа &amp; в гипертекстах</title> <author>Иванов И.И.</author> <publisher>Питер</publisher> <year>2003</year> </book> </bibliography> <h2>Библиография</h2> <p><i>Использование символа &amp; в гипертекстах</i>, Иванов И.И., <br>Питер, 2003 • Определяет содержание, не • Определяет содержание • • • • зависящее от представления Ясна структура документа Не определяет представление Возможна частичная верификация • неотделённое от представления Невозможно автоматически выявить структуру Невозможна верификация XML и LaTeX <bibliography> <book> <title>Использование символа &amp; в гипертекстах</title> <author>Иванов И.И.</author> <publisher>Питер</publisher> <year>2003</year> </book> </bibliography> \begin{thebibliography}{9} \bibitem{ivanov2003} {\em Иванов И.И.} Использование символа $\amp$ в гипертекстах -- Питер, 2003. \end{thebibliography} XML и LaTeX <bibliography> <book> <title>Использование символа &amp; в гипертекстах</title> <author>Иванов И.И.</author> <publisher>Питер</publisher> <year>2003</year> </book> </bibliography> \begin{thebibliography}{9} \begin{book}{ivanov2003} \bibauthor{\em Иванов И.И.} \bibtitle{Использование символа $\amp$ в гипертекстах} \bibpublisher{Питер} \bibyear{2003} \end{book} \end{thebibliography} • Определяет содержание, не • Определяет содержание и • • • • зависящее от представления Ясна структура документа Не определяет представление Возможна частичная верификация • • представление Есть возможности задавать структуру Для понимания структуры нужна информация о командах Невозможна верификация Добавление специфики • Декларации типа документа (DTD) Определяют структуру документа (множество элементов и правила их вложимости) • Схемы XML (XML Schema) Описывают структуру xml-документов Создается наследственная система элементов. Новые элементы определяются расширением и наложением ограничений. Мощнее и сложнее DTD • Пространства имен XML (XML Namespaces) Обеспечивают глобальную уникальность имен тегов Классы документов <?xml version="1.0"?> <bibliography> <book id="1"> <title>Использование символа &amp;</title> <authors> <author>Иванов И.И.</author> </authors> <publisher>Питер</publisher> <year>2003</year> <source form="hardcopy" pages="100"/> </book> </bibliography> DTD XML DTD <!element bibliography book*> <!element book (title,authors,publisher,year,source?)> <!element authors author+> Контекстно-свободная грамматика bibliography paper authors paper* title authors publisher year source? author+ Слева – имя элемента справа – регулярное выражение над элементами и текстовыми данными Синтаксис DTD Декларация типа элемента <!element <!element <!element <!element <!element <!element <!element <!element bibliography book*> book (title, authors, publisher, year, source?)> title (#PCDATA)> authors author+> author (#PCDATA)> publisher (#PCDATA)> year (#PCDATA)> source EMPTY> Декларация списка атрибутов <!attlist book id ID #REQUIRED> <!attlist source form (hardcopy|latex|html|xml) #REQUIRED pages CDATA> Синтаксис DTD Последовательность книг (возможно пустая) <!element <!element <!element <!element <!element <!element <!element <!element bibliography book*> book (title, authors, publisher, year, source?)> title (#PCDATA)> Заголовок, затем автор, затем authors author+> издательство, затем год и может author (#PCDATA)> быть source publisher (#PCDATA)> Последовательность авторов year (#PCDATA)> source EMPTY> Символьные данные <!attlist book id ID #REQUIRED> Пустой элемент <!attlist source form (hardcopy|latex|html|xml) #REQUIRED pages CDATA> Синтаксис DTD <!element <!element <!element <!element <!element <!element <!element <!element bibliography book*> book (title, authors, publisher, year, source?)> title (#PCDATA)> authors author+> Имя элемента author (#PCDATA)> Имя атрибута publisher (#PCDATA)> year (#PCDATA)> source EMPTY> Тип атрибута <!attlist book id ID #REQUIRED> Атрибут обязательный <!attlist source form (hardcopy|latex|html|xml) #REQUIRED pages CDATA> Синтаксис DTD Тип атрибута “ID” <!attlist book id ID #REQUIRED> <!attlist selectedbook ref IDREF #REQUIRED> Тип атрибута “ссылка на ID” <selection> <selectedbook ref="1"> </selection> … <bibliography> <book id="1"> <title>… </title> … </book> </bibliography> IDREF атрибут ID атрибут MathML • Сохраняет возможности LaTeX’а структурированной разметки формул • Два типа разметки: Разметка представления (как в LaTeX’е) Разметка содержания (для работы собственно с формулами, а не их изображениями) • Не привязан к полиграфии Пример формулы <mfrac> <mn>1</mn> <msup> <mfenced> <mrow> <mi>&alpha;</mi> <mo>+</mo> <mi>&beta;</mi> </mrow> </mfenced> <mn>2</mn> </msup> MathML \[ \frac{1} {(\alpha+\beta)^2} \] LaTeX Представление XMLдокументов – XSLT • XSLT – Extensible Stylesheet Language – Transformations (расширяемый язык таблиц стилей – преобразования) • отделение содержания (XML) от представления (XSLT) CSS и XSLT XSLT обладает большими возможностями: отбор элементов трансформации XML-деревьев внешний вид, основанный на содержании (результат может зависеть от данных) XSL(T) • XSL использует синтаксис XML • Компоненты XSL: 1. Язык XSLT для трансформации XMLдокументов 2. Словарь для форматирования XML. FO (Formatting Objects – свойства форматирования как в CSS) Работа XSLT Трансформация XSLT таблица стилей XML исходное дерево XML,HTML,csv, текст… результат • Элементы XSLT <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> корневой элемент • <xsl:template match=шаблон name=имя> содержимое для замены </xsl:template> • <xsl:apply-templates select=множество узлов> • Определяет правило: шаблон содержимое для замены Применить правило к выбранному потомку (ко всем) <xsl:call-template name=имя> Алгоритм работы XSLT • Основные шаги • сопоставляет шаблон элементам в исходном дереве, находит элементы, подходящие под шаблон, заменяет элемент на содержимое (из правила), выбирает узлы для дальнейшей обработки Управление Рекурсивная обработка (<xsl:apply-templates/>) Применение части правила для выбранных элементов (<xsl:for-each select=множество элементов>, <xsl:if …) Пример применения XSLT Тип элемента <bibliography> <book id="1"> <title>Использование символа &amp;</title> <author>Иванов И.</author> </book> <book id="2"> <title>Использование символа &lt;</title> <author>Петров П.</author> </book> </bibliography> <xsl:stylesheet version="1.0“ xmlns:xsl="http://…"> <xsl:template match="bibliography"> <html><body><h1>Список книг</h1> <table width=600> <xsl:apply-templates/> </table></body></html> </xsl:template> <xsl:template match="book"> Текст <tr><td><xsl:number/></td> замены <xsl:apply-templates/> </tr> </xsl:template> <xsl:template match="author|title"> <td><xsl:value-of select="."/></td> </xsl:template> </xsl:stylesheet> Список книг 1. 2. Использование символа & Использование символа < Шаблон Результат Иванов И. Петров П. XML Applications & Industry Initiatives http://www.oasis-open.org/cover/xml.html#applications • • • • • • • • Advertising: adXML place an ad onto an ad network or to a single vendor Literature: Gutenberg convert the world’s great literature into XML Directories: dirXML Novell’s Directory Services Markup Language (DSML) Web Servers: apacheXML parsers, XSL, web publishing Travel: openTravel information for airlines, hotels, and car rental places News: NewsML creation, transfer and delivery of news Human Resources: XML-HR standardization of HR/electronic recruiting XML • • • • • • • • Voice: VoxML markup language for voice applications Wireless: WAP (Wireless Application Protocol) wireless devices on the World Wide definitions International Dvt: IDML improve the mgt. and exchange of info. for sustainable development Web Weather: OMF Weather Observation Markup Format (simulation) Geospatial: ANZMETA distributed national directory for land information Banking: MBA Mortgage Bankers Association of America --> credit report, loan file, underwriting… Healthcare: HL7 DTDs for prescriptions, policies & procedures, clinical trials Math: MathML (Mathematical Markup Language) Surveys: DDI (Data Documentation Initiative) “codebooks” in the social and behavioral sciences Язык XPath Набор синтаксических правил для адресации элементов XML-документа • Подобен синтаксису файловой системы. Корневой элемент - /, далее указывается тип вложенного элемента • Отличается возможным множественным выбором Пример: <html> <p>1</p> <div> <img/> </div> <p>2</p> </html> 1. /html 2. /html/p 3. /html/div/img XPath 2.0 • Язык позволяет строить выражения для указания • • • элементов xml-документа Результатом выражений являются последовательности элементов Последовательности «плоские», т.е. вложение одной последовательности в другую даёт вложение элементов Типы данных: элементы булевый тип численный тип (с плавающей точкой) строковый тип XPath 2.0 Оператор Описание / Выбирает дочерние элементы, находящейся слева от него. При использовании в начале шаблона означает поиск от корневого элемента. // Рекурсивный спуск; ищет указанный элемент на любой глубине. . Текущий контекст. * Выбирает элементы с любыми именами. @ Атрибут; префикс имени атрибута. При использовании без имени атрибута выбирает все атрибуты, независимо от их имени. : Отделяет префикс пространства имен от имени элемента или атрибута. () Группирует операции для явного задания очередности. [] Накладывает фильтр, используется для индексации последовательности. + Сложение. - Вычитание. div Деление с плавающей точкой. * Умножение. mod Остаток от деления. | Объединение двух последовательностей. XPath 2.0 • • • • • • • Функции last() position() count( последовательность ) id( элемент ) local-name( последовательность ) namespace-uri( последовательность ) name( последовательность ) and or not = != Операторы < <= > >= XPath 2.0 • • • • • • • • • Имя self child parent descendant descendant-or-self ancestor ancestor-or-self following following-sibling • preceding • preceding-sibling • attribute • namespace Оси Описание Сам узел Дочерние узлы Родительский узел Потомки узла Узел и его потомки Предки узла Сам узел и его предки Все узлы после данного Все узлы этого же уровня после данного Все узлы перед данным Все узлы этого же уровня перед данным Узлы аттрибутов Узлы пространства имен XPath 2.0 <biblio> <book id="1"> • <title>Язык XML</title> • <author>Иванов И.</author>• </book> • <book id="2"> • <title>Стихи</title> <author>Петров П.</author> • <author>Иванов И.</author>• • <year value="2003"/> • </book> • <book id="3"> • <title>Сказки</title> <author>Петров П.</author> </book> </biblio> /biblio/book/* /biblio/*[year]/author /biblio/book[author='Ива нов И.']/title /biblio/book/year[@value ='2003']/../author /biblio/book[year/@value ='2003']/author //book//[@] /biblio/book[1] /biblio/book[last()] //book[not(year)] /biblio/book[count(autho r)=2] //author[followingsibling::* | precedingsibling::* = 'Иванов И.']