SlideShare a Scribd company logo
Проектирование
Информационных Систем
Лекция 1
XML
Моисеенко Антон
canggu@mail.ru
СПГУАП
Кафедра Информационно-Сетевых Технологий
Содержание курса
1. Текстовые данные
2. CSV
3. JSON
4. XML
5. Основные понятия
6. Особенности языка
7. DOM
8. SAX
9. SAX vs. DOM
10. StAX
11. JAXB
12. XPATH
13. XSLT
14. XQuery
Текстовые данные
• Freeform тексты сложно обрабатывать
автоматически
• Бинарные данные почти невозможно
читать простому смертному
Нужен компромисс: формат
представления данных, который будет
понятен и человеку, и машине в
(относительно) равной степени.
CSV
Формат предполагает использование
специальных символов-разделителей для
отделения значения двух полей
• Символы-разделители: . , ; t
• Одна строка хранит информацию об одном
объекте, следствие – таблицы «плоские»
• Опционально, первая строка – заголовок с
названием полей
JSON
Средство передачи объектов в текстовом
виде поверх протокола HTTP
•Простой
•Human-readable
•Нативная поддержка из JavaScript
Библиотеки для всех мыслимых платформ и
языков
•Есть возможность передавать
иерархические данные
JSON
{
“ firstName”:”Hubert”,
“ lastName”:”Cumberdale”,
“ phone”: [ “312 3219359”, “800 3784753” ],
“ address”: {
“ city”:”Aurora”,
“ street”:”State”,
“ building”:”1”,
“ apartment”:”10”
}
}
JSON
{
“firstName”:”Hubert”,
“lastName”:”Cumberdale”,
“phone”: [“312 3219359”,“800 3784753” ],
“address”:{
“city”:”Aurora”,
“street”:”State”,
“building”:”1”,
“apartment”:”10”
}
}
XML
XML позволяет хранить структурированные данные любой
природы, сохраняя иерархическую структуру
■ Есть средства автоматической генерации, разбора и
верификации XML-документов
■ Поддерживается множество разных кодировок
■ Есть возможность использования пространств имён
■ Есть средства хранения бинарных данных в текстовом виде
(Base64)
■ Развитые средства для преобразования документов (XSLT,
XPATH, …)
XML
■ XML-документ – дерево
■ Другие абстракции –
элемент, атрибут и их
значения
■ В корне – всегда
единственный элемент
<?xml version="1.0" encoding="UTF-8"?>
<EmployeeData>
<Employee>
<FirstName></FirstName>
<LastName></LastName>
<Address
city=“”
street=“”
building=“”
apartment=“”
/>
</Employee>
</EmployeeData>
XML
Почему XML?
▪Readability
▪Hierarchical
▪Language independent
▪OS-independent
Основные понятия
■ Declaration
■ Element
■ Tag
■ Attribute
■ Data
■ CDATA
<?xml version="1.0"
encoding="utf-8"?>
<EmployeeData>
<Person>
<Name first="John”
last="Doe"/>
<Age>34</Age>
<Department>IT</Department>
</Person>
</EmployeeData>
Особенности языка
▪ Все файлы XML имеют структуру
(иерархическая модель данных).
▪ Основные элементы XML – узлы (nodes).
▪ Каждый элемент (узел) обязан иметь
открывающий и закрывающий тег.
▪ Теги XML не заданы с самого начала, вы
должны определить свои собственные
теги.
Особенности языка
▪ Элементы могут иметь атрибуты, значения
которых заключаются в кавычки.
В XML Учитывается регистр символов.
▪ Вся информация между начальным
и конечным тэгами – это данные,
и поэтому учитываются все символы
форматирования (пробелы, переводы
строк, табуляции).
▪ Имеются инструкции обработки файла и
комментарии.
DOM
Document Object Model – набор инструментов для
работы с XML-документами как деревьями
объектов
•Позволяет обращаться к произвольному
фрагменту дерева в любой момент времени
•Стандартизируется в W3C
SAX
Simple API for XML – API для последовательного
разбора потока xml-данных
•Последовательно обрабатывает поток
•В определённые моменты генерируются событие
(начало элемента, появление атрибута, конец
элемента…)
•Обработка выполняется внутри callback-функций
•Требует фиксированного (относительно
небольшого) объёма памяти для документов любого
размера
•Не позволяет посмотреть содержимое всего
документа целиком
SAX vs. DOM
SAX:
■ Документ не подвергается
структурным изменениям
■ Документ имеет большой
размер
DOM:
■ Документ подвергается
преобразованиям
■ Документы имеют
небольшой размер
■ Есть необходимость
просматривать документ в
разных направлениях
StAX
Streaming API for XML – эволюция подходов SAX и DOM
•Приложение самостоятельно «вытягивает» события из парсера
•Как и в SAX, поддерживается только чтение вперёд
•Добавляются возможности по управлению процессом разбора:
приостановить разбор, пропустить ненужный контент, etc.
JAXB
Java Architecture for XML Binding – набор инструментов для
(де)сериализации данных (из)в XML
•Использует аннотации для описания сериализуемых полей
•Типы данных XML отображаются на типы данных Java
•xjc позволяет сгенерировать по XML-схеме java классы
•schemagen генерирует схему по java классу
XPATH
XPATH – язык описания запросов к XML-дереву
•Позволяет получить значение элемента или атрибута по «пути» от
корня дерева
•Позволяет выполнять некоторые простейшие операции над
значениями (арифметические и строковые операции)
•Используется в XSLT
XSLT
Набор средств для преобразования XML-документов
•Используется в основном для изменения формата или фильтрации
существующих xml-документов
•Широко применяется для представления xml-данных в приятном для
чтения виде
XQUERY
Язык для обработки xml-данных.
•Ориентирован не на форматирование данных, а на обработку
(аналогичен языку SQL)
Вопросы?

