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-документа і баз даних. У цій версії бракує також можливості повнотекстового пошуку. Обидві ці можливості в активному процесі розробки наступних версій мови.

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

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

<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 [Архівовано 22 жовтня 2007 у Wayback Machine.] — від Michael Kay; є версія з відкритим кодом, підтримує розширення, написані на Java або C#
  • Galax [Архівовано 8 березня 2022 у Wayback Machine.] — Втілення з відкритим кодом OCaml XQuery, підтримує різні розширення; особливо підходить для академічних застосувань XQuery
  • Qexo [Архівовано 23 жовтня 2007 у Wayback Machine.]відкритий код, написаний на Java з Kawa
  • Mark Logic Server
  • DataDirect XQuery [Архівовано 5 липня 2008 у Wayback Machine.] — високопродуктивний, платформо-незалежний XQuery рушій для більшості реляційних баз даних
  • Virtuoso Universal Server — OpenLink Virtuoso
  • BEA AquaLogic ALDSP — XQuery для інтеграції даних
  • Microsoft SQL Server 2005 [Архівовано 1 листопада 2007 у Wayback Machine.]
  • DB2 9 [Архівовано 12 жовтня 2007 у Wayback Machine.]
  • Qizx — високопродуктивний рушій XQuery для баз даних, є версія з відкритим кодом (Qizx/open, кодова назва XQuest).
  • X-Hive/DB's XQuery втілення
  • MonetDB/XQuery — Процесор XQuery з відкритим кодом, на верхньому щаблі MonetDB системи реляційних баз даних, з підтримкою для W3C XQuery Update Facility.
  • ще багато XQuery втілень [Архівовано 1 листопада 2007 у Wayback Machine.] (деякі вільні або з відкритим кодом).

Посилання

  • http://www.w3.org/TR/xquery/ [Архівовано 2 лютого 2006 у Wayback Machine.]
  • http://www.w3.org/TR/xslt20/ [Архівовано 13 червня 2006 у Wayback Machine.]
  • http://www.w3.org/TR/xpath20/ [Архівовано 2 листопада 2007 у Wayback Machine.]


Мова програмування Це незавершена стаття про мови програмування.
Ви можете допомогти проєкту, виправивши або дописавши її.
Ця стаття потребує додаткових посилань на джерела для поліпшення її перевірності. Будь ласка, допоможіть удосконалити цю статтю, додавши посилання на надійні (авторитетні) джерела. Зверніться на сторінку обговорення за поясненнями та допоможіть виправити недоліки.
Матеріал без джерел може бути піддано сумніву та вилучено.
(липень 2017)
  • п
  • о
  • р
Зараз використовуються
Власницькі
  • YQL[en]
Витіснені

П:  Портал «Програмування» П:  Портал «Інформаційні технології»