Enabling Grids for E-sciencE Введение в XML. XML в примерах. М. Сапунов ИФВЭ, Протвино. www.eu-egee.org INFSO-RI-508833 Введение в XML Enabling Grids for E-sciencE • Стандарт для языка XML утвержден в 1998 году. • XML - Extensible Markup Language, потомок SGML. • XML это стандарт, предоставляющий средства для интеллектуального поиска информации, обмена данными, адаптивной обработки получаемых данных. • XML это текст но, он не предназначен для чтения. • Семейство технологий XML включает в себя XLink, XPointer, XSLT, XForms и т.д. • XML свободна от лицензий, платформо-независима и хорошо поддерживается сторонними разработчиками. INFSO-RI-508833 2 Термины Enabling Grids for E-sciencE • DTD (Document Type Definition) - язык описания схемы данных, применяемый в первой версии XML. • XSDL (XML Schema Definition Language). Новый и рекомендуемый способ формального описания структуры XML-документа. • DOM (Document Object Model). Спецификация высокого уровня, представляющая документы в виде структуры агрегированных объектов. Реализация DOM представляет собой парсер высокого уровня. INFSO-RI-508833 3 Правила XML Enabling Grids for E-sciencE • Контроль правильности XML - документа (DTD определения и схемы данных “Semantic Schema”). • Разметка XML – документа чувствительна к регистру. • Разметка XML - документа выполняется при помощи элементов называемых тэгами. Каждый открывающий тэг должен иметь соответствующий ему закрывающий. • Элементы могут содержать атрибуты. Значения атрибутов должны заключаться в кавычки. • Имена элементов должны быть уникальны для всего файла. • Для специальных символов используются зарезервированные конструкции. INFSO-RI-508833 4 Структура документа XML Enabling Grids for E-sciencE Простейшая структура XML – документа выглядит следующим образом: <?xml version="1.0" encoding="koi8-r"?> <log> <event date=" 01/Jan/2004:00:00:01 " result="success"> <ip-from> 195.151.62.18 </ip-from> <method>GET</method> <url-to> /misc/</url-to> <response>200</response> </event> </log> Где цветом выделены: Инструкция с версией языка и другие параметры Корневой элемент Простые элементы INFSO-RI-508833 5 Разметка XML Enabling Grids for E-sciencE <list> <item>Car</itm> <item>Plane</ITEM> <item>Train</item> </list> <text> <bold> <italic>XML</bold> </italic> </text> <forbidenNames> <A;name/> <last@name/> <@#$%^()%+?=/><A*2/><1ex/> </forbidenNames> <errors> <wrong_char a*b = "23432"/> <mismatched value = "12'/> <type value="aa"aa"/> </errors> <forbidenNames> <xmlTag/><XMLTag/> <XmLTag/><xMlTag/> <xmLTag/> </forbidenNames> <example> <isLower>23 < 46</isLower> <amp>Willey & sons</amp> <!-- A -- B --> </example> INFSO-RI-508833 6 Контроль правильности XML Enabling Grids for E-sciencE DTD - определения (Document Type Definition) • Задание правил для элементов и атрибутов • Описание категорий • Описание форматов бинарных данных Описание DTD может быть вынесено в файл, а может задаваться непосредственно в документе. <?xml version="1.0" standalone="yes" ?> <! DOCTYPE journal SYSTEM "journal.dtd"> ... ... <! DOCTYPE journal [ <!ELEMENT journal (contacts, issues, authors)> ... ]> ... Приоритет отдается внутренним описаниям. Пример внешнего DTD INFSO-RI-508833 7 Контроль правильности XML Enabling Grids for E-sciencE Пример DTD – определения, файл journal.dtd: <?xml encoding="koi8-r"?> <!ELEMENT log (event)+> <!ELEMENT event (ip-from,method,uri-to,result)> <!ELEMENT method (#PCDATA)> <!ELEMENT ip-from (#PCDATA)> <!ELEMENT url-to (#PCDATA)> <!ELEMENT response (#PCDATA)> <!ATTLIST event result CDATA #IMPLIED date CDATA #IMPLIED> !ELEMENT – ключевое слово при описании элементов. !ATTLIST – ключевое слово при описании атрибутов. Содержимое элементов, а также типов значений и параметров атрибутов определяется специальными маркерами, например: PCDATA, NMTOKEN, IMPLIED и т.д. INFSO-RI-508833 8 Контроль правильности XML Enabling Grids for E-sciencE Макроопределения DTD - компонент Создаться при помощи инструкции !ENTITY <!ENTITY hello ' Мы рады приветствовать Вас!' > Теперь в XML – документе можно использовать выражение &hello, которое будет заменено на соответствующее значениепри разборе документа. • Внутренние макроопределения. Предназначены для определения строковой константы. • Внешние макроопределения. Указывают на содержимое внешнего файла. Содержимое может быть как текстовым, так и двоичным. • Макроопределения правил. Используются для описания параметров в правилах атрибутов. INFSO-RI-508833 9 Контроль правильности XML Enabling Grids for E-sciencE • • • • Схемы данных (Semantic Schema) более мощными средствами для определения сложных структур данных. более понятный способ описания грамматики языка. способны легко модернизироваться и расширяться. Схемы данных позволяют описывать правила для XML- документа средствами самого же XML. <schema id="OurSchema"> <elementType id="#title"> <string/> </elementType> </schema> INFSO-RI-508833 10 Пространства имен XML Enabling Grids for E-sciencE • Пространство имен XML - это идентифицируемая с помощью ссылки URI [RFC2396] коллекция имен, используемых в XML документах для обозначения типов элементов и именования атрибутов. • Полное имя состоит из префикса пространства имен (xmlns) и локальную часть разделенное двоеточием. <x xmlns:edi='http://ecommerce.org/schema'> <!- для элемента "x" и его содержимого префикс "edi" связан с http://ecommerce.org/schema --> </x> Пример схемы данных и пространства имен. INFSO-RI-508833 11 DOM XML Enabling Grids for E-sciencE DOM представляет XML-документ в виде дерева, состоящего из узлов. В DOM определяются различные типы узлов, соответствующие разным конструкциям XML. INFSO-RI-508833 12 Ссылки по XML Enabling Grids for E-sciencE Ссылки на стандарт и на русские ресурсы: • http://www.w3.org/XML/ • http://www.w3.org/XML/Schema • http://www.w3.org/Style/XSL/ • http://www.xmlhack.ru/ • http://www.xml.nsu.ru/ INFSO-RI-508833 13