Современные языки и технологии программирования Введение в XML.

Презентация:



Advertisements
Похожие презентации
Современные языки и технологии программирования Использование XML.
Advertisements

DTD Document Type Definition среда, 11 декабря 2013 г.среда, 11 декабря 2013 г.среда, 11 декабря 2013 г.среда, 11 декабря 2013 г.среда, 11 декабря 2013.
SAX Simple API for XML Презентацию подготовила Иванова Анна, гр. 950б.
Язык запросов XML. XML (Extensible Markup Language) - это новый SGML-производный язык разметки документов, позволяющий структурировать информацию разного.
Java Advanced Введение в XML. 2 СПбГУ ИТМО Georgiy KorneevJava Advanced / Введение в XML Содержание 1.XML 2.Пространства имен 3.SAX 4.DOM 5.Заключение.
Структура XML-документов По материалам курса University of Washington
WEB- ТЕХНОЛОГИИ Лекция 2. Задача обмена данными 1 Форматы обмена данными : Текстовый CSV (Comma Separated Values) Локальные XML.
WPF (Windows Presentation Foundation) WPF – новая технология.NET Framework 3.x для создания пользовательских интерфейсов в клиентских приложениях. Одна.
Java Advanced Описание и проверка структуры XML. 2 СПбГУ ИТМО Georgiy KorneevJava Advanced / Описание и проверка структуры XML Содержание 1.DTD 2.XML.
XML Extensible Markup Language вторник, 26 ноября 2013 г.вторник, 26 ноября 2013 г.вторник, 26 ноября 2013 г.вторник, 26 ноября 2013 г.вторник, 26 ноября.
Java Advanced Введение в XML. 2 СПбГУ ИТМО Georgiy KorneevJava Advanced / Введение в XML Содержание 1.XML 2.Пространства имен 3.SAX 4.DOM 5.Заключение.
БАЗЫ ДАННЫХ ЛЕКЦИЯ 14. тема: XML-ТЕХНОЛОГИИ В БАЗАХ ДАННЫХ.
Программный доступ к XML DOM, SAX,.NET среда, 11 декабря 2013 г.среда, 11 декабря 2013 г.среда, 11 декабря 2013 г.среда, 11 декабря 2013 г.среда, 11 декабря.
Лекция 11 Листы стилей XML Язык XSL позволяет преобразовывать XML- документы в документы других типов, а также задает порядок их форматирования. Принципы.
XML- ТЕХНОЛОГИИ Лекция 1 Введение в XML. Курс «XML- технологии » Лекций – 14 часов Лабораторные работы – 16 часов Зачет.
XML и XSLT (2) Матросов Александр Васильевич Санкт-Петербургский государственный университет.
XML - ПРАВИЛА ПОСТРОЕНИЯ ДОКУМЕНТОВ. Элементы электронного УМК Учебный план Программа дисциплины Структура курса Электронный конспект Обучающие и аттестующие.
ЯЗЫКИ РАЗМЕТКИ введение. Категории информационных ресурсов Данные – сведения о сущностях предметной области, их свойствах и связях с другими сущностями.
Java Advanced XML Transformations 1.0 (XSLT 1.0).
XML eXtensible Markup Language 1.Определение типа документов (DTD) 2.Язык навигации внутри XML-документа (XPath)
Транксрипт:

Современные языки и технологии программирования Введение в XML

Предпосылки – SGML SGML – Standard Generalized Markup Language – предназначен для обеспечения обмена информации между различными компаниями и информационными системами 1980 год, IBM, DEC, Налоговая полиция США Описание формата документа DTD (Document Type Definition) Редкая процедура пересмотра стандарта, сложность внесения изменений Требует высоких накладных расходов на разбор и валидацию

Предспосылки - HTML Основан на SGML и предназначен для представления информации в обозревателях WEB Поддерживает гиперссылки Ориентирован на визуальное представление содержимого и форматирование В общем случае HTML документы не являются корректными (валидными) SGML документами Фиксированный набор тегов, с невозможностью задания собственных данных

XML – Требования и цели 1. Должен быть готов для использования в Internet 2. Должен поддерживаться многими приложениями 3. Должен быть совместим с SGML 4. Создание программ использующих XML должно быть простым 5. Число необязательных возможностей языка должно быть сведено к минимуму 6. Документы должны быть понятны человеку 7. Дизайн XML должен разрабатываться быстро 8. Спецификация XML должна быть чекой и краткой 9. Создание XML документов должно быть простым 10. Краткость команд разметки XML не имеет значения

Группа технологий XML Extensible Markup Language (XML) 1.0/1.1 XML Namespaces - пространства имен XML Schema – схемы XML XPath – XML Path Language XLink – XML Linking Language XPointer – XML Pointer Language XSL/XSLT – Extensible Stylesheet Language/Transformation SAX – Simple API for XML – (потоки и события) DOM – Document Object Model (элементы, узлы, дерево, редактирование и сериализация) JAXB – Java Architecture for XML Binding

Правильный (well-formed) документ XML У каждого элемента должен быть открывающий и закрывающий теги В документе должен быть только один корневой элемент Названия элементов и атрибутов чувствительны к регистру Элементы могут быть вложены друг в друга но не могут пересекаться Некоторые символы должны предваряться управляющими символами или замещаться последовательностями специальных символов Значения атрибутов должны быть взяты в кавычки (двойные либо апострофы) Пустые элементы должны иметь особый формат

Структура XML документа Документ (1.0) должен содержать символы следующих диапазонов: Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] Объявление (заголовок) XML: Определение типа документа (DTD) Корневой элемент Комментарии Инструкции обработки

Специальные последовательности &lt; используется для знака < &gt; используется для знака > &amp; используется для & &quot; используется для &apos; используется для &#x26 шестнадцатиричный код символа &#38 десятичный код символа Символьные данные не подлежащие разбору: _

Пример документа computer scientist mathematician cryptographer ]]>

Пример DTD

Атрибуты или элементы? Элементы задают сущности (объекты) Атрибуты задают свойства объекта В элементе может быть не более одного атрибута с заданным именем Атрибуты не могут иметь структуры Атрибуты эффективнее и лаконичнее Использование атрибутов упрощает доступ к ним при использовании SAX и DOM Если вы не уверены что использовать в конкретном случае – используйте элементы

Document Type Definition Определеяет: Вложенность элементов Ограничения на количество и наличие элементов Разрешенные атрибуты элементов Типы атрибутов и значения по умолчанию Сущности (ENTITY) Не определяет: Ограничения на содержимое атрибутов и элементов (формат числовых значений, длины строк и т.д.) Собственные типы данных и отношения между ними

DTD - декларация PUBLIC – публичный идентификатор для загрузки внешнего DTD по известному имени или URL SYSTEM – системный URL для загрузки DTD Встроенная декларация

DTD Описание элементов

DTD примитивы Подстановка &MC; текстом Master Card Внешний примитив (должен быть well formed и будет подвержен разбору) Внешний не подвергаемый разбору примитив Параметрическая сущность (только внутри DTD):

DTD описание атрибутов Requirement::= #IMPLIED | #REQUIRED | #FIXED literal Type :== CDATA | NMTOKEN | NMTOKENS | ENTITY | ENTITIES | ID | IDREF | IDREFS | NOTATION | Enum CDATA – текст NMTOKEN – токен (с буквы, без пробела) NMTOKENS – токены через пробелы ID – уникальный идентификатор (для всего документа) IDREF – ссылка на уникальный или уникальные (IDREFS) идентификаторы через пробелы ENTITY содержимое должно быть именем примитива, неподвергаемого разбору ENTITIES – разделенные пробелом неразбираемые примитивы

DTD описание атрибутов Enum – список фиксированных значений разделенных | NOTATION – имя нотации определенной в документе

JAXP Java API for XML Processing SAX (Simple API for XML) javax.xml.parsers.SAXParser Требует мало памяти Потоковая обработка, событийная модель DOM (Document Object Model) javax.xml.parsers.DocumentBuilder Строит дерево «узлов» документа Позволяет редактировать документ XSLT javax.xml.transform.Transformer

SAX Simple API for XML (Java)

Работа с SAX Реализовать свой обработчик наследуя класс org.xml.sax.helpers.DefaultHandler, реализующий интерфейсы: ContentHandler DTDHandler EntityResolver ErrorHandler Получить объект парсера SAXParserFactory f = SAXParserFactory.newInstance(); SAXParser p = f.newSAXParser(); Запустить разбор документа p.parse(new InputSource(…), myHandler);

Document Object Model

Работа с DOM Получить разборщик документа DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Получить объект документа Document doc = builder.parse(new InputSource(…)); Работать с элментами документа Element root = doc.getDocumentElement(); root.getChildNodes(); root.getElementsByTagName(); Основной класс дерева - Node

Сохранение документа DOM Создать трансформер TransformerFactory factory = TransformerFactory.newInstance(); Transformer t = factory.newTransformer(); Создать объект для трансформации DOMSource docSource = new DOMSource(doc); DOMSource nodeSource = new DOMSource(node); Осуществить сохранение документа (или узла): StreamResult res = new StreamResult(…); t.transform(source, res);

Задача 1. Выбрать задачу (магазин, записная книжка, погода, …) 2. Определить DTD 3. Написать пример документа, провалидировать его 4. Разобрать документ с помощью SAX, подсчитать количество элементов и атрибутов 5. Загрузить с помощью DOM, изменить содержимое 6. Сохранить результат

Использование Java API из JRuby include Java #доступен Java API с полными именами import org.xml.sax.helpers.DefaultHandler #DefaultHandler доступен без квалификации пакета #наследование от Java-класса class MySAXHandler < DefaultHandler #перегрузка метода Java-класса def startElement(uri, localName, qName, attrs) #тело метода end #определение других методов end #создание экземпляра класса (Ruby или Java) MySAXHandler.new DefaultHandler.new java.lang.Thread.new {puts Thread started}