Birdstep XML. Реалізація стандартів SAX

Зміст



Введення


XML є універсальним форматом для структурованих документів і даних в інтернет. Ця мова розмітки, що є стандартом консорціуму W3C (World Wide Web Consortium), використовується для створення структурованого змісту та супроводу метаданих про нього. На практиці це означає, що XML дозволяє організаціям спільно використовувати, обмінюватися та публікувати дані універсальним і загальноприйнятим чином. Більш докладну інформацію про XML можна отримати за адресою http://www.w3.org/XML/.


Мова XML повсюдно визнаний як ідеального засоби для створення інформаційних мереж. Останнім часом XML також розглядається як переважного формату для обміну даними через бездротові комунікаційні пристрої. Мова XML, з його гнучкістю і широким розповсюдженням, пропонує узагальнені засобу розширення додатків, дозволяючи підключити мобільних користувачів як до споживчих, так і до бізнес-ринків. Підготовлений до використання XML процесор баз динних Birdstep DataBase Engine, Що працює в додатках для портативних пристроїв, також добре буде працювати і з періодично підключаються користувачами.


Абстрактне визначення мови XML називається безліччю інформації (Infoset) XML. Його метою є надання узгодженого набору визначень для посилання на інформацію в правильно побудованому XML-документі.


Формальне визначення Infoset можна знайти за адресою www.w3.org/TR/xml-infoset.


XML-документи можуть мати два основні уявлення.


Послідовне подання – це потік знаків, які відповідають певним правилам синтаксису XML. Це уявлення найбільше підходить для передачі даних, а також для їх перегляду і читання людиною.


Модель Infoset – це ієрархія вузлів, де кожен вузол являє інформаційний елемент, і де кожен елемент може містити інші елементи або значення. Це уявлення найбільше підходить для навігації у структурі документа, для пошуку конкретних елементів або значень, а також для генерації вторинних документів.


Представлення Infoset мови XML не передає будь-якого особливого синтаксису серіалізациі.


На малюнку 1 показана структура серіалізациі, що стоїть за ієрархічним Преставлення.

Рис. 1.


Процесор баз даних Birdstep Database Engine


Перед тим, як XML-документ повинен бути представлений в ієрархічній структурі на комп'ютері, він або розміщується в пам'яті, або зберігається в базі даних. Якщо необхідно сталість, то, очевидно, що підтримка цієї структури базою даних заощаджує час і представляє більш ефективне рішення, ніж багаторазовий аналіз документа в пам'яті. Реляційні бази даних не дуже добре підходять для представлення XML-документів. Вони не підтримують впорядкованість, ієрархію, регулярні структури і поля змінної довжини. Реляційні бази даних були спроектовані для таких структур табличних даних, як базова модель даних. Вони призначені для обробки SQL-запитів, але не дуже добре підходять для обслуговування запитів, що залежать від змісту, в орієнтованих на XML структурах.


Процесор Birdstep Database Engine був спроектований з акцентом на ефективне представлення XML-документів, на навігацію та пошук у них. У наступному параграфі описується ключовий механізм, використовуваний в Birdstep Database Engine.


Наповнений даними процесор Birdstep Database Engine можна представити у вигляді колекції об'єктів. Кожен об'єкт може бути асоційований з типом (класом), який був декларований у схемі бази даних. Об'єкти в Birdstep Database Engine можуть бути організовані в ієрархічну структуру. Тому цей процесор особливо добре підходить для представлення XML-документів у вигляді ієрархії вузлів. Birdstep Database Engine містить механізм створення структури, навігації та пошуку в ній. Нижче перераховані можливості доступні в Birdstep Database Engine.



Ці можливості Birdstep Database Engine служать засобом для високоефективної і надійної реалізації інтерфейсів XML. XML-документи зберігаються в базі даних Birdstep як об'єкти ієрархічної структури. Для бази даних Birdstep БД-структура XML-документа була сконструйована максимально схожою на модель Infoset. Це означає, що існує однозначна відповідність між вузлами в структурі Infoset і вузлами в дереві, що відповідає об'єктах документів бази даних. Для ефективності, вузли атрибутів у Infoset не представляються як об'єкти в базі даних. Це відбивається в структурному відмінності між визначенням в Infoset і XML-виставою в базі даних. Також для підвищення ефективності, атрибути Infoset представляються як атрибути об'єктів, для яких атрибути доречні. У послідовному (серіалізовать) поданні XML-документи зазвичай містять атрибути, значення та теги. У базі даних Birdstep теги зберігаються як об'єкти (тегів об'єкти). Атрибути і їх значення зберігаються як атрибути тегів об'єктів і в самих атрибутах цих об'єктів.


На малюнку 2 показано, як Birdstep реалізує стандарти SAX, DOM і XPATH для програмістів додатків за допомогою безлічі класів і методів, визначених у цих стандартах. Реалізація SAX, DOM і XPATH прив'язана до Birdstep Database Engine за допомогою вбудованого інтерфейсу API-звернень до бази даних.

Рис. 2. Реалізація Birdstep DBE і XML


SAXM


SAX є простим інтерфейсом API для XML, який був розроблений, щоб забезпечити програмістам доступ до потрібної інформації без необхідності самим створювати спеціальні синтаксичні аналізатори.


SAX – це набір абстрактних програмних інтерфейсів, які проектують документ на потік викликів відомих методів. Продукти компанії Birdstep використовують зовнішні синтаксичні аналізатори (expat-parser) з відкритим кодом, щоб аналізувати потік і зчитувати інтегровані теги, атрибути, значення, текст і структуру XML-документів. SAX компанії Birdstep містить методи для перетворення документа в ієрархію об'єктів і атрибутів, які будуть представляти документ.


SAX описує керований подіями інтерфейс для процесу синтаксичного розбору XML-документів. SAX є вільно поширюваним інтерфейсом API, розробленим фахівцями зі списку розсилки XML-DEV. SAX не має формальних документів специфікації, але він визначається вільно поширюваної реалізацією, виконаної за допомогою мови програмування Java ™. Синтаксичний аналізатор мови XML є сумісним з SAX, якщо він використовує інтерфейс, реалізований зі статусом загального надбання (public domain).


Керований подіями інтерфейс забезпечує механізм повідомлень для коду програми при розпізнаванні основним аналізатором синтаксичних XML-конструкцій поточного документа.


Використання SAX для імпорту XML-документів і даних


SAX був обраний для того, щоб забезпечити доступ до інформації в XML-документі не як до дерева вузлів, а як до послідовності подій. Реалізація Birdstep SAX відстежує SAX-події, що генеруються SAX-аналізатором, коли він читає XML-документ. Birdstep SAX інтерпретує ці події для створення об'єктів в базі даних.


SAX буде реагувати на подію для кожного відкритого і кожного закритого тега. Ще він запускається на події для секцій # PCDATA і CDATA, інструкцій обробки, а також для шаблонів DTD, коментарів і так далі. На малюнку 3 показано, як можна використовувати реалізацію Birdstep SAX для імпорту XML-документа в базу даних Birdstep.

Рис. 3. Реалізація Birdstep SAX


Використання SAX для отримання XML-документів і даних з бази даних Birdstep


Коли XML-документ збережений у базі даних Birdstep, його можна отримати цілком або по частинах з допомогою даної реалізації SAX. У цьому випадку можна створювати програми додатків, які використовують інтерфейс Birdstep SAX в якості керованого подіями механізму подачі елементів документа. Потрібно відзначити, що елементи подаються послідовно і навігація прямому напрямку при використанні SAX неможлива. Звичайно, програма додатку може реагувати на події незалежно. Наприклад, вона може виконувати серіалізацию документа, тобто перебудовувати його. Також програма може здійснювати пошук тегів або збір статистики. На малюнку 4 показано, як реалізація Birdstep SAX взаємодіє з програмою програми та Birdstep Database Engine.

Рис. 4. Реалізація Birdstep SAX


DOM


Так само, як аналізатор XML взагалі і SAX, зокрема, завдає певний шар абстракції на фактичне текстове представлення XML-документа, об'єктна модель документа (DOM) Додає шар абстракції до верхнього рівня всього документа. DOM стандартизує об'єктну модель, що представляє XML-документ, і визначає інтерфейс структури і стилю XML-документів, який не залежить від мови програмування і платформи, До цього інтерфейсу деякі процеси отримують динамічний доступ і можуть оновлювати його. Елементи розглядаються як вузли дерева замість того, щоб бути складеними з відкривають і закривають тегів. Вузли можуть володіти батьківськими і дочірніми об'єктами. Також вони можуть мати внутрішні властивості, які можна змінити за допомогою об'єктів і методів.


DOM надає програмам доступ до зберігається в XML-документі інформації, як до ієрархічної об'єктної моделі. DOM розглядає документ як дерево вузлів, засноване на структурі та інформації даного XML-документа. Програмісти можуть отримати доступ до інформації, взаємодіючи з цим деревом вузлів. DOM визначає безліч абстрактних інтерфейсів, що моделює узгодження документа зі специфікаціями XML-моделі Infoset. Реалізація DOM компанії Birdstep складається з безлічі методів для забезпечення доступу до документа, що зберігається в базі даних у вигляді ієрархії об'єктів. Дана реалізація DOM підтримує додатки, написані на C + +.


Об'єктна модель документа задає деревоподібне подання XML-документа. Самий верхній рівень документа є коренем дерева і має єдиний дочірній об'єкт, який представляє собою елемент самого верхнього рівня. Цей елемент має дочірній вузол, який представляє зміст і будь-які інші підлеглі елементи. Ці елементи можуть мати свої дочірні елементи на багато рівнів у глибину. Задані функції дозволяють проходити результуюче дерево будь-яким бажаним чином, мати доступ до елементів і значенням атрибутів, вставляти та видаляти вузли, а також конвертувати дане дерево назад в XML.


Використання DOM корисно для зміни XML-документів. Наприклад, можна створити DOM-дерево, змінити його, додавши нові вузли і перемістивши деякі гілки, а потім на виході створити новий документ XML. Також можна самостійно створити DOM-дерево і перетворити його в XML. Часто, це більш гнучкий спосіб отримання XML-коду, ніж просто писати <tag1> …</ tag1> у файлі.


Для деяких класів застосувань використання SAX або пряму взаємодію з аналізатором XML може бути ідеальним способом отримання XML-документів. Якщо додаток повинен обробляти XML-документи з мінімально можливою затримкою або, якщо оброблювані документи дуже великі й не поміщаються в пам'яті, тоді необхідна обробка кожного з подій у тій послідовності, в якій вони виникають в документі


Проблема використання SAX полягає в тому, що програма має встановити обробники подій для всіх елементів, з якими воно працює, і оперативно створювати свої власні структури даних по міру виникнення подій. Замість того щоб реагувати на кожну подію, було б простіше, якби все дерево вже було додано в пам'ять, так що при цьому було б можливо переміщатися по дереву і змінювати його сегменти простим чином.


Модель DBE-сховища компанії Birdstep була спроектована максимально наближеною DOM за структурою. Однак, ця модель простіше, настільки, щоб зробити ефективним послідовний висновок даних, тобто за допомогою SAX. Оскільки в БД компанії Birdstep XML-дані зберігаються в структурах, схожих з DOM, DOM-інтерфейс (або SAX-обробник) не зобов'язаний завантажувати в пам'ять весь XML-документ перш, ніж користувач зможе отримати до нього доступ. До методів та об'єктам DOM можна звертатися у той час як документ знаходиться в кеш-пам'яті буфера. Це основна відмінність від підходу, коли XML-документ зберігатися у вигляді послідовної ланцюжка об'єктів.


XML-інтерфейс процесора Birdstep Database Engine в багатьох відносинах схильний до впливу з боку DOM-інтерфейсу компанії Apache, під назвою Xerces. Це було зроблено з метою допомогти персоналу, знайомому з Xerces, легше перейти до роботи з XML-інтерфейсом процесора баз даних Birdstep Database Engine. Крім того, проекти, що використовують Xerces в якості основного інтерфейсу, можуть бути легко переведені на використання XML-інтерфейсу процесора Birdstep Database Engine. Однак, що лежить в основі архітектура повністю різна, оскільки DOM-інтерфейс компанії Birdstep працює з постійними об'єктами баз даних, тоді як Xerces працює тільки з динамічними уявленнями, що знаходяться в пам'яті.


XPATH


XPATH (Мова шляхів в XML) є мовою для вибору в XML-документі деякого безлічі вузлів. Синтаксис цієї мови заснований на використанні шляхів. Продукт XPATH компанії Birdstep містить логіку, яка інтерпретує запит, перетворює його в серію звернень до API-методам Birdstep DBE і представляє результуюче безліч вузлів.


Основною метою XPath є адресація частин XML-документа. На підтримку цієї основної мети даний мова також надає базові засоби для маніпуляцій з рядками, числами і логічними параметрами. У XPath реалізований компактний, відмінний від XML синтаксис для того, щоб полегшити використання XPath з ідентифікаторами URI і значеннями атрибутів в XML. XPath оперує швидше з абстрактною, логічної структурою XML-документа, ніж з його поверховим синтаксисом. Назва XPath виникло через використання колійних позначень, таких як покажчик URL, для навігації по ієрархічній структурі XML-документів.


Основною синтаксичною конструкцією в XPath є вираз. Вираз після обробки видає об'єкт одного з наступних чотирьох основних типів:



XPath використовується для вилучення шляхів з XML-документів. У базі даних компанії Birdstep XML-документи представлені у вигляді ієрархії об'єктів (вузлів). Коли XPATH-оператор використовується в програмі, вираз і зміст вузлів задаються в якості параметрів. Синтаксичний аналізатор XPATH оцінює вираз і перетворює його в запит до процесора Birdstep Database Engine. Результатом запиту є невпорядковане безліч вузлів, які можуть бути і порожніми. Це безліч задовольняє критеріям цього виразу.


Запит обробляється за допомогою функцій LookUp процесора Birdstep Database Engine. Схема індексації процесора бази даних забезпечує високопродуктивний пошук. Получающееся безліч представляється за допомогою орієнтованої на покажчики колекції в процесорі баз даних Birdstep Database Engines.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*