Автоматическая обработка естественного языка I. Обработка письменного текста XML — язык разметки структурированных (в т. ч. лингвистических) данных а также XSL — язык для преобразования данных XML, XSL, XYZ... Программа Что такое XML Назначение. Синтаксис Определение типа документов (DTD) Язык навигации по документу (XPath) Пространства имён (Namespaces) Преобразования документов (XSL) Что такое XML Где прочитать? http://en.wikipedia.org/wiki/Xml http://www.w3.org/XML/ http://w3schools.com — стандарты — простые пособия и тесты http://www.zvon.org/ — пособия, статьи и др. (на многих языках) http://www.raleigh.ru/tutorials/ — русские переводы нескольких пособий со ZVON.org Что такое XML XML = eXtensible Markup Language Что такое XML? eXtensible Markup Language – Extensible — расширяемый. Каждый пользователь приспосабливает его для своей задачи. XML внешне похож на HTML – Это тоже язык разметки (HyperText Markup Language) – Синтаксис обоих происходит от SGML (Standard Generalized Markup Language) Пример HTML <html> <head> <title>Title of this page</title> </head> <body> <p>This is my first homepage.<br> <b>This text is bold.</b> And this is <b>bold <i>and italic</b>, wow</i>! </p> </body> </html> ...Вот что из этого получается: 1page.htm Пример XML <?xml version="1.0" encoding="ISO-8859-1"?> <CHESSBOARD> <WHITEPIECES> <KING><POSITION COLUMN="G" ROW="1"/></KING> <BISHOP><POSITION COLUMN="D" ROW="6"/></BISHOP> <ROOK><POSITION COLUMN="E" ROW="1"/></ROOK> <PAWN><POSITION COLUMN="A" ROW="4"/></PAWN> <PAWN><POSITION COLUMN="B" ROW="3"/></PAWN> … </WHITEPIECES> <BLACKPIECES> <KING><POSITION COLUMN="B" ROW="6"/></KING> <QUEEN><POSITION COLUMN="A" ROW="7"/></QUEEN> <PAWN><POSITION COLUMN="A" ROW="5"/></PAWN> <PAWN><POSITION COLUMN="D" ROW="4"/></PAWN> </BLACKPIECES> </CHESSBOARD> ...Вот что он описывает: Чем XML отличается от HTML? Почти всем. Главное — назначением – HTML используется для отображения данных в браузере. В нем смешаны элементы содержания и оформления. – XML используется для хранения данных и описания их структуры. Он задаёт только содержание документа. Чем XML отличается от HTML? Гибкостью – Тэги HTML и их значение жёстко заданы в спецификации. – В спецификации XML фиксирован только синтаксис. Тэги XML и их значение задаются пользователем. – Фактически, XML — это не один язык, а семейство языков, потому что каждый пользователь, придумывая свои тэги, задаёт свой язык. Чем XML отличается от HTML? Немного — синтаксисом Требования к синтаксису более строгие, что делает структуру документа более наглядной и облегчает автоматизацию его проверки и обработки Применения XML Обработка структурированных данных – разработка веб-сайтов, системы управления содержанием (CMS); трансляции новостей (RSS) Google XML Sitemaps – базы данных (Native XML DBMS и экспорт-импорт из других БД) – создание и обработка метаданных (см. тж. Semantic Web) Dublin Core; OLAC, IMDI – ведение технической документации (формат DocBook и др.) – обработка текста и разметка мультимедиа OpenOffice.org 2.0+, MS Office 2007+ ELAN, Transcriber,… Применения XML Обработка структурированных данных – Semantic Web — «надстройка» над Web’ом, с помощью метаданных описывающая свойства и содержание (сетевых) ресурсов и логические связи между ними. Цель — осмысленная машинная обработка информации, логические выводы и т. д. – Semantic Web основан на модели RDF (Resource Description Framework), где все отношения описываются тройками «субъект-отношениеобъект», а все элементы троек являются идентификаторами ресурсов (URI). Один из двух основных форматов записи RDF — RDF-XML. Применения XML Обмен данными между приложениями Программы, использующие разные внутренние форматы, могут успешно обмениваться данными в XML. – промышленная разработка и производство – электронная коммерция (business2business, business2consumer) Amazon Web Services – лингвистика: Fieldworks (БД) => XML => ELAN Обмен данными с портативными устройствами Некоторые сферы применения XML – – – – – – – Scalable Vector Graphics (SVG) (векторная графика); SMIL (Synchronized Multimedia Integration Language); VoiceXML (команды программ речевого интерфейса); MusicXML (музыкальные партитуры); ebXML (electronic business XML); Chemical Markup Languge; Structured Product Labeling (фармакология);… Рекомендуемые XML-редакторы http://www.firstobject.com foxe — firstobject XML editor (.exe в архиве .zip, не требует установки) Очень простой и быстрый редактор. Поддерживает Юникод. Имеется валидатор. http://www.freexmleditor.com/ Exchanger XML Lite V3.2 (требует установки, понадобится для выполнения заданий по XSL) Полнофункциональный редактор XML/XSL с отладчиком для XSL-трансформаций. Увы, давно не обновлялся. Простой XML-документ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE booklist SYSTEM "books-1.dtd"> <booklist> <book> <author>А.А. Зализняк</author> <title>Древнерусские энклитики</title> <city>Москва</city> <year>2008</year> </book> <book> <author>J.K. Rowling</author> <title>Harry Potter and the Secret Chamber</title> <city>New York</city> <year>2005</year> </book> </booklist> Синтаксис XML Основные понятия: – документ (≈ файл) – элемент <KING> <POSITION COLUMN="G" ROW="1"/> </KING> – атрибут .. COLUMN="G" .. Синтаксис XML Каждый документ должен иметь ровно один корневой элемент У каждого открывающего тэга должен быть закрывающий Тэги должны быть правильно вложены друг в друга Значения атрибутов обязательно берутся в кавычки Регистр символов в именах важен! Синтаксис XML Имя элемента может: – содержать буквы, цифры, подчеркивание, двоеточие или точку – начинаться с только с буквы или подчеркивания кроме букв “xml” (в любом регистре) Значения атрибутов могут заключаться в (двойные прямые) кавычки либо апострофы. Одни могут использоваться внутри других: <xsl:param name="file" select="'books.xml'"/> <xsl:param name='file' select='"books.xml"'/> Специальные символы Entities В тексте элемента не могут использоваться специальные символы разметки: < и &. Они должны заменяться на &lt; и &amp;. Также определены: &gt; > &quot; " &apos; ' CDATA sections Если необходимо вставить в документ фрагмент текста, содержащий много спецсимволов, используется конструкция CDATA (Character Data). Парсер игнорирует всё до символов ]]>: <example> <![CDATA[ <%aaa%>bb&cc<<dd ]]> </example> Правильность документов XML-документ, отвечающий требованиям синтаксиса, называется правильно построенным (well-formed). Правильно построенные документы успешно обрабатываются парсером. Однако, эта характеристика ничего не говорит о содержании документа — осмысленно ли оно? Знаем ли мы, что означают его элементы и атрибуты? Определение типа (DTD) DTD — Document Type Definition Задаёт возможную структуру для некоторого типа XML-документов (т. е. задаёт один возможный язык) – как могут называться элементы – как они могут друг в друга вкладываться – какие у каждого элемента могут быть атрибуты Документ, отвечающий некоторому DTD, называется действительным (valid). Этот вид правильности проверяется валидатором. Определение типа (DTD) <?xml version="1.0" encoding="UTF-8"?> <!ELEMENT booklist (book*) > <!ELEMENT book (author, title, city, year)> <!ELEMENT author (#PCDATA)> <!ELEMENT title (#PCDATA)> <!ELEMENT city (#PCDATA)> <!ELEMENT year (#PCDATA)> Определение типа (DTD) Содержимое элементов <!ELEMENT book (author, title, city, year)> СПИСОК ДОЧЕРНИХ ЭЛЕМЕНТОВ author, title — последовательность author|title — выбор (или — или) EMPTY — пустой элемент ANY — любая комбинация допустимых типов #PCDATA — текстовое содержание (Parsed Character Data: оно анализируется парсером, так как потенциально может содержать вложенные элементы) Определение типа (DTD) Количество повторений элемента <!ELEMENT booklist (book*) > book — 1, обязательный book? — 1, необязательный (0 или 1) book+ — 1 или больше (сколько угодно) book* — 0 или больше (сколько угодно) Добавим в book необязательный элемент publisher? (издательство) Определение типа (DTD) Добавляем атрибуты В документ: <book lang="rus" bookid="AAZ01"> <author>А.А. Зализняк</author> … </book> имя атрибута В DTD: <!ATTLIST book lang CDATA #IMPLIED bookid ID #REQUIRED> Определение типа (DTD) Типы атрибутов <!ATTLIST book lang CDATA #IMPLIED bookid ID #REQUIRED genre (fiction|nonfiction) #IMPLIED> (..|..) — одно из перечисленных значений CDATA — простой текст (Character Data) ID — идентификатор (значение не может повторяться) IDREF — ссылка на идентификатор другого элемента …и некоторые другие Определение типа (DTD) Значения атрибутов по умолчанию <!ATTLIST book lang CDATA "eng" bookid ID #REQUIRED genre (fiction|nonfiction) #IMPLIED> либо значение по умолчанию, либо: #IMPLIED — атрибут необязателен #REQUIRED — атрибут обязателен #FIXED значение — значение неизменно DTD и другие схемы DTD — только один из видов схем для описания структуры XML-документов. + Может встраиваться в описываемый документ. + Компактные размеры. + Поддерживается большинством парсеров. – – – – Синтаксис отличен от XML. Ограниченные возможности. Не поддерживает пространства имён. Не поддерживает типы данных. DTD и другие схемы В серьезных проектах чаще применяются более сложные и выразительные средства, в особенности два: XML Schema – – – – Синтаксис XML. Развернутая система типов данных, но не расширяемая. Громоздкая запись. Легко описать фиксированное число (диапазон) повторений элемента/группы. Relax NG – Два варианта синтаксиса: XML и компактный, полностью переводимые друг в друга. – Редуцированная система типов данных, но с возможностями расширения. – Допускает группы с нефиксированным порядком элементов. – Атрибуты могут использоваться при моделировании структуры документа наравне с элементами. Например, наличие дочернего элемента может зависеть от определенного значения атрибута. Продолжение — на w3schools.com (и не только) Тест на основные понятия http://w3schools.com/xml/xml_quiz.asp Учебники по XML и другим технологиям (XPath, XSLT и др.)