XQuery

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук

XQuery — мова запитів, розроблена для обробки даних у форматі XML. XQuery використовує XML як свою модель даних.

XQuery 1.0 була розроблена робочою групою XML Query у складі організації W3C. Ця робота координується іншою робочою групою, що працює над XSLT 2.0. Ці дві групи розділяють відповідальність за XPath 2.0, що входить до складу XQuery 1.0. 3 листопада 2005 року XQuery 1.0 отримала статус W3C Candidate Recommendation, а 23 січня 2007 року XQuery 1.0, одночасно з XSLT 2.0 і XPath 2.0, отримала статус офіційної рекомендації (W3C Recommendation). В наш часШаблон:Коли ведуться роботи з розвитку цього стандарту, з додаванням виразів для вільного пошуку по тексту і для внесення змін в XML документи і бази даних, а також для процедурних операцій.

Властивості

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

XQuery для адресації потрібних ділянок XML документа використовує синтаксис виразів XPath. Це доповнюється SQL-подібними «FLWOR-виразами» для виконання об'єднань. FLWOR вирази зконструйовані з п'яти речень, за чиєю абрівіатурою вони й названі: FOR, LET, WHERE, ORDER BY, RETURN.

Мова також надає синтаксис для конструювання нових XML документів. Там, де імена елементів і атрибутів відомі, можна використовувати XML-подібний синтаксис, в інших випадках вирази посилаються на доступні конструктори динамічних вузлів. Усі ці конструкції визначені як вирази мови, і вони можуть бути довільно вкладеними.

Мова базується на три-структурній моделі інформаційного вмісту XML-документа, що складається з семи видів вузлів: вузли документа, елементи, атрибути, текстові вузли, коментарі, інструкції обробки, і простори імен.

Система типів мови уявляє всі величини як послідовності (одиночна величина розглядається як послідовність з довжиною один). Члени послідовності можуть бути або вузлом, або атомарною величиною. Атомарні величини можуть бути цілим числом, рядком, булевою константою тощо. Повний перелік типів, заснований на примітивних типах, визначених у схемі XML.

XQuery 1.0 не включає можливостей редагування XML-документа і баз даних. У цій версії бракує також можливості повнотекстового пошуку. Обидві ці можливості в активному процесі розробки наступних версій мови.

XQuery є мовою програмування, що може висловлювати довільні перетворення даних XML в XML з такими властивостями:

  1. Логічна/фізична незалежність даних
  2. Оголошення
  3. Вищий рівень
  4. Уникнення побічних ефектів
  5. Точно типизована мова

Приклад використання

В цьому прикладі перелічуються всі унікальні персонажі кожного акту Шекспірівської п'єси Гамлет, записаної у вигляді hamlet.xml

<html><head/><body>
{
  for $act in doc("hamlet.xml")//ACT
  let $speakers := distinct-values($act//SPEAKER)
  return
    <span>
      <h1>{ $act/TITLE/text() }</h1>
      <ul>
      {
        for $speaker in $speakers
        return <li>{ $speaker }</li>
      }
      </ul>
    </span>
}
</body></html>

Застосування

Нижче перелічені типові задачі, коли доцільно використовувати XQuery

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

Втілення

  • Sedna XML Database, написана на C/C++, високопродуктивний XQuery рушій, спроектований для застосувань сортування, відкритий код.
  • VTD-XML — Втілення XPath — відкритий код, пов'язаний з мовами програмування C, C#, і Java
  • Saxon XSLT and XQuery Processor — від Michael Kay; є версія з відкритим кодом, підтримує розширення, написані на Java або C#
  • Galax — Втілення з відкритим кодом OCaml XQuery, підтримує різні розширення; особливо підходить для академічних застосувань XQuery
  • Qexoвідкритий код, написаний на Java з Kawa
  • Mark Logic Server
  • DataDirect XQuery — високопродуктивний, платформо-незалежний XQuery рушій для більшості реляційних баз даних
  • Virtuoso Universal Server — OpenLink Virtuoso
  • BEA AquaLogic ALDSP — XQuery для інтеграції даних
  • Microsoft SQL Server 2005
  • DB2 9
  • Qizx — високопродуктивний рушій XQuery для баз даних, є версія з відкритим кодом (Qizx/open, кодова назва XQuest).
  • X-Hive/DB's XQuery втілення
  • MonetDB/XQuery — Процесор XQuery з відкритим кодом, на верхньому щаблі MonetDB системи реляційних баз даних, з підтримкою для W3C XQuery Update Facility.
  • ще багато XQuery втілень (деякі вільні або з відкритим кодом).

Посилання