~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 1DBABF04C999380293C5380D5CC5D25F__1671151200 ✰
Заголовок документа оригинал.:
✰ XQuery - Wikipedia ✰
Заголовок документа перевод.:
✰ XQuery — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/XQuery ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/1d/5f/1dbabf04c999380293c5380d5cc5d25f.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/1d/5f/1dbabf04c999380293c5380d5cc5d25f__translat.html ✰
Дата и время сохранения документа:
✰ 16.06.2024 09:16:49 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 16 December 2022, at 03:40 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

XQuery — Википедия Jump to content

XQuery

Из Википедии, бесплатной энциклопедии
XQuery
Парадигма декларативный , функциональный , модульный
Разработано W3C
Впервые появился 2007
Стабильная версия
3.1 / 21 марта 2017 г .; 7 лет назад ( 21.03.2017 ) [1]
Дисциплина набора текста динамический или статический, [2] [3] сильный
ТЫ Кросс-платформенный
Расширения имен файлов .xq, .xql, .xqm, .xqy, .xquery
Веб-сайт www .w3 .org /XML /Запрос /
Основные реализации
Много
Под влиянием
XPath , SQL , XSLT

XQuery ( XML Query ) — это язык запросов и функционального программирования , который запрашивает и преобразует коллекции структурированных и неструктурированных данных , обычно в форме XML , текста и с специфичными для поставщика расширениями для других форматов данных ( JSON , двоичный и т. д.). Язык разработан рабочей группой W3C XML Query . Эта работа тесно координируется с разработкой XSLT рабочей группой XSL; обе группы разделяют ответственность за XPath , который является подмножеством XQuery.

XQuery 1.0 стал рекомендацией W3C 23 января 2007 года. [4]

XQuery 3.0 стал рекомендацией W3C 8 апреля 2014 года. [5]

XQuery 3.1 стал рекомендацией W3C 21 марта 2017 года. [6]

«Миссия проекта XML Query состоит в том, чтобы предоставить гибкие средства запросов для извлечения данных из реальных и виртуальных документов во Всемирной паутине, тем самым, наконец, обеспечивая необходимое взаимодействие между миром Интернета и миром баз данных. В конечном итоге коллекции XML-файлов будут к ним можно получить доступ как к базам данных». [7]

Особенности [ править ]

XQuery — это функциональный, не имеющий побочных эффектов , ориентированный на выражения язык программирования с простой системой типов , которую Килпеляйнен суммировал следующим образом: [8]

Все выражения XQuery работают с последовательностями и вычисляют их. Последовательности представляют собой упорядоченные списки элементов. Элементами могут быть либо узлы , которые представляют компоненты XML-документов, либо атомарные значения , которые являются экземплярами базовых типов XML-схемы, например xs: целое число или хз: строка . Последовательности также могут быть пустыми или состоять только из одного элемента. Никакого различия между отдельным элементом и одноэлементной последовательностью не делается. (...) Последовательности XQuery/XPath отличаются от списков в таких языках, как Lisp и Prolog, исключением вложенных последовательностей. Разработчики XQuery, возможно, посчитали вложенные последовательности ненужными для манипулирования содержимым документа. Вложенность или иерархия структур документа вместо этого представлена ​​узлами и их дочерними и родительскими отношениями.

XQuery предоставляет средства для извлечения данных и манипулирования ими из документов XML или любого источника данных, который можно рассматривать как XML, например реляционных баз данных. [9] или офисные документы.

XQuery содержит расширенный набор синтаксиса выражений XPath для обращения к определенным частям XML-документа. Он дополняет это SQL -подобным выражением FLWOR для выполнения соединений. Выражение FLWOR состоит из пяти предложений, после которых оно названо: FOR, LET, WHERE, ORDER BY, RETURN.

Язык также предоставляет синтаксис, позволяющий создавать новые XML-документы. Если имена элементов и атрибутов известны заранее, можно использовать синтаксис, подобный XML; в других случаях доступны выражения, называемые конструкторами динамических узлов. Все эти конструкции определяются как выражения внутри языка и могут иметь произвольную вложенность.

Язык основан на модели данных XQuery и XPath (XDM), которая использует древовидную модель информационного содержания XML-документа, содержащую семь типов узлов: узлы документа, элементы, атрибуты, текстовые узлы, комментарии, инструкции обработки. и пространства имен.

