X Код для використання на сайті:
Ширина px

Скопіюйте цей код і вставте його на свій сайт

X Для завантаження презентації, скористайтесь соціальною кнопкою для рекомендації сервісу SvitPPT Завантажити собі цю презентацію

Презентація на тему:
Звязування даних

Завантажити презентацію

Звязування даних

Завантажити презентацію

Презентація по слайдам:

Слайд 1

Тема №8 Проблема зв’язування XML-даних

Слайд 2

Зв'язування даних: основні компоненти

Слайд 3

Поняття про зв’язування даних Під зв’язуванням даних (в даному контексті) ми будемо розуміти встановлення відповідності між вузлами XML-документа і класами та об’єктами мов програмування , з одного боку, та між вузлами XML-документа і структурами реляційних баз даних – з іншого. Нас цікавлять принципи встановлення такої відповідності. З цієї точки зору побудова дерева DOM – це дуже формальний аналіз, орієнтований лише на структуру документа, і який повністю абстрагований від моделі предметної області.

Слайд 4

Зв’язування XML-ООП: ключова ідеологія За схемою, DTD або іншим описом семантики документів (можливо, на основі онтології) можна згенерувати класи (або інтерфейси), які відповідають поняттям предметної області, а також класи-обробники документів. На основі конкретного документа можна отримати наповнення цих класів, тобто сформувати екземпляри цих класів.

Слайд 5

Зв’язування даних і Java Sun розробила специфікацію JDO (http://java.sun.com/products/jdo). Зв’язування об’єктів Java не тільки з документами XML, але й з іншими типами даних. Випущено пакет JAXB (Java API for XML Binding): http://java.sun.com/xml/jaxb. Одна з важливих частин - компілятор xjc (XML-Java Compiler), який генерує за XSD-схемою т.зв. об’єкти Java. Далі на основі XML-документа за допомогою відповідних методів створюються екземпляри цих класів. Створення екземплярів називається розпаковкою (unmarshalling), а зворотний процес - упаковкою (marshalling).

Слайд 6

Приклад: каталог pract/bind Схема (catschem.xsd), яка описує структуру книжкового каталогу. Документ (екземпляр схеми) – catalog.xml. Програма bind.java, яка аналізує документ і видає інформацію про конкретний вузол.

Слайд 7

Схема книжкового каталогу

Слайд 8

Схема каталогу: продовження

Слайд 9

Схема каталогу: продовження

Слайд 10

Документ: книжковий каталог Ivanov Addicted to murders Petrov Innocent victims

Слайд 11

Документ: книжковий каталог (продовження) Aho Ullman Computer algorithms Donald Knut

Слайд 12

Наявні відношення katalog = list of book; властивості book – author і title; scientificbook розширює book; додаткова властивість scientificbook – reviewer.

Слайд 13

Генерація класів за схемою xjc схема

Слайд 14

Згенерований клас Katalog – основна частина @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "", propOrder = { "book”}) @XmlRootElement(name = "katalog") public class Katalog { @XmlElement(required = true) protected List book; public List getBook() { if (book == null) { book = new ArrayList(); } return this.book; }}

Слайд 15

Згенерований клас Book – основна частина @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "book", propOrder = { "author“, "title”}) @XmlSeeAlso({ ScientificBook.class}) public class Book { @XmlElement(required = true) protected String author; @XmlElement(required = true) protected String title; public String getAuthor() { return author; } public void setAuthor(String value) { this.author = value;} public String getTitle() {return title;} public void setTitle(String value) { this.title = value;} }

Слайд 16

Згенерований клас ScientificBook – основна частина @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "scientific-book", propOrder = { "reviewer”}) public class ScientificBook extends Book { @XmlElement(required = true) protected String reviewer; public String getReviewer() {return reviewer;} public void setReviewer(String value) {this.reviewer = value;} }

Слайд 17

Програмний аналіз import java.io.*; import java.util.*; import javax.xml.bind.*; import generated.*; public class bind { public static void main (String[] args) { try { JAXBContext jc = JAXBContext.newInstance("generated"); Unmarshaller u = jc.createUnmarshaller(); Katalog ktl = (Katalog) u.unmarshal(new FileInputStream("catalog.xml")); List bk = ktl.getBook();

Слайд 18

Програмний аналіз: продовження ScientificBook book = (ScientificBook) bk.get(2); String avtor = book.getAuthor(); System.out.println ("Author - "+avtor); String title = book.getTitle(); System.out.println ("Title - "+title); String rev = book.getReviewer(); System.out.println("Reviewer - "+rev); } catch (Exception e) { e.printStackTrace(); } } }

Слайд 19

Деякі проблеми Неповна відповідність між можливостями схем і стандартними можливостями ООП.

Слайд 20

Наприклад: змінимо схему: (тепер katalog може мати лише один дочірній елемент book).

Слайд 21

Тоді зміниться і згенерований код: public class Katalog { @XmlElement(required = true) protected Book book;

Слайд 22

Але, якщо змінити так:

Слайд 23

А до xml-файлу додати ще одну книгу То помилка себе не проявляє.

Слайд 24

Зв’язування даних: деякі прості можливості C# Утиліта xsd. Серіалізація-десеріалізація в XML-файл. …

Слайд 25

Приклад серіалізації: клас [Serializable] public class Book { [XmlAttribute] public String Author {get;set;} [XmlAttribute] public String Title { get; set; } [XmlAttribute] public String Year { get; set; } }

Слайд 26

Приклад серіалізації: власне серіалізація колекції static void Main(string[] args) {String fname = @"c:\samples\serial\out.xml"; List lb = new List(); lb.Add(new Book { Author = "Ivanov", Title = "How to use XML", Year = "2009" }); lb.Add(new Book { Author = "Petrov", Title = "Byak and Kvak", Year = "1812" }); var fstream = new FileStream XmlSerializer xmlFormat = new XmlSerializer(typeof(List), new Type[] {typeof(Book)});(fname, FileMode.Create, FileAccess.Write, FileShare.None); xmlFormat.Serialize(fstream, lb); fstream.Close(); }

Слайд 27

Результуючий файл

Слайд 28

XML та РБД Важливо – дослідження можливих відповідностей між структурами XML-документа та структурами реляційних баз даних. Інструмент – DataSet. При завантаженні XML-файлу він намагається утворити відповідну структуру таблиць. Крім того, файл може бути збережений в різних варіантах (поля можуть бути збережені як елементи, як атрибути тощо).

Слайд 29

Демонстрація Базовий приклад – реляційно-подібний фрагмент даних. Варіант – створюється одна таблиця. Елементи зі змінною структурою. Неструктурований текст. Ієрархічні дані.

Слайд 30

Приклад роботи програми

Слайд 31

Вибірка з РБД в XML (SQL Server) Звичайний SQL-запит Результат - XML select top 10 * from Customers select top 10 * from Customers for xml raw (один з варіантів – for xml raw, elements)

Слайд 32

Поняття про LINQ LINQ (Language Integrated Query) – технологія, яка, з одного боку, дозволяє уніфікувати доступ до об'єктів різних типів, а з іншого – інтегрувати засоби для написання таких запитів безпосередньо до мов програмування.

Слайд 33

Складові частини LINQ LINQ To Objects; LINQ To XML; ADO .NET з підтримкою LINQ: LINQ To DataSets; LINQ To SQL; LINQ To Entities.

Слайд 34

Простий приклад Клас Book з полями Author і Title. Колекція, що складається з деякої кількості екземплярів цього класу. Ми хочемо вивести назви книжок. Доступ до елементів колекції через LINQ. Доступ до XML-файлу через LINQ.

Слайд 35

Клас Book class Book { public string Author { get; set; } public string Title { get; set; } public override string ToString() { return Author + ". " + Title; } }

Слайд 36

Створення колекції List bl = new List { new Book {Author = "Ivanov", Title = "Addicted to murders"}, new Book {Author = "Petrov", Title = "Innocent victims"}, new Book {Author = "Ivanov", Title = "Killing for surviving"}, };

Слайд 37

Запит до колекції var res = from c in bl where c.Author=="Ivanov" select c.Title;

Слайд 38

XML-файл IvanovAddicted to murders PetrovInnocent victims IvanovKilling for surviving

Слайд 39

Запит до XML-файлу String fname = "c:\\samples\\xml\\books.xml"; XDocument doc = XDocument.Load(fname); var results = from c in doc.Descendants("book") where c.Element("author").Value=="Ivanov" select c.Element("title").Value;

Слайд 40

Виведення результатів В обох випадках код ідентичний: foreach (var cc in results) { Console.WriteLine(cc); }

Слайд 41

XML та модель напівструктурованих даних Ульман: XML реалізує модель напівструктурованих даних. Модель напівструктурованих даних задається у вигляді графа, вершини якого відповідають екземплярам класів та значенням їх атрибутів, а помічені дуги – назвам властивостей та зв’язків. Дуга по суті пов’язана з іменем елемента (можливо – іменем його класу) або атрибута. Самі вузли графа в принципі можуть бути і неіменованими. Іменем елемента в XML-документі, зокрема, може виступати ім’я класу. Посилання перетворюють деревовидну ієрархію елементів на граф; для задання посилань використовуються атрибути типів ID та IDREF.

Слайд 42

Проблема надлишковості XML-даних “Класичне” XML-подання є дуже надлишковим. Найпростіший приклад – реляційно-подібний фрагмент даних; деяка кількість екземплярів певного класу, причому всі вони мають просту однотипну структуру.

Слайд 43

Змістовно – матриця даних та вектор ознак Матриця даних: M={Mij}, де Mij – значення j-ї ознаки для i-го об’єкта. Метадані (вектор ознак):vj – назва j-ї ознаки; K – назва класу; ця інформація може бути безпосередньо отримана з онтології.

Слайд 44

“Класична” форма подання M11 … M1n ... Mq1 … Mqn

Слайд 45

Можливе альтернативне подання вектор ознак матриця даних

Слайд 46

Порівняльний аналіз Друге подання, очевидно, є значно більш економним, ніж перше. Крім того, для нього можна застосовувати інші ефективні алгоритми стиску даних. З іншого боку, перша (“класична”) форма подання, як правило, виявляється більш зручною для аналізу даних іншими програмами, а також людьми. Для неї суттєво полегшуються і інші операції, зокрема створення XML-схем та перевірка на їх основі дійсності документів.

Слайд 47

Поняття про YAML YAML Ain't Markup Language . Деяка альтернатива XML; мета – уникнути багатослівності.

Завантажити презентацію

Презентації по предмету Інформатика