Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпора.doc
Скачиваний:
20
Добавлен:
14.05.2015
Размер:
646.14 Кб
Скачать

Условные выражения xQuery

"If-Then-Else"

Посмотрите на следующий пример:

for $x in /bookstore/book

return if ($x/@category="CHILDREN")

then <child>{data($x/title)}</child>

else <adult>{data($x/title)}</adult>

Заметки о «если-то-иначе" синтаксис: скобки, если выражение не требуется. еще не требуется, но это может быть просто другом ().

В результате:

<adult>Everyday Italian</adult>

<child>Harry Potter</child>

<adult>Learning XML</adult>

<adult>XQuery Kick Start</adult>

XQuery сравнения

В XQuery существует два способа сравнения значений.

  1. Основной: =, =, <, <=,>,> =

  • eq, ne, lt, le, gt, ge

Разница между этими двумя методами сравнения приведены ниже.

Следующее выражение возвращает истину, если д атрибуты имеют значение больше 10:

$bookstore//book/@q > 10

Следующее выражение возвращает истину, если есть только один атрибут q возвращает выражение, и его значение больше 10. Если более чем один q возвращается сообщение об ошибке:

$bookstore//book/@q gt 10

FLWOR - аббревиатура из первых букв операторов - выражение, которое является основной частью XQuery

Выражение FLWOR является одним из самых мощных и в то же время обычных выражений в XQery. Однако выражения FLWOR не определены в терминах таблиц, строк и столбцов; вместо этого они связывают с переменными значения в операторах for и let и используют эту связь для создания новых результатов. Комбинация связей переменных, созданных операторами for и let в выражении FLWOR, называется кортежем.

for - с некоторой степенью приближения можно трактовать for как оператор цикла. Связывает одну или более переменных с выражениями, создавая поток кортежей. В потоке каждый кортеж связывает данную переменную с одним из значений, получаемых в результате вычисления выражения

let - это оператор присваивания. Связывает переменные с полным результатом вычисления выражения, добавляя эти связи к кортежам, полученным оператором for, или создавая единственный кортеж (при отсутствии оператора for).

order by - сортирует поток кортежей

where - оставляет в потоке только те кортежи, которые удовлетворяют условию, являющемуся параметром данного оператора

return - создает результат выражения

FLWOR аббревиатура "For, Let, Where, Order by, Return".

"Действительно, Пусть, Где, Сортировка, Вернуть".

Ниже приведен пример, с которым вы уже знакомы:

/bookstore/book[price>30]/title

При помощи данного выражения будут выбраны все названия книг, которые по прайсу больше 30. Следующее выражение XQuery FLWOR равносильно предыдущей записи.

for $x in /bookstore/book

where $x/price>30

return $x/title

XML (EXtensible Markup Language) – расширяемый язык разметки, с помощью которого описываются те, или иные данные. Не является языком программирования, протоколом передачи данных, структурой БД. Этот язык позволяет обеспечить независимость приложений от данных.

XML – метаязык (язык для описания др. языков), который позволяет, проектировщикам создавать специализированные дескрипторы для реализации функциональных возможностей; не достижимых с помощью HTML.

Язык XML представляет собой подмножество языка SGML (стандартный обобщенный язык разметки); он предназначен специально для оформления документов Web.

Язык XML уже фактически стал стандартным средством обмена данными в индустрии программного.

Преимущества XML

1.Простота — относительно простой язык, его стандарт не превышает по объему 50 стр.

2.Открытый стандарт; независимость от платформы и программного обеспечения. Язык XML также основан на стандарте (ISO 10646), в нем предусмотрена поддержка набора символов Unicode, и поэтому он может служить для представления текста на всех алфавитах.

3.Способность к расширению. В отличие от HTML он позволяет пользователям опр. собственные дескрипторов соответствии с требованиями к конкретному приложению.

4.Возможность повторного использования. Расширяемость языка XML позволяет также создавать библиотеки дескрипторов XML и повторно использ. их во многих приложениях.

5.Разделение информационного наполнения и средств представления. Язык XML позволяет хранить содержимое документа и независимо от этого описывать способ его представления (в браузере).

6.Улучшенное распределение нагрузки. Язык XML позволяет доставлять данные в браузер (на клиентский компьютер) для проведения некоторых вычислений на месте; при этом сервер частично освобождается от вычислительной нагрузки и обеспечивается более равномерное распределение нагрузки.

7.Поддержка интеграции данных из нескольких источников. Язык XML позволяет упростить объединение данных из различных источников.

8.Способность описывать данные, которые относятся к приложениям многих разных типов. т.к. XML является расширяемым, он может также использоваться для описания данных, содержащихся в самых различных приложениях. К тому же, т.к. XML позволяет создать формат представления данных, в котором данные описывают сами себя, последующая передача и обработка данных может происходить без использования каких-либо встроенных дополнительных описаний данных.

9.Усовершенствованные механизмы поиска. При использовании XML поисковые машины могут применяться просто для интерпретации дескрипторов с описаниями.

Недостатки

1.Синтаксис избыточен – большой размер XML-документа; влияние на эффективность приложения (возрастает стоимость хранения, обработки и передачи данных).

2.Неоднозначность моделирования – нет общепринятой методологии для моделирования данных; в результате большой гибкости языка и отсутствия строгих ограничений, одна и та же структура может быть представлена множеством способов.

3.XML не содержит встроенной в язык поддержки типов данных – нет строгой типизации.

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

<ИмяУзла ИмяАтр1=”значение” ИмяАтр2=”значение” ...>

<!--вложенные теги и тексты--> </ИмяУзла>

Пример:

<?xml version=”1.0”?>

<books>

<book isbn=”1558604669">

<title>Principles of Multimedia Database Systems</title>

<authors><author>Subrahmanian</author></authors>

</book>

<book isbn=”1558603123”>

<title>Multimedia and Imaging Databases</title>

<authors>

<author>Khoshafian</author>

<author>Baker</author>

</authors>

</book>

</books>

SQL Server и XML: Способы хранить XML-данных в БД:

1.Преобразование схемы (схем) XML-документов в схему базы данных.

2. Использование опр. набора структур, позволяющего хранить любой XML-документ.

Поддержка XML начиная с версии 2000

– FOR XML - извлечение результатов запросов к базам данных в виде XML-потока;

– OPENXML - сохранение XML-документов в базе данных (предназначена для обратных действий – создания записи, на основе переданного ей XML-документа)

Версия 2005

– Тип данных xml

– Поддержка проверки данных на уровне XSD-схемы

– Поддержка Xquery

Версия 2008

FOR XML - это атрибут команды SELECT, указывающий на то, что результаты выполнения запроса должны быть представлены в виде XML-потока:

– Запрос:

SELECT ProductID, ProductName

FROM Products Product

FOR XML AUTO

– Результат - XML-документ:

<Product ProductID="1" ProductName="Widget"/>

<Product ProductID="2" ProductName="Sprocket"/>

XQuery

Язык запросов XML, разработан в W3C; первая версия - XQuery 1.0 в 2003г.

Надмножество XPath (язык для адресации определенных частей в XML-документах).

Совместим с другими XML-стандартами

Изначально был предназначен для извлечения информации и не включал средств для модификации существующих документов XML, XQuery аналог SQL для баз данных

XQuery поддерживается тремя главными производителями БД (IBM, Oracle, Microsoft).

Пример:

<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>