XDM также моделирует все значения как последовательности (одиночным значением считается последовательность длиной один). Элементами последовательности могут быть либо узлы XML, либо атомарные значения. Атомарные значения могут быть целыми числами, строками, логическими значениями и т. д.: полный список типов основан на примитивных типах, определенных в XML-схеме .

Функции обновления XML-документов или баз данных, а также возможность полнотекстового поиска не являются частью основного языка, но определены в дополнительных стандартах расширений: XQuery Update Facility 1.0 поддерживает функцию обновления, а XQuery и XPath Full Text 1.0 поддерживают полнотекстовый поиск. в XML-документах.

В XQuery 3.0 добавлена ​​поддержка полнофункционального программирования, поскольку функции представляют собой значения, которыми можно манипулировать (хранить в переменных, передавать в функции более высокого порядка и вызывать динамически).

Примеры [ править ]

В приведенном ниже примере кода XQuery перечислены уникальные говорящие в каждом акте пьесы Шекспира «Гамлет», закодированные в hamlet.xml.

 <html><body> 
  { 
    for   $  act   in   doc  (  "hamlet.xml"  )//  ACT 
    let   $  columns   :=   Different-values  ​​(  $  act  //  SPEAKER  ) 
    return 
      <div> 
        <h1>  {   string  (  $  act  /  TITLE  )   }  </h1> 
        <ul> 
        { 
          for   $  динамик   в   $  динамики 
          return   <li>  {   $  спикер   }  </li> 
        } 
        </ul> 
      </div> 
  } 
  </body></html> 

Все конструкции XQuery для выполнения вычислений являются выражениями . нет Утверждений , хотя некоторые ключевые слова предполагают поведение, подобное утверждениям. Чтобы выполнить функцию, вычисляется выражение внутри тела и возвращается его значение. Таким образом, чтобы написать функцию для удвоения входного значения, нужно просто написать:

объявить   функцию   локально: doubler  (  $  x  )   {   $  x   *   2   } 

Чтобы написать полный запрос «Hello World», нужно написать выражение:

 "Привет, мир" 

Этот стиль распространен в функциональных языках программирования .

Приложения [ править ]

Ниже приведены несколько примеров использования XQuery:

  1. Извлечение информации из базы данных для использования в веб-сервисе.
  2. Создание сводных отчетов по данным, хранящимся в базе данных XML.
  3. Поиск текстовых документов в Интернете для получения соответствующей информации и обобщение результатов.
  4. Выбор и преобразование данных XML в XHTML для публикации в Интернете.
  5. Извлечение данных из баз данных для использования для интеграции приложений.
  6. Разделение XML-документа, представляющего несколько транзакций, на несколько XML-документов.

Сравнение XQuery и XSLT [ править ]

Область применения [ править ]

Хотя XQuery изначально задумывался как язык запросов для больших коллекций XML-документов, он также способен преобразовывать отдельные документы. По существу, его возможности пересекаются с XSLT , который был разработан специально для преобразования входных XML-документов в HTML или другие форматы.

Стандарты XSLT 2.0 и XQuery были разработаны отдельными рабочими группами внутри W3C , которые работали вместе, чтобы обеспечить общий подход там, где это необходимо. Они используют одну и ту же модель данных ( XDM ), систему типов и библиотеку функций, и оба включают XPath 2.0 в качестве подъязыка.

Происхождение [ править ]

Однако эти два языка уходят корнями в разные традиции и служат потребностям разных сообществ. XSLT изначально задумывался как язык таблиц стилей, основной целью которого было отображение XML для читателя на экране, в Интернете (как язык веб-шаблонов ) или на бумаге. XQuery изначально задумывался как язык запросов к базе данных в традициях SQL .

Поскольку оба языка созданы в разных сообществах, XSLT более силен. [ по мнению кого? ] в обработке описательных документов с более гибкой структурой, тогда как XQuery более силен в обработке данных (например, при выполнении реляционных соединений).

Версии [ править ]

XSLT 1.0 появился как Рекомендация в 1999 году, тогда как XQuery 1.0 стал Рекомендацией только в начале 2007 года; в результате XSLT по-прежнему используется гораздо шире. Оба языка обладают одинаковой выразительной мощью, хотя XSLT 2.0 имеет многие функции, отсутствующие в XQuery 1.0, такие как группировка, форматирование чисел и дат, а также больший контроль над пространствами имен XML. [10] [11] [12] Многие из этих функций были запланированы для XQuery 3.0. [13]

При любом сравнении необходимо учитывать версию XSLT. XSLT 1.0 и XSLT 2.0 — очень разные языки. В частности, XSLT 2.0 находился под сильным влиянием XQuery в его переходе к строгой типизации и распознаванию схем.

Сильные и слабые стороны [ править ]

Исследования удобства использования показали, что XQuery легче изучить, чем XSLT , особенно для пользователей, уже имеющих опыт работы с языками баз данных, такими как SQL. [14] Это можно объяснить тем фактом, что XQuery — это меньший по размеру язык с меньшим количеством понятий, которые необходимо изучить, а также тем, что программы более лаконичны. Верно также и то, что XQuery более ортогонален, поскольку любое выражение можно использовать в любом синтаксическом контексте. Напротив, XSLT — это двухязычная система, в которой выражения XPath могут быть вложены в инструкции XSLT, но не наоборот.

XSLT в настоящее время более надежен, чем XQuery, для приложений, требующих внесения небольших изменений в документ (например, удалив все элементы ПРИМЕЧАНИЕ). Такие заявки обычно обрабатываются в XSLT с использованием шаблона кодирования, включающего шаблон идентификации, который копирует все узлы без изменений, изменяя их с помощью определенных шаблонов, которые изменяют выбранные узлы. XQuery не имеет эквивалента этому шаблону кодирования, хотя в будущих версиях такие проблемы можно будет решать с помощью средств обновления языка, который находится в стадии разработки. [15]

В XQuery 1.0 отсутствовал какой-либо механизм динамического связывания или полиморфизма; это было исправлено введением функций в качестве первоклассных значений в XQuery 3.0. Отсутствие этой возможности начинает становиться заметным при написании больших приложений или при написании кода, предназначенного для повторного использования в различных средах. [ нужна цитата ] XSLT предлагает два взаимодополняющих механизма в этой области: динамическое сопоставление правил шаблона и возможность переопределять правила с помощью xsl:import, которые позволяют писать приложения с несколькими уровнями настройки.

Отсутствие этих возможностей в XQuery 1.0 было осознанным проектным решением: из-за этого XQuery очень хорошо поддается статическому анализу, который необходим для достижения уровня оптимизации, необходимого в языках запросов к базам данных. Это также упрощает обнаружение ошибок в коде XQuery во время компиляции.

Тот факт, что XSLT 2.0 использует синтаксис XML, делает его более многословным по сравнению с XQuery 1.0. Однако многие крупные приложения используют эту возможность, используя XSLT для динамического чтения, записи или изменения таблиц стилей в рамках конвейера обработки. Использование синтаксиса XML также позволяет использовать инструменты на основе XML для управления кодом XSLT. Напротив, синтаксис XQuery больше подходит для встраивания в традиционные языки программирования, такие как Java (см. XQuery API для Java ) или C# . При необходимости код XQuery также можно выразить в синтаксисе XML, называемом XQueryX. Представление XQueryX кода XQuery довольно многословно и неудобно для человека, но его можно легко обработать с помощью инструментов XML, например преобразовать с помощью таблиц стилей XSLT. [16] [17]

Расширения и будущая работа [ править ]

Расширения W3C [ править ]

Два основных расширения XQuery были разработаны W3C:

Оба достигли статуса Рекомендации как расширения XQuery 1.0, но работа по их продвижению для работы с XQuery 3.0 была прекращена из-за нехватки ресурсов.

Работа над XQuery 3.0 была опубликована в качестве рекомендации 8 апреля 2014 г. [19] и XQuery 3.1 является рекомендацией по состоянию на февраль 2017 г.

Скриптовое (процедурное) расширение для XQuery было разработано, но так и не было завершено. [20] [21]

Группа сообщества EXPath [22] разрабатывает расширения для XQuery и других родственных стандартов ( XPath , XSLT , XProc и XForms ). На данный момент доступны следующие расширения:

  • Система упаковки [23]
  • Файловый модуль [24]
  • Бинарный модуль [25]
  • Веб-приложения [26]

Сторонние расширения [ править ]

JSONiq — это расширение XQuery, которое добавляет поддержку извлечения и преобразования данных из JSON документов . JSONiq — это расширенный набор XQuery 3.0. Он опубликован под лицензией Creative Commons Attribution-ShareAlike 3.0 .

EXQuery [27] проект разрабатывает стандарты создания переносимых приложений XQuery. В настоящее время доступны следующие стандарты:

Дальнейшее чтение [ править ]

  • Запросы XML: XQuery, XPath и SQL/XML в контексте. Джим Мелтон и Стивен Бакстон. Морган Кауфманн, 2006. ISBN   1-55860-711-0 .
  • Уолмсли, Присцилла (2007). XQuery, первое издание . О'Рейли Медиа. ISBN  978-0-596-00634-1 .
  • Уолмсли, Присцилла (2015). XQuery, второе издание . О'Рейли Медиа. ISBN  978-1-4919-1510-3 .
  • XQuery: язык запросов XML. Майкл Брандейдж. Аддисон-Уэсли Профессионал, 2004 г. ISBN   0-321-16581-0 .
  • XQuery от экспертов: Руководство по языку XML-запросов W3C. Говард Кац (ред.). Аддисон-Уэсли, 2004 г. ISBN   0-321-18060-7 .
  • Введение в выражение XQuery FLWOR . Д-р Майкл Кей (Комитет W3C XQuery), 2005 г.

Реализации [ править ]

Обзор популярных реализаций XQuery
Имя Лицензия Язык XQuery 3.1 XQuery 3.0 XQuery 1.0 XQuery, обновление 1.0 Полный текст XQuery 1.0
БазаX Лицензия BSD Джава Да Да Да Да Да
существовать LGPL Джава Частичный Частичный Да Нет Нет
МаркЛогик Собственный С++ Нет Частичный Да Нет Нет
Саксонский HE Публичная лицензия Mozilla Джава Частичный Частичный Да Да Нет
Саксонский Э.Э. Собственный Джава Да Да Да Да Нет
Властный Лицензия Апач С++ Нет Да Да Да Да

См. также [ править ]

Ссылки [ править ]

  1. ^ «Рекомендация XQuery 3.1» . 21 марта 2017 г.
  2. ^ «XQuery 3.1: язык запросов XML» . 21 марта 2017 г.
  3. ^ «XQuery и статическая типизация» .
  4. ^ «Хронология стандартов XML и семантической сети W3C» (PDF) . 04.02.2012.
  5. ^ «Рекомендация XQuery 3.0» . 08.04.2014.
  6. ^ «Рекомендация XQuery 3.1» . 21 марта 2017 г.
  7. ^ W3C (25 октября 2003 г.). «цитируется Дж.Роби» . {{cite web}}: CS1 maint: числовые имена: список авторов ( ссылка )
  8. ^ Килпеляйнен, Пекка (2012). «Использование XQuery для решения проблем» (PDF) . Программное обеспечение: практика и опыт . 42 (12): 1433–1465. дои : 10.1002/спе.1140 . S2CID   15561027 .
  9. ^ «Получение данных с помощью XQuery» . Проверено 18 января 2016 г.
  10. ^ Кей, Майкл (май 2005 г.). «Сравнение XSLT и XQuery» .
  11. ^ Айзенберг, Дж. Дэвид (9 марта 2005 г.). «Сравнение XSLT и XQuery» .
  12. ^ Смит, Майкл (23 февраля 2001 г.). «Обсуждается «перекрытие» XQuery и XSLT» .
  13. ^ «Требования XQuery 3.0» .
  14. ^ Удобство использования языков запросов XML. Йорис Грауманс. Серия диссертаций SIKS № 2005-16, ISBN   90-393-4065-Х
  15. ^ «Средство обновления XQuery» .
  16. ^ «Синтаксис XML для XQuery (XQueryX)» .
  17. ^ Майкл Кей. «Саксонские дневники: Как не сбрасывать константы» .
  18. ^ Полный текст XQuery и XPath 1.0
  19. ^ XML-запрос (XQuery) 3.0
  20. ^ Требования к расширению сценариев XQuery 1.0
  21. ^ Расширение сценариев XQuery 1.0
  22. ^ Группа сообщества EXPath
  23. ^ Система упаковки
  24. ^ Файловый модуль
  25. ^ Бинарный модуль
  26. ^ Веб-приложения
  27. ^ «Стандарт для переносимых приложений XQuery» . Проверено 12 декабря 2013 г.
  28. ^ «RESTXQ 1.0: Аннотации RESTful для XQuery» .

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 1DBABF04C999380293C5380D5CC5D25F__1671151200
URL1:https://en.wikipedia.org/wiki/XQuery
Заголовок, (Title) документа по адресу, URL1:
XQuery - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)