360 likes | 632 Views
XML. Язык разметки Набор языков для хранения, обработки и представления документов Технологии обработки и обмена информацией. Языки разметки. SGML (Standart Generalised Markup Language, 198 6 год ) SGML HTML. упрощение, фиксирован один язык. HTML SGML , HTML XML. XML.
E N D
XML Язык разметки Набор языков для хранения, обработки и представления документов Технологии обработки и обмена информацией
Языки разметки • SGML (Standart Generalised Markup Language, 1986 год) SGMLHTML упрощение, фиксирован один язык • HTML • SGML, HTMLXML • XML
eXtensible Markup Language • HTML–управление представлением + средства определения структуры + средства верификации • Основная функция – описание структурированной текстовой информации • Скорее не язык, а средство определения языков (мета-язык)
Определение XML-языков • Общий синтаксис XML • Общие грамматические ограничения = корректные документы (well-formed) • DTD (document type definition) – декларация типа документа = действительные документы (valid) XML-синтаксис + DTD-грамматика= класс XML-документов
XML-языки (приложения) • MathMl (Mathematical Markup Language)– запись математических формул • XQL (Extensible QueryLanguage) – запросы к базамданных • KML – Google Earth XML-синтаксис + DTD-грамматика=класс XML-документов
Синтаксис XML (сравнение с HTML) • Заголовок, вложенные теги • Для каждого открывающегося тега должен быть закрывающийся • Строгая вложенность • Учитывается регистр в именах тегов • Более строгие синтаксические правила
Элементы синтаксиса XML • Символы, спецсимволы:<,>,&,“,‘ • Теги, атрибуты • Директивы • Комментарии • Ссылки на сущности • Секции CDATA
Синтаксис XML Директива (заголовок) <?xml version="1.0"?> <bibliography> <book><!-- Информация по одной книге --> <title>Использование символа & в гипертекстах</title> <author>Иванов И.И.</author><keywords><![CDATA[символ,гипертекст,&]]></keywords> </book> </bibliography> Комментарий Теги Ссылка на символ Секция CDATA
Структура: элементы Элемент Тип элемента <?xml version="1.0"?> <bibliography> <bookid="1"> <title>Использование символа &</title> <author>Иванов И.И.</author> <sourceform="hardcopy" pages="100"/> </book> </bibliography> Содержимое элемента Символьные данные Пустой элемент
Атрибуты элементов <?xml version="1.0"?> <bibliography> <bookid="1"> <title>Использование символа &</title> <author>Иванов И.И.</author> <source form="hardcopy" pages="100"/> </book> </bibliography> Значение Имя атрибута
Модель документа a: a: b: один <a> <b>один</b> <b>два</b> <с>три</с> </a> c: b: b: b: два c: три три два один Дерево (ребра упорядочены) XML a(b(“один”), b(“два”),c(“три”)) Терм (с произвольным количеством аргументов)
XML и HTML <h2>Библиография</h2> <p><i>Использование символа & в гипертекстах</i>, Иванов И.И., <br>Питер, 2003 <bibliography> <book id="ivanov2003"> <title>Использование символа& в гипертекстах</title> <author>Иванов И.И.</author><publisher>Питер</publisher><year>2003</year> </book> </bibliography> • Определяет содержание неотделённое от представления • Невозможно автоматически выявить структуру • Невозможна верификация • Определяет содержание, не зависящее от представления • Ясна структура документа • Не определяет представление • Возможна частичная верификация
XML и LaTeX \begin{thebibliography}{9} \bibitem{ivanov2003} {\emИванов И.И.}Использование символа $\amp$ в гипертекстах -- Питер, 2003. \end{thebibliography} <bibliography> <book> <title>Использование символа & в гипертекстах</title> <author>Иванов И.И.</author><publisher>Питер</publisher><year>2003</year> </book> </bibliography>
XML и LaTeX \begin{thebibliography}{9} \begin{book}{ivanov2003} \bibauthor{\emИванов И.И.} \bibtitle{Использование символа $\amp$ в гипертекстах} \bibpublisher{Питер} \bibyear{2003} \end{book} \end{thebibliography} <bibliography> <book> <title>Использование символа & в гипертекстах</title> <author>Иванов И.И.</author><publisher>Питер</publisher><year>2003</year> </book> </bibliography> • Определяет содержание и представление • Есть возможности задавать структуру • Для понимания структуры нужна информация о командах • Невозможна верификация • Определяет содержание, не зависящее от представления • Ясна структура документа • Не определяет представление • Возможна частичная верификация
Добавление специфики • Декларации типа документа (DTD) • Определяют структуру документа (множество элементов и правила их вложимости) • Схемы XML (XML Schema) • Описывают структуру xml-документов • Создается наследственная система элементов. Новые элементы определяются расширением и наложением ограничений. • Мощнее и сложнее DTD • Пространства имен XML (XML Namespaces) • Обеспечивают глобальную уникальность имен тегов
Классы документов <?xml version="1.0"?> <bibliography> <bookid="1"> <title>Использование символа &</title> <authors> <author>Иванов И.И.</author> </authors> <publisher>Питер</publisher> <year>2003</year> <source form="hardcopy" pages="100"/> </book> </bibliography>
bibliographypaper* papertitle authors publisher year source? authorsauthor+ DTD XML DTD <!element bibliographybook*> <!element book(title,authors,publisher,year,source?)> <!element authorsauthor+> Контекстно-свободная грамматика Слева –имя элемента справа– регулярное выражениенад элементами и текстовыми данными
Синтаксис DTD Декларация типа элемента <!element bibliography book*> <!element book (title, authors, publisher, year, source?)> <!element title (#PCDATA)> <!element authors author+> <!element author (#PCDATA)> <!element publisher (#PCDATA)> <!element year (#PCDATA)> <!element source EMPTY> <!attlist book id ID #REQUIRED> <!attlist source form (hardcopy|latex|html|xml) #REQUIRED pages CDATA> Декларация списка атрибутов
Синтаксис DTD Последовательность книг (возможно пустая) <!element bibliographybook*> <!element book(title, authors, publisher, year, source?)> <!element title(#PCDATA)> <!element authorsauthor+> <!element author(#PCDATA)> <!element publisher(#PCDATA)> <!element year(#PCDATA)> <!element sourceEMPTY> <!attlist book id ID #REQUIRED> <!attlist source form (hardcopy|latex|html|xml) #REQUIRED pages CDATA> Заголовок, затем автор, затем издательство, затем год и может быть source Последовательность авторов Символьныеданные Пустой элемент
Синтаксис DTD <!element bibliography book*> <!element book (title, authors, publisher, year, source?)> <!element title (#PCDATA)> <!element authors author+> <!element author (#PCDATA)> <!element publisher (#PCDATA)> <!element year (#PCDATA)> <!element source EMPTY> <!attlist bookidID#REQUIRED> <!attlist source form(hardcopy|latex|html|xml)#REQUIRED pagesCDATA> Имя элемента Имя атрибута Тип атрибута Атрибут обязательный
Синтаксис DTD Тип атрибута “ID” <!attlist bookidID#REQUIRED> <!attlist selectedbook ref IDREF#REQUIRED> Тип атрибута “ссылка на ID” <selection> <selectedbookref="1"> </selection> … <bibliography> <bookid="1"> <title>… </title> … </book> </bibliography> IDREF атрибут ID атрибут
MathML • Сохраняет возможности LaTeX’а структурированной разметки формул • Два типа разметки: • Разметка представления(как в LaTeX’е) • Разметка содержания (для работы собственно с формулами, а не их изображениями) • Не привязан к полиграфии
Пример формулы <mfrac> <mn>1</mn> <msup> <mfenced> <mrow> <mi>α</mi> <mo>+</mo> <mi>β</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: • Язык XSLT для трансформации XML-документов • Словарь для форматирования XML. FO (Formatting Objects – свойства форматирования как в CSS)
Трансформация XSLT таблица стилей XML исходное дерево XML,HTML,csv, текст… результат Работа XSLT
Элементы XSLT • <xsl:stylesheetversion="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> • корневой элемент • <xsl:templatematch=шаблонname=имя> содержимое для замены </xsl:template> • Определяет правило: шаблонсодержимое для замены • <xsl:apply-templatesselect=множество узлов> • Применить правило к выбранному потомку (ко всем) • <xsl:call-templatename=имя>
Алгоритм работы XSLT • Основные шаги • сопоставляет шаблон элементам в исходном дереве, • находит элементы, подходящие под шаблон, • заменяет элемент на содержимое (из правила), • выбирает узлы для дальнейшей обработки • Управление • Рекурсивная обработка (<xsl:apply-templates/>) • Применение части правила для выбранных элементов (<xsl:for-each select=множество элементов>, <xsl:if …)
Пример применения XSLT Шаблон Тип элемента <bibliography> <bookid="1"> <title>Использованиесимвола&</title> <author>ИвановИ.</author> </book> <bookid="2"> <title>Использованиесимвола<</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> Текст замены • Результат • Список книг • Использование символа & Иванов И. • Использование символа < Петров П.
XML Applications & Industry Initiatives http://www.oasis-open.org/cover/xml.html#applications • Advertising: adXMLplace an ad onto an ad network or to a single vendor • Literature: Gutenbergconvert the world’s great literature into XML • Directories: dirXMLNovell’s Directory Services Markup Language (DSML) • Web Servers:apacheXMLparsers, XSL, web publishing • Travel:openTravelinformation for airlines, hotels, and car rental places • News:NewsMLcreation, transfer and delivery of news • Human Resources:XML-HRstandardization of HR/electronic recruiting XML definitions • International Dvt:IDMLimprove the mgt. and exchange of info. for sustainable development • Voice:VoxMLmarkup language for voice applications • Wireless:WAP(Wireless Application Protocol)wireless devices on the World Wide Web • Weather:OMFWeather 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 Функции • 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 Узлы пространства имен
<biblio><bookid="1"> <title>Язык XML</title> <author>Иванов И.</author> </book><bookid="2"> <title>Стихи</title> <author>Петров П.</author> <author>Иванов И.</author> <year value="2003"/> </book><bookid="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(author)=2] //author[following-sibling::* | preceding-sibling::* = 'Иванов И.'] XPath 2.0