Смекни!
smekni.com

А. Н. Терехов Санкт Петербург (стр. 6 из 8)

Ось определяет направление движения, относительно контекстного узла. Поддержанные оси в SQL Server 2005 являются: child, descendant, parent, attribute, seft and descendant-or-seft.

2.6.1.2.3 Инструкция FLWOR

Инструкции FLWOR формируют основные выражения XQuery и подобны инструкциям SELECT SQL. Акроним FLWOR (явный "цветок") замещает FOR,LET,WHERE, ORDER BY, RETURN. FLWOR выражения в XQuery дают возможность пользователям определить операции типа декларативной итерации,связывания переменной, фильтрации, сортировки, и возвращения результатов.SQL Server 2005 поддержек,FOR , WHERE, ORDER BY и RETURN.

2.6.1.2.4 Операторы в XQuery

Как функциональный язык, XQuery в SQL Server 2005 поддержек различные типы функций и операторов, которые могут быть сгруппированы под следующими категориями:

· Арифметические операторы

· Операторы сравнения

· Логические операторы

· Конструкция условного оператора

Подобно другим функциональным языкам, XQuery поддерживает конструкцию условного оператора.

2.6.1.2.5 Встроенные Функции XQuery

Выполнение XQuery в SQL Server 2005 поддержек подмножество встроенных функций XQuery 1.0 и XPath 2.0. Эти функции включают функции средства доступа данных, натягивают функции манипуляции, агрегатные функции, контекстные функции, числовые функции, функции Boolean, функции узла, и функции последовательности.

2.6.2. В Oracle

2.6.2.1. Новый тип - XMLType.

Oracle следует за этим подходом и вводит новый тип объекта XMLType. Основная цель XMLType состоит в том, чтобы формировать CLOB хранение и обеспечивать XPath-основанные методы ослабить обработку XML документов. XMLType может использоваться подобно любому другому Oracle тип в таблицах. XMLType обеспечивает несколько методов для того, чтобы обработать XML документы:

· STATIC createXML(xml VARCHAR | CLOB)

· MEMBER getClobVal() RETURN CLOB

· MEMBER getStringVal() RETURN VARCHAR

· MEMBER getNumberVal() RETURN NUMBER

· MEMBER isFragment() RETURN NUMBER

Статический метод createXML берет XML строку или CLOB и создает объект XMLType, таким образом, проверяя отмеченность, но не законность относительно DTD или XML схемы. Методы getClobVal и getStringVal возвращают содержание XMLType в преобразованном в последовательную форму формате. getNumberVal уступает, НОМЕР оценивает, и требует, чтобы текст был числовым. Следовательно, getNumberVal не может быть применен к элементам формы <CNo> "10" </CNo>; текст функции XPath () должен использоваться заранее, чтобы извлечь числовое значение "10". Два дальнейших метода XMLType извлекают выгоду из XPath подмножества для запроса:

a. MEMBER existsNode (VARCHAR xpath) RETURN NUMBER, прикладной по XMLType проверкам документа, если XPath определяет любые допустимые узлы.

b. MEMBER extract (VARCHAR xpath) RETURN XMLType фрагменты извлечений XMLType из XMLType документов, и возвращает их как объект XMLType.

2.6.2 Поддержка XQuery в Oracle

Oracle XML DB поддержит языку XQuery обеспечен через нативое выполнение SQL/XML функций XMLQuery и XMLTable.

Oracle XML DB вообще оценивает выражения XQuery, компилируя их в те же самые глубинные структуры как относительные запросы. Запросы оптимизированы, усиливая и относительная база данных и XQuery-определенные технологии оптимизации, так, чтобы Oracle XML DB служил родным XQuery механизмом.

2.6.2.1 Функции SQL XMLQuery и XMLTable

Функции SQL XMLQuery и XMLTable определены по SQL/XML стандарту как общий интерфейс между SQL и XQuery языками. Как имеет место для других функций SQL/XML, XMLQuery и XMLTable позволяют Вам использовать в своих интересах мощность и гибкость и SQL и XML. Используя эти функции, Вы можете создать XML данные, используя относительные данные, сделать запрос относительных данных, как будто это были XML, и создают относительные данные из XML данных.

2.6.2.2 Функции Расширения Oracle XQuery

Oracle XML DB добавляет некоторые функции XQuery к обеспеченным в W3C стандарте. Эти дополнительные функции находятся в Oracle XML DB namespace, http://xmlns.oracle.com/xdb, который использует предопределенные префиксные ora. Этот раздел описывает эти функции расширения Oracle.

2.6.2.3 Функция XQuery ora: contains

Функция XPath ora:contains может использоваться в выражении XPath выражения XQuery или в запросе к функции SQL existsNode, extract, или extractValue.

2.6.2.4 Функция XQuery ora: matches

Функция XQuery ora:match позволяет Вам использовать правильное выражение, чтобы соответствовать тексту в строке. Это возвращает true(), если ее target_string параметр соответствует ее параметру правильного выражения match_pattern и false () иначе. Если target_string - пустая последовательность, false () возвращена. Дополнительный параметр match_parameter - код, который квалифицирует соответствие: чувствительность к оператору выбора - и так далее.

2.6.2.5 Функция XQuery ora:replace

Функция XQuery ora:replace позволяет Вам использовать правильное выражение, чтобы заменить текст соответствия в строке.

2.6.2.6 Функция XQuery ora:sqrt

XQuery функция ora: sqrt возвращает квадратный корень ее числового параметра, который может иметь XQuery типа xs: decimal, xs: float, или xs: double. Возвращенное значение имеет тот же самый тип XQuery как параметр.

2.6.2.7 Функция XQuery ora:view

Функция XQuery ora:view позволяет Вам сделать запрос существующих таблиц базы данных или обозрений в выражении XQuery, как будто они были XML документами. В действительности, ora:view создает обозрения XML по относительным данным, на лету. Вы можете таким образом использовать ora:view, чтобы избежать явно, создавать обозрения XML относительно вершины относительных данных.

2.6.2.8 Поддержка Функциям и Операторам XQuery

Oracle XML DB поддерживает все функции XQuery и операторы, включенные в последний XQuery 1.0 и XPath 2.0 Функции и спецификация Операторов, со следующими исключениями. Нет никакой поддержки следующему:

Функции XQuery правильного выражения. Используйте расширения Oracle для операций правильного выражения, вместо этого.

Неявные часовые пояса, когда используя функции, которые вовлекают продолжительности, даты, или времена.

Значения типа xs:IDREF или xs:IDREFS, в функциях строки, которые вовлекают узлы.

2.6.2.9 Функций XQuery doc и collection.

XQuery встроенные функции fn:doc и fn:collection по существу определены выполнением. Oracle XML DB поддерживает эти функции для всех ресурсов в Oracle XML DB Repository. Функция doc возвращает ресурс файла архива, который преследуется его параметром URI; это должен быть файл правильно построенных XML данных. Функция collection подобна, но работает на ресурсах папки архива (каждый файл в папке должен содержать правильно построенные XML данные). Каждая из этих функций возвращает пустую последовательность, если целенаправленный ресурс не найден - это не поднимает ошибку.

2.7. Другие методы для хранения XML в реляционных данных

2.7.1. Относительный подход DTD

2.7.1.1 Побуждение для специальных методов преобразования схемы

Относительные схемы были получены из модели данных типа модели Связи сущностей.

При преобразовании XML DTD к отношениям, это соблазняет, чтобы отобразить каждый элемент в DTD к восторгу и отобразить атрибуты элемента к атрибутам отношения.

Нет никакой соответствия между элементами и атрибутами DTD и объектов и атрибутов Модели ER

a. Основная Inlining методика

Основной решает проблему фрагментации inlining так много потомков элемента насколько возможно в отдельное отношение, основы создают отношения для каждого элемента, потому что XML документ может быть внедрен в любом элементе в DTD.

Два осложнения: оцененные набором атрибуты и рекурсия.

Граф DTD - граф представляет структуру DTD. Его узлы - элементы, атрибуты, и операторы в DTD.

Учитывая граф элемента, отношения созданы следующим образом. Отношение создано для корневого элемента графа. Потомки всего элемента - inlined в то отношение со следующими двумя исключениями:

a. дочерние записи непосредственно ниже "*" узел сделан в отдельные отношения - это соответствует созданию нового отношения для набора - оцененного ребенка.

b. каждый узел, имеющий backpointer край, указывающий на это, сделан в отдельное отношение - это соответствует созданию нового отношения, чтобы обработать рекурсию.

Атрибуты в отношениях называет путь от корневого элемента отношения.

Каждое отношение имеет поле идентификатора, что серверы как ключ того отношения.

Все отношение, соответствующее узлам элемента, имеющего родителя также имеет parentID поле, которые служат внешним ключом.

b. Share Inlining Методика.

Основная идея позади Shared должна идентифицировать узлы элемента, которые представлены во множественных отношениях в Основном и совместно использовающему их, создавая отдельные отношения для этих элементов.

В общедоступном отношения, созданы для всех элементов в графе DTD, узел которого имеет В-степени что один.

Узлы элемента, имеющие В-степени из нуля также, сделаны отдельными отношениями, потому что они не доступны от любого другого узла.

Как в Основном, элементы bellows "*" узел сделан в отдельные отношения.

Наконец, взаимно рекурсивных элементов весь имеющий В-степени, один из них сделал отдельное отношение.

c. Hibrid Inlining Методика

Hibrid в том же самом как разделено за исключением того, что второй inlines некоторые элементы - не inlined в Shared.

Hibrid дополнительно inlines элементы со в-степени больше, что тот, которые не рекурсивны или достигнуты через "*" узел.

Подэлементы набора и рекурсивные элементы обработаны как в Shared.

2.7.1.2 DTD Xmark

<!ELEMENT site (regions, categories, catgraph, people, open_auctions,

closed_auctions)>

<!ELEMENT categories (category+)>

<!ELEMENT category (name, description)>

<!ATTLIST category id ID #REQUIRED>

<!ELEMENT name (#PCDATA)>

<!ELEMENT description (text | parlist)>

<!ELEMENT text (#PCDATA | bold | keyword | emph)*>

<!ELEMENT bold (#PCDATA | bold | keyword | emph)*>

<!ELEMENT keyword (#PCDATA | bold | keyword | emph)*>

<!ELEMENT emph (#PCDATA | bold | keyword | emph)*>

<!ELEMENT parlist (listitem)*>

<!ELEMENT listitem (text | parlist)*>