More Related Content

Similar to Design of Information Systems. Lecture #1. XML

Java. Lecture 07. Advanced XML
Java. Lecture 07. Advanced XMLJava. Lecture 07. Advanced XML
Java. Lecture 07. Advanced XMLcolriot
 
Msu.Center.Lectures.J07 Advanced Xml
Msu.Center.Lectures.J07 Advanced XmlMsu.Center.Lectures.J07 Advanced Xml
Msu.Center.Lectures.J07 Advanced Xmlolegol
 
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Yandex
 
C++ STL & Qt. Занятие 06.
C++ STL & Qt. Занятие 06.C++ STL & Qt. Занятие 06.
C++ STL & Qt. Занятие 06.
Igor Shkulipa
 
Виктор Гунько "Трансфер данных: есть ли жизнь за пределами JSONa"
Виктор Гунько "Трансфер данных: есть ли жизнь за пределами JSONa"Виктор Гунько "Трансфер данных: есть ли жизнь за пределами JSONa"
Виктор Гунько "Трансфер данных: есть ли жизнь за пределами JSONa"
DataArt
 
Базы данных лекция №12
Базы данных лекция №12Базы данных лекция №12
Базы данных лекция №12
Vitaliy Pak
 
Android - 12 - Data types
Android - 12 - Data typesAndroid - 12 - Data types
Android - 12 - Data types
Noveo
 
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Yandex
 
Msu.Center.Lectures.J06 Io
Msu.Center.Lectures.J06 IoMsu.Center.Lectures.J06 Io
Msu.Center.Lectures.J06 Ioolegol
 
phpConf 2010 Классификация систем хранения
phpConf 2010 Классификация систем храненияphpConf 2010 Классификация систем хранения
phpConf 2010 Классификация систем хранения
Slach
 
Клиент-серверные приложения на iPhone
Клиент-серверные приложения на iPhoneКлиент-серверные приложения на iPhone
Клиент-серверные приложения на iPhone
Pavel Bashmakov
 
Cocoa Networking
Cocoa NetworkingCocoa Networking
Cocoa Networkingguest57eb8a
 
JavaScript on frontend and backend (in Russian
JavaScript on frontend and backend (in RussianJavaScript on frontend and backend (in Russian
JavaScript on frontend and backend (in RussianMikhail Davydov
 
Java осень 2013 лекция 7
Java осень 2013 лекция 7Java осень 2013 лекция 7
Java осень 2013 лекция 7Technopark
 
XML, JSON (Lecture 11 – XML, JSON)
XML, JSON (Lecture 11 – XML, JSON)XML, JSON (Lecture 11 – XML, JSON)
XML, JSON (Lecture 11 – XML, JSON)
Noveo
 
Data Destribution service OMG standart
Data Destribution service OMG standart Data Destribution service OMG standart
Data Destribution service OMG standart
Sergei Seleznev
 
Современный подход к локализации на примере одного проекта
Современный подход к локализации на примере одного проектаСовременный подход к локализации на примере одного проекта
Современный подход к локализации на примере одного проекта
SQALab
 
SharePoint и OpenXML
SharePoint и OpenXMLSharePoint и OpenXML
SharePoint и OpenXML
Vitaly Baum
 
Платформа для автоматического тестирования Erlang проектов на примере UserGat...
Платформа для автоматического тестирования Erlang проектов на примере UserGat...Платформа для автоматического тестирования Erlang проектов на примере UserGat...
Платформа для автоматического тестирования Erlang проектов на примере UserGat...DevDay
 
1. основы
1. основы1. основы
1. основы
Odant
 

Similar to Design of Information Systems. Lecture #1. XML (20)

Java. Lecture 07. Advanced XML
Java. Lecture 07. Advanced XMLJava. Lecture 07. Advanced XML
Java. Lecture 07. Advanced XML
 
Msu.Center.Lectures.J07 Advanced Xml
Msu.Center.Lectures.J07 Advanced XmlMsu.Center.Lectures.J07 Advanced Xml
Msu.Center.Lectures.J07 Advanced Xml
 
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
 
C++ STL & Qt. Занятие 06.
C++ STL & Qt. Занятие 06.C++ STL & Qt. Занятие 06.
C++ STL & Qt. Занятие 06.
 
Виктор Гунько "Трансфер данных: есть ли жизнь за пределами JSONa"
Виктор Гунько "Трансфер данных: есть ли жизнь за пределами JSONa"Виктор Гунько "Трансфер данных: есть ли жизнь за пределами JSONa"
Виктор Гунько "Трансфер данных: есть ли жизнь за пределами JSONa"
 
Базы данных лекция №12
Базы данных лекция №12Базы данных лекция №12
Базы данных лекция №12
 
Android - 12 - Data types
Android - 12 - Data typesAndroid - 12 - Data types
Android - 12 - Data types
 
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
 
Msu.Center.Lectures.J06 Io
Msu.Center.Lectures.J06 IoMsu.Center.Lectures.J06 Io
Msu.Center.Lectures.J06 Io
 
phpConf 2010 Классификация систем хранения
phpConf 2010 Классификация систем храненияphpConf 2010 Классификация систем хранения
phpConf 2010 Классификация систем хранения
 
Клиент-серверные приложения на iPhone
Клиент-серверные приложения на iPhoneКлиент-серверные приложения на iPhone
Клиент-серверные приложения на iPhone
 
Cocoa Networking
Cocoa NetworkingCocoa Networking
Cocoa Networking
 
JavaScript on frontend and backend (in Russian
JavaScript on frontend and backend (in RussianJavaScript on frontend and backend (in Russian
JavaScript on frontend and backend (in Russian
 
Java осень 2013 лекция 7
Java осень 2013 лекция 7Java осень 2013 лекция 7
Java осень 2013 лекция 7
 
XML, JSON (Lecture 11 – XML, JSON)
XML, JSON (Lecture 11 – XML, JSON)XML, JSON (Lecture 11 – XML, JSON)
XML, JSON (Lecture 11 – XML, JSON)
 
Data Destribution service OMG standart
Data Destribution service OMG standart Data Destribution service OMG standart
Data Destribution service OMG standart
 
Современный подход к локализации на примере одного проекта
Современный подход к локализации на примере одного проектаСовременный подход к локализации на примере одного проекта
Современный подход к локализации на примере одного проекта
 
SharePoint и OpenXML
SharePoint и OpenXMLSharePoint и OpenXML
SharePoint и OpenXML
 
Платформа для автоматического тестирования Erlang проектов на примере UserGat...
Платформа для автоматического тестирования Erlang проектов на примере UserGat...Платформа для автоматического тестирования Erlang проектов на примере UserGat...
Платформа для автоматического тестирования Erlang проектов на примере UserGat...
 
1. основы
1. основы1. основы
1. основы
 

More from Anton Moiseenko

Java core-lect6-part3-annotation.ppt
Java core-lect6-part3-annotation.pptJava core-lect6-part3-annotation.ppt
Java core-lect6-part3-annotation.ppt
Anton Moiseenko
 
Java core-lect6-part2-reflection-api.ppt
Java core-lect6-part2-reflection-api.pptJava core-lect6-part2-reflection-api.ppt
Java core-lect6-part2-reflection-api.ppt
Anton Moiseenko
 
Java Core. Lecture#6. Part#1. Generics.
Java Core. Lecture#6. Part#1. Generics.Java Core. Lecture#6. Part#1. Generics.
Java Core. Lecture#6. Part#1. Generics.
Anton Moiseenko
 
Java Core. Lecture# 5. Concurrency.
Java Core. Lecture# 5. Concurrency.Java Core. Lecture# 5. Concurrency.
Java Core. Lecture# 5. Concurrency.
Anton Moiseenko
 
Java Core. Lecture# 4. Collections.
Java Core. Lecture# 4. Collections.Java Core. Lecture# 4. Collections.
Java Core. Lecture# 4. Collections.
Anton Moiseenko
 
Java Core. Lecture# 3. Part# 2. Exceptions.
Java Core. Lecture# 3. Part# 2. Exceptions.Java Core. Lecture# 3. Part# 2. Exceptions.
Java Core. Lecture# 3. Part# 2. Exceptions.
Anton Moiseenko
 
Java Core. Lecture# 3. Part# 3. Multithreading.
Java Core. Lecture# 3. Part# 3. Multithreading.Java Core. Lecture# 3. Part# 3. Multithreading.
Java Core. Lecture# 3. Part# 3. Multithreading.
Anton Moiseenko
 
Java Core. Lecture# 3. Part# 1. Abstract classes.
Java Core. Lecture# 3. Part# 1. Abstract classes.Java Core. Lecture# 3. Part# 1. Abstract classes.
Java Core. Lecture# 3. Part# 1. Abstract classes.
Anton Moiseenko
 
Java Core. Lecture# 2. Classes & objects.
Java Core. Lecture# 2. Classes & objects.Java Core. Lecture# 2. Classes & objects.
Java Core. Lecture# 2. Classes & objects.
Anton Moiseenko
 
Java Core. Lecture# 1. Intro
Java Core. Lecture# 1. IntroJava Core. Lecture# 1. Intro
Java Core. Lecture# 1. Intro
Anton Moiseenko
 

More from Anton Moiseenko (10)

Java core-lect6-part3-annotation.ppt
Java core-lect6-part3-annotation.pptJava core-lect6-part3-annotation.ppt
Java core-lect6-part3-annotation.ppt
 
Java core-lect6-part2-reflection-api.ppt
Java core-lect6-part2-reflection-api.pptJava core-lect6-part2-reflection-api.ppt
Java core-lect6-part2-reflection-api.ppt
 
Java Core. Lecture#6. Part#1. Generics.
Java Core. Lecture#6. Part#1. Generics.Java Core. Lecture#6. Part#1. Generics.
Java Core. Lecture#6. Part#1. Generics.
 
Java Core. Lecture# 5. Concurrency.
Java Core. Lecture# 5. Concurrency.Java Core. Lecture# 5. Concurrency.
Java Core. Lecture# 5. Concurrency.
 
Java Core. Lecture# 4. Collections.
Java Core. Lecture# 4. Collections.Java Core. Lecture# 4. Collections.
Java Core. Lecture# 4. Collections.
 
Java Core. Lecture# 3. Part# 2. Exceptions.
Java Core. Lecture# 3. Part# 2. Exceptions.Java Core. Lecture# 3. Part# 2. Exceptions.
Java Core. Lecture# 3. Part# 2. Exceptions.
 
Java Core. Lecture# 3. Part# 3. Multithreading.
Java Core. Lecture# 3. Part# 3. Multithreading.Java Core. Lecture# 3. Part# 3. Multithreading.
Java Core. Lecture# 3. Part# 3. Multithreading.
 
Java Core. Lecture# 3. Part# 1. Abstract classes.
Java Core. Lecture# 3. Part# 1. Abstract classes.Java Core. Lecture# 3. Part# 1. Abstract classes.
Java Core. Lecture# 3. Part# 1. Abstract classes.
 
Java Core. Lecture# 2. Classes & objects.
Java Core. Lecture# 2. Classes & objects.Java Core. Lecture# 2. Classes & objects.
Java Core. Lecture# 2. Classes & objects.
 
Java Core. Lecture# 1. Intro
Java Core. Lecture# 1. IntroJava Core. Lecture# 1. Intro
Java Core. Lecture# 1. Intro
 

Design of Information Systems. Lecture #1. XML

  • 1. Проектирование Информационных Систем Лекция 1 XML Моисеенко Антон canggu@mail.ru СПГУАП Кафедра Информационно-Сетевых Технологий
  • 2. Содержание курса 1. Текстовые данные 2. CSV 3. JSON 4. XML 5. Основные понятия 6. Особенности языка 7. DOM 8. SAX 9. SAX vs. DOM 10. StAX 11. JAXB 12. XPATH 13. XSLT 14. XQuery
  • 3. Текстовые данные • Freeform тексты сложно обрабатывать автоматически • Бинарные данные почти невозможно читать простому смертному Нужен компромисс: формат представления данных, который будет понятен и человеку, и машине в (относительно) равной степени.
  • 4. CSV Формат предполагает использование специальных символов-разделителей для отделения значения двух полей • Символы-разделители: . , ; t • Одна строка хранит информацию об одном объекте, следствие – таблицы «плоские» • Опционально, первая строка – заголовок с названием полей
  • 5. JSON Средство передачи объектов в текстовом виде поверх протокола HTTP •Простой •Human-readable •Нативная поддержка из JavaScript Библиотеки для всех мыслимых платформ и языков •Есть возможность передавать иерархические данные
  • 6. JSON { “ firstName”:”Hubert”, “ lastName”:”Cumberdale”, “ phone”: [ “312 3219359”, “800 3784753” ], “ address”: { “ city”:”Aurora”, “ street”:”State”, “ building”:”1”, “ apartment”:”10” } }
  • 7. JSON { “firstName”:”Hubert”, “lastName”:”Cumberdale”, “phone”: [“312 3219359”,“800 3784753” ], “address”:{ “city”:”Aurora”, “street”:”State”, “building”:”1”, “apartment”:”10” } }
  • 8. XML XML позволяет хранить структурированные данные любой природы, сохраняя иерархическую структуру ■ Есть средства автоматической генерации, разбора и верификации XML-документов ■ Поддерживается множество разных кодировок ■ Есть возможность использования пространств имён ■ Есть средства хранения бинарных данных в текстовом виде (Base64) ■ Развитые средства для преобразования документов (XSLT, XPATH, …)
  • 9. XML ■ XML-документ – дерево ■ Другие абстракции – элемент, атрибут и их значения ■ В корне – всегда единственный элемент <?xml version="1.0" encoding="UTF-8"?> <EmployeeData> <Employee> <FirstName></FirstName> <LastName></LastName> <Address city=“” street=“” building=“” apartment=“” /> </Employee> </EmployeeData>
  • 11. Основные понятия ■ Declaration ■ Element ■ Tag ■ Attribute ■ Data ■ CDATA <?xml version="1.0" encoding="utf-8"?> <EmployeeData> <Person> <Name first="John” last="Doe"/> <Age>34</Age> <Department>IT</Department> </Person> </EmployeeData>
  • 12. Особенности языка ▪ Все файлы XML имеют структуру (иерархическая модель данных). ▪ Основные элементы XML – узлы (nodes). ▪ Каждый элемент (узел) обязан иметь открывающий и закрывающий тег. ▪ Теги XML не заданы с самого начала, вы должны определить свои собственные теги.
  • 13. Особенности языка ▪ Элементы могут иметь атрибуты, значения которых заключаются в кавычки. В XML Учитывается регистр символов. ▪ Вся информация между начальным и конечным тэгами – это данные, и поэтому учитываются все символы форматирования (пробелы, переводы строк, табуляции). ▪ Имеются инструкции обработки файла и комментарии.
  • 14. DOM Document Object Model – набор инструментов для работы с XML-документами как деревьями объектов •Позволяет обращаться к произвольному фрагменту дерева в любой момент времени •Стандартизируется в W3C
  • 15. SAX Simple API for XML – API для последовательного разбора потока xml-данных •Последовательно обрабатывает поток •В определённые моменты генерируются событие (начало элемента, появление атрибута, конец элемента…) •Обработка выполняется внутри callback-функций •Требует фиксированного (относительно небольшого) объёма памяти для документов любого размера •Не позволяет посмотреть содержимое всего документа целиком
  • 16. SAX vs. DOM SAX: ■ Документ не подвергается структурным изменениям ■ Документ имеет большой размер DOM: ■ Документ подвергается преобразованиям ■ Документы имеют небольшой размер ■ Есть необходимость просматривать документ в разных направлениях
  • 17. StAX Streaming API for XML – эволюция подходов SAX и DOM •Приложение самостоятельно «вытягивает» события из парсера •Как и в SAX, поддерживается только чтение вперёд •Добавляются возможности по управлению процессом разбора: приостановить разбор, пропустить ненужный контент, etc.
  • 18. JAXB Java Architecture for XML Binding – набор инструментов для (де)сериализации данных (из)в XML •Использует аннотации для описания сериализуемых полей •Типы данных XML отображаются на типы данных Java •xjc позволяет сгенерировать по XML-схеме java классы •schemagen генерирует схему по java классу
  • 19. XPATH XPATH – язык описания запросов к XML-дереву •Позволяет получить значение элемента или атрибута по «пути» от корня дерева •Позволяет выполнять некоторые простейшие операции над значениями (арифметические и строковые операции) •Используется в XSLT
  • 20. XSLT Набор средств для преобразования XML-документов •Используется в основном для изменения формата или фильтрации существующих xml-документов •Широко применяется для представления xml-данных в приятном для чтения виде
  • 21. XQUERY Язык для обработки xml-данных. •Ориентирован не на форматирование данных, а на обработку (аналогичен языку SQL)