Базы данных. Лекция 14. XML

advertisement
ИСПОЛЬЗОВАНИЕ HTML В SQL
SELECT
’<TABLE BORDER=1>’,’’,’’,’’
UNION ALL
SELECT
’<TR>’,
’<TD>’+CompanyName+’</TD>’,
’<TD>’+CustomerID+’</TD>’,
’</TR>’
FROM Customers
UNION ALL
SELECT
’</TABLE BORDER=1>’,’’,’’,’’
ПРОБЛЕМЫ HTML
HTML
HTML не расширяем. Каждый
браузер поддерживает
фиксированный набор тегов, и
возможности добавить новые теги
не существует
HTML
Язык ориентирован на
форматирование данных. Если
изменится формат данных, которые
считывает некоторая программа, то
она, скорее всего, перестанет работать
HTML
Язык статичен. DHTML и подобные
технологии смягчают этот момент, но
HTML никогда не предназначался для
работы с изменяющимися данными
ПРОБЛЕМЫ HTML И XML
HTML
HTML дает только одно
представление данных. Изменение
представления данных оказывается
более сложным, чем следует.
HTML
Мало семантики. Нет возможности для
представления данных отличным от
отображения способом
XML
Создан для решения проблем,
связанных с ограничениями HTML. Это
метаязык предназначенный для
определения новых языков, которые
можно использовать для обмена
данными
ВИНЕГРЕТ ТЕХНОЛОГИЙ
HTML,
Формат без структуры
DHMTL
CSS
Лучше формат, нет структуры
XML
Есть структура, нет формата
XSL
Формат для структуры
DOM
Все вместе
Язык с возможностями
расширенной разметки (XML)
• “XML – это стандартный язык, который используется
для структурирования и определения данных в виде,
приемлемом для различных приложений” *
• Подвид стандарта ISO SGML
– Короче и проще
– Оптимизирован для WWW
• XML и HTML похожи и дополняют друг друга
– HTML может использоваться для показа XML
документов
• Спецификация XML 1.0 – одобрена W3C
– http://www.w3.org/TR/1998/REC-xml19980210.html
* William J Pardi – “XML in Action” – Microsoft Press
XML И HTML
• Использование и структура
– HTML – для представления, менее
структурирован
– XML – для данных, более структурирован
• Расширяемость
– Имена HTML элементов и аттрибутов фиксированные
– Имена XML элементов и аттрибутов
вполне расширяемы, что делает XML
предпочтительным для данных
ПРОСТОЙ ПРИМЕР XML
<?xml version="1.0" encoding="WINDOWS-1251"?>
<tutorial>
<title>"Заметки об XSL"</title>
<author>Леонов Игорь Васильевич</author>
</tutorial>
XML документ в хорошей форме
well-formed xml document (4 правила)
XML объявление
Атрибут
<?xml version="1.0"?>
<Order o_id="7845" o_date="1999-02-01" o_cur="USD" c_id="JANTOY" >
<ShippingAddress sa_city="Erie" sa_state="PA" sa_pcode="19130"> Элемент
<Line l_text="Jan's Toys" />
Пустой элемент
<Line l_text="1818 Market Street" />
<Line l_text="3rd Floor, Room 1219" />
</ShippingAddress>
<OrderDetails>
<Item p_id="325" p_name="Whirlygig" od_qty="5" od_unitp="15.50" />
<Item p_id="326" p_name="Zapper" od_qty="2" od_unitp="10.25" />
тега od_qty="5" od_unitp="15.50" />
<Item p_id="327" Открытие
p_name="Whirlygig"
</OrderDetails>
<Comments>
Закрытие тега
This order replaces order 7844 which was cancelled by the customer.
</Comments>
Содержание
</Order>
Корневой элемент
ПРАВИЛЬНО ОФОРМЛЕННЫЙ XML-ДОКУМЕНТ
Правило № 1
Все элементы должны корректно открываться,
закрываться и быть вложенными. Например, это
корректно:
<name> Jane <address> Main Street </address>
</name>
Это не корректно:
<name>Jane<address>123 Main
</name></addess>
Как и это:
<name>Jane<address>123 Main</name>
ПРАВИЛЬНО ОФОРМЛЕННЫЙ XML-ДОКУМЕНТ
Правило № 2
XML не позволяет иметь незакрытые элементы. Так,
если элементу не нужен закрывающий тэг (как в
случае при отсутствии содержимого), это следует
отражать при определении открывающего тэга
элемента. Это можно сделать, завершая тэг
символом "/".
<image url="my_face.jpg" />
Почему это правило необходимо?
XML-документам не нужно Определение Типа Документа (DTD –
Document Type Definition). Без DTD процессор не может “понять”,
нужен элементу закрывающий тэг или нет, так что по умолчанию
каждый элемент должен быть закрыт тем или иным способом.
ПРАВИЛЬНО ОФОРМЛЕННЫЙ XML-ДОКУМЕНТ
Правило № 3
Все значения атрибутов должны заключаться в
кавычки. (В конце концов, существует стандарт.)
Это верно:
<product version="5">
Это неверно:
<product version=5>
ПРАВИЛЬНО ОФОРМЛЕННЫЙ XML-ДОКУМЕНТ
Правило № 4
XML чувствителен к регистру. Можно пользоваться
любым регистром, но следует быть
последовательным.
<product> в нашем примере допустимо,
в то время как <Product> или <PRODUCT> — нет.
ПРАВИЛЬНО ОФОРМЛЕННЫЙ XML-ДОКУМЕНТ
Правило № 5
Свободное место не игнорируется. Следующие два
примера будут интерпретироваться по-разному.
<title>
<name>The mysterious mathematician</name>
</title>
<title>
<name>
</title>
The mysterious mathematician</name>
ПРАВИЛЬНО ОФОРМЛЕННЫЙ XML-ДОКУМЕНТ
Правило № 6
На верхнем уровне XML-файла всегда
находится один элемент.
ПРАВИЛЬНО ОФОРМЛЕННЫЙ XML-ДОКУМЕНТ
Это — базовые правила XML. Если документ
отвечает этим требованиям, он считается
правильно оформленным. Если документ
этим требованиям не удовлетворяет он
обработан не будет. Можно ли вообразить,
что бы было, если бы это относилось и ко
всем HTML-документам? Как видите, создать
XML-документ предельно легко. Особенно,
если уже знать HTML.
ЭЛЕМЕНТЫ ИЛИ АТРИБУТЫ?
Необычность XML заключается в том, что этот язык
предлагает два почти эквивалентных, хотя и не
совсем, способа написания фразы: "это данные".
Первый способ указания значения данных поместить его во вложенный элемент, второй присвоить
значению
атрибута.
Поскольку
очевидный ответ на вопрос, когда какой из этих
двух подходов является наиболее походящим, как
правило, отсутствует, XML не является полностью
ортогональным (в теории программирования под
этим термином понимается следующее: "каждая
конструкция выполняет одну вещь, и никакая
другая конструкция не делает то же самое").
ЭЛЕМЕНТЫ ИЛИ АТРИБУТЫ?
<inventory>
<product id="500" version="5">PowerProduct</product>
<product id="501" version="5">PowerProduct </product>
<product id="502" version="6.01">PowerProduct</product>
</inventory>
<inventory>
<product>
<id>500</id>
<version>5</version>
<name>PowerProduct</name>
</product>
...
</inventory>
Пространства имен
•
•
Модульный подход – грамотный подход (reuse)
Создание контекстных словарей для своих приложений (имена
элементов и атрибутов)
– Чтобы избежать коллизий нужно обеспечить уникальность
– XML Namespaces (http://www.w3.org/TR/REC-xml-names)
– URI-Квалификатор, xmlns – атрибуты объявления
<awl:book awl:ID="1-2323-23424"
xmlns:awl="http://www.awl.com/cseng"
xmlns:dm="http://www.develop.com/courses">
<awl:title>Essential Legos</awl:title>
<dm:related-course dm:ID="EMIND"/>
<dm:title>Essential Mindstorm</dm:title>
</dm:related-course>
</awl:book>
ОБРАБОТЧИКИ И ОБЪЕКТНЫЕ
ИНТЕРФЕЙСЫ
msdn.microsoft.com/downloads/tools/xmlparser/xmldl.asp
www.megginson.com
• Задача
– Анализ / выверка XML документа
– Программное управление XML документами
– Запуск кода (компонентов) с помощью XML
• Технологии / стандарты
– Microsoft® XML Parser (MSXML)
• Используется ПО Microsoft для работы с XML
• Поддерживает схемы DTD и XDR для валидации
• Последняя версия поддерживает XSLT и XPath
– Microsoft XML object model
• Работа с XML документами из COM/VBScript/JScript
• Поддержка W3C XML Document Object Model (DOM) Level 1
– Simple Object Access Protocol (SOAP)
• Способ вызова методов, адаптированный для Интернет
• В работе в IETF (Draft)
ОПРЕДЕЛЕНИЕ ТИПА ДОКУМЕНТА
DOCUMENT TYPE DEFINITION, ИЛИ DTD
DTD позволяет указать, сколько элементов связано друг с другом.
Например:
<product>
<id>
<name>
<version>
</product>
Один элемент обозначен как главный, а остальные — как
подчиненные. Чтобы быть корректным, любой документ,
содержащий эти элементы, должен поддерживать эти
отношения. DTD ответственен за определение как этих
отношений, так и дополнительных факторов — порядка
использования элементов, типа данных, которые могут в
них содержаться и пр.
<!ELEMENT product (id+, name+, version?)>
<!ELEMENT id (#PCDATA)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT version (#PCDATA)>
PCDATA — это резервное имя, описывающее базовые элементы и представляющее тип данных,
содержащихся в элементе. Оно означает наличие символьных данных, которые могут быть
подвергнуты грамматическому анализу. Есть и дополнительные способы определения
содержания элемента, а также атрибутов, которые могут содержаться в элементе.
ФОРМАЛИЗАЦИЯ СТРУКТУРЫ XML
Существуют способы формального
определения структуры XMLдокументов
Устарело!
Не для новых
• DTD (Document Type Definition)
разработок
• XML-Схема (XML Schema)
ОПИСАНИЕ XML ДОКУМЕНТОВ
• Требования
– Описать структуру любого класса XML
документов, напр., “Заказы”
– Определить является XML документ “валидным”
представителем своего класса
• Используемые стандарты
– Document Type Definitions (DTD’s)
• Устоявшийся стандарт в мире SGML
• Подходит для задания
документоориентированных типов данных
– Схемы XML-Data/XML-Data Reduced (XDR)
• Нарождающийся стандарт
• Подходит для БД-ориентированных типов
данных
Простая XDR схема
<Schema name=“bookSchema_v_1.2”>
<ElementType name=“book”>
<element type=“id”/>
<element type=“price”/>
<element type=“author”/>
<element type=“title”/>
<element type=“grade.level”/>
</ElementType>
<ElementType name=“price”
dt:type=“float” required=“yes”/>
<ElementType name=“id”
dt:type=“string” required=“yes”/>
. . .
</Schema>
XML СХЕМЫ
•
•
•
Схемы общедоступные и
могут быть опубликованы
новые
– Это закладывает базис
для тестирования
бизнес-договоров
Одна программа “выдает”
необходимый
XML документ
Другая его
“переваривает”
– С помощью схемы
можно проверить
соответствие договору
XM
L
ПОЧЕМУ СХЕМЫ - ЛУЧШЕ?
• Схемы лучше наращиваются
– XML-синтаксис
• Лучше типизация данных
– БД/ программно – ориентированная
типизация и кодировка
– Легче налагать правила (диапазоны, списки и
т.д.)
– Можно расширять типы данных
• Поддержка пространств имен
– Основное требование при подаче схемы в
библиотеку
ФОРМАТИРОВАНИЕ/ПРЕОБРАЗОВАНИЕ
XML
•
•
Задача
– Форматирование XML-документов для показа
– Перевод исходного XML в целевой XML/HTML
– Работа с секциями документа XML
Технологии/Стандарты
– Extensible Stylesheet Language (XSL) – Стили
• Аналогичны каскадным (CSS)
• Более функциональны для форматирования XML
• В работе в W3C (Working draft)
– XSL Transformation Language (XSLT)
• Раздвигает границы возможностей XSL в плане
преобразований данных
• Спецификация W3C
– XML Path Language (XPath) – Задание путей
• Общий синтаксис и семантика для запросов и адресации
содержания XML документов
• Базовая фильтрация и навигация по путям
• Используется XSLT
• Рекомендация W3C
XSL ТРАНСФОРМАЦИИ
XML
документ
XSL процессор
+
XSL
таблица
стилей
XSL процессор
XML документ
(иной формат)
HTML страница
(XML-совместимая)
Применение стилевой таблицы XSL к
XML документу
<?xml-stylesheet type="text/xsl"
href="Books.xsl" ?>
ТАБЛИЦЫ СТИЛЕЙ XSL
•
XSL документ = Правильно оформленный XML
документ
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
template rule 1
output template
template rule 2
output template
</xsl:stylesheet>
– В «шапке» - элемент <xsl:stylesheet>
– Внутри него - элементы шаблонных правил
<xsl:template>
– Внутри правила <xsl:template> - действие,
определяющее вывод элемента
ОСНОВЫ XSLT
• XML НЕ Показывает и НЕ
Преобразует данные
– XML отделяет данные от форматов и
трансформации
• Что может XSLT?
– Хранить информацию о передаче и
преобразовании данных
– Примеры: преобразование данных,
прог. сценарии, фильтры и генерация
HTML-кода
ОСНОВЫ XSLT
• XSLT содержит пакет функций для
преобразования данных
– Целевые группы
• Конкатенация
• Вычисления
• Преобразование данных
• Сценарии
• BizTalk Mapper работает с этими
функциями с помощью Functoids
ПРОСТОЙ ПРИМЕР XML и XSL
<?xml version="1.0" encoding="WINDOWS-1251"?>
<?xml-stylesheet type='text/xsl' href='ex01-1.xsl'?>
<tutorial>
<title>"Заметки об XSL"</title>
<author>Леонов Игорь Васильевич</author>
</tutorial>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<p><strong><xsl:value-of select="//title"/></strong></p>
<p><xsl:value-of select="//author"/></p>
</xsl:template>
</xsl:stylesheet>
ПРОСТОЙ ПРИМЕР XML и XSL
<?xml version="1.0" encoding="WINDOWS-1251"?>
<?xml-stylesheet type='text/xsl' href='ex01-2.xsl'?>
<tutorial>
<title>"Заметки об XSL"</title>
<author>Леонов Игорь Васильевич</author>
</tutorial>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<p><strong><xsl:value-of select="//author"/></strong></p>
<p><xsl:value-of select="//title"/></p>
</xsl:template>
</xsl:stylesheet>
ЯЗЫК ЗАПРОСОВ XPATH
•
•
•
XPath – язык для выборки подмножества узлов из XML-документа
–
Основан на спецификации W3C; см. http://www.w3.org/TR/1999/PRxpath-19991008.html
Доступ осуществляется по местонахождению (location path), состоящему из
3-х частей
–
Ось – оговаривает относительное положение узла в дереве XMLдокумента
•
Child, Parent, Self, Attribute
–
Узел – элемент, по отнош. к к-му применяется действие оси
–
Предикат выборки – по сути, условие WHERE
•
Берется в скобки [ ]
Примеры
–
child::Customer
•
Выбираются все дочерние подэлементы элемента <Customer>
–
child::Customer/child::Orders
•
Для данного <Customer> выбираются все подэлементы <Order>
внутри него со своими детьми
–
Customer[attribute::CustomerID="ALFKI"]
•
Условие выборки – только <Сustomer> c заданным значением
атрибута CustomerID
<usr>
<bin>
<cat/>
<echo/>
<xmllint/>
…
</bin>
<lib>
…
</lib>
</usr>
Простой XPath
/usr/bin/xmllint
Похож на путь к файлу
<AAA>
<BBB/>
<CCC/>
<BBB/>
<BBB/>
<DDD>
<BBB/>
</DDD>
<CCC/>
</AAA>
Простой XPath
/AAA/CCC
Результат — множество узлов
<AAA>
<BBB/>
<CCC/>
<BBB/>
<DDD>
<BBB/>
</DDD>
<CCC>
<DDD>
<BBB/>
<BBB/>
</DDD>
</CCC>
</AAA>
//
Поиск по всему
поддереву
//DDD/BBB
<AAA>
<XXX>
<DDD>
<BBB/>
<EEE/>
<FFF/>
</DDD>
</XXX>
<CCC>
<XXX>
<BBB/>
<BBB/>
<EEE/>
<FFF/>
</XXX>
</CCC>
</AAA>
*
Любое имя
/AAA/*/*/BBB
<AAA>
<BBB id="b1"/>
<BBB id="b2"/>
<BBB name="bbb"/>
<BBB/>
</AAA>
@
Атрибут
//BBB/@name
ФИЛЬТРАЦИЯ
(/AAA/BBB)[1]
<AAA>
<BBB/>
<BBB/>
<BBB/>
<BBB/>
</AAA>
(/AAA/BBB)[last()]
<AAA>
<BBB/>
<BBB/>
<BBB/>
<BBB/>
</AAA>
XPath: Примеры
•
Найти имя ректора
/institute/rector/person/text()
•
Найти названия факультетов
/institute/faculty/@name
•
Найти всех сотрудников
//person
•
Найти имя декана факультета «Б»
/institute/faculty[@shortname=“Б”]/dean/person/text()
•
Найти имя второго по счету заместителя Малюка А. А.
//dean/person[starts-with(., “Малюк”)]
/../../deputies/person[position() = 2]
Xpath (ранее XQL - Extensible Query Language)
(msdn.microsoft.com/downloads/webtechnology/xml/msxml.asp)
•
Адреса узлов в иерархии XML документов
<contact category="enemy of the state">
<fullname>Smith</fullname>
<numbers>
<home>801-555-2323</home>
<cell>801-555-3232</cell>
</numbers>
</contact>
/descendant::contact[fullname="Smith"]/child::numbers/child::*
doc.setProperty "SelectionLanguage", "XPath"
sel = doc.selectNodes("descendant::numbers")
•
MSXML 2.6: объект IXMLDOMNode методы
selectNodes и selectSingleNode
XQuery – Язык XML запросов

XQuery – это SQL для XML
 Независимость от конкретной СУБД
 Простота использования

Поддержка популярными СУБД
(Microsoft SQL Server 2003, Oracle 9i и10g)

Базируется на XPath, но более понятен и
может работать на множестве документов
ЯВЛЯЕТСЯ ЛИ XML БАЗОЙ ДАННЫХ?
Если строго придерживаться определения
базы данных, то «XML» – в том случае, если
под этим термином подразумевается
XML-документ, – базой данных не является.
Хотя XML-документ содержит данные, без
дополнительного программного
обеспечения, которое служит для обработки
этих данных, он является базой данных не в
большей степени, чем любой другой
текстовый файл.
ЯВЛЯЕТСЯ ЛИ XML БАЗОЙ ДАННЫХ?
Если говорить более широко, то есть, подразумевая
под «XML» собственно XML-документ и
сопровождающие XML инструменты и технологии –
ответ будет звучать как «да, но». «Да», потому что
XML предоставляет множество функций баз данных:
хранение (XML-документ), схемы (DTDS, язык
определения схем XML), язык запросов (XQL, XML-QL,
QUILT и другие), интерфейсы для языков
программирования (SAX, DOM) и так далее. «Но»,
потому что многие функции присущие классическим
базам данных все же отсутствуют: эффективное
хранение, индексация, обеспечение безопасности,
обработка транзакций и поддержка целостности
данных, многопользовательский доступ, триггеры,
поддержка запросов ко многим документам и т.д.
ПОТЕРЯ СООТВЕТСТВИЯ
Daniela Florescu (редактор языка XQuery):
«Для меня остается полной загадкой, как
разработчикам удается реализовывать свои
заказы, представленные в трех различных видах
(XML, Java/C# и кортежи) – тратить так много
времени на поддержание согласованности и
написание преобразований, и так много времени
на копирование данных из одного формата в
другой. Подобное «животное с тремя ногами»,
как его называют, – это техническое
недоразумение...»
XML и MS SQL Server 2000
•
•
•
•
•
Сервер пишет и читает XML документы
– Новое в Transact-SQL (выражение FOR XML,
режимы RAW|AUTO|EXPLICIT, ключевые
слова TAG и
PARENT)
– HTTP GET/POST
– XML документы можно посылать как текст и
работать с ними с помощью системных
хранимых процедур
Работает с Internet Information Server
– Через ISAPI DLL и новый SQL Server
OLE DB провайдер
XML запросы на чтение и обновление
Поддержка XDR схем
Поддержка XSL-обработки на сервере
XML И SQL
ИНСТРУКЦИЯ SELECT FOR XML
Этот оператор предназначен для представления
результирующего набора строк в виде XML-документа.
Рассмотрим его синтаксис:
FOR XML { RAW | AUTO | EXPLICIT }
[ , XMLDATA ]
[ , ELEMENTS ]
[ , BINARY BASE64 ]
FOR XML RAW
Каждая строка представляется в
виде элемента <row/>.
Название поля формирует
название атрибута, а значение
поля – значение атрибута
FOR XML AUTO
Документ XML форматируется точно так же,
как и при XML RAW, только название
элемента, представляющего строку,
заменяется на название таблицы.
ПРЕДУПРЕЖДЕНИЕ
SQL Server не позволяет использовать предикат
GROUP BY совместно с FOR XML AUTO.
FOR XML EXPLICIT
Самый сложный и гибкий вариант для
создания XML-документов. В этом режиме
можно формировать документы
практически любой формы, однако для
этого сам запрос должен быть написан по
определенным правилам.
FOR XML EXPLICIT
В данном режиме можно формировать практически любые
документы. Структура результирующего XML-документа
определяется непосредственно в самом запросе. Запрос может
принимать очень сложный вид.
Первое поле всегда называется tag и представляет собой числовой
идентификатор таблицы. Вы можете указывать для него любые
числовые значения. В результирующем документе он не появляется,
и нужен только, чтобы определить связи между таблицами для
формирования иерархического документа. Второе поле называется
parent и тоже может представлять любой числовой идентификатор.
Он определяет родительскую таблицу для данной таблицы и в
результирующем документе также не присутствует. Если родитель
отсутствует, указывается 0 или NULL. Для иерархических выборок
нужно использовать несколько запросов, объединенных с помощью
оператора UNION ALL.
FOR XML EXPLICIT
После двух обязательных полей tag и parent следуют поля,
которые требуется выбрать из таблицы.
Для них должен быть задан псевдоним, определяющий тип
XML-узла, его название и другую информацию.
Вот синтаксис этого псевдонима:
ElementName ! TagNumber ! AttributeName ! Directive
FOR XML EXPLICIT
ElementName ! TagNumber ! AttributeName ! Directive
 ElementName – имя элемента, в котором будет находится
элемент данного поля. Обычно здесь указывается имя
таблицы.
 TagNumber – идентификатор таблицы, в которой находится
данное поле. Одному и тому же ElementName всегда должен
соответствовать один TagNumber. Он также не отображается
ни в каком виде в результирующем документе, однако
нужен для определения иерархических связей между
таблицами.
 AttributeName – имя атрибута (или элемента),
представляющего данное поле.
FOR XML EXPLICIT
ElementName ! TagNumber ! AttributeName ! Directive
Directive – по существу, представляет собой тип узла. Может
принимать следующие значения:
element
поле представляется в виде элемента
xml
То же самое, что element, но не выполняет трансформации текста.
Например, символ меньше (<) не превращается в ссылку <
cdata
значение поля обрамляется соответствующим образом. Имя
атрибута указывать совместно с этим ключевым словом нельзя.
hide
id, idref,
idrefs
позволяет скрыть поле
позволяют делать ссылки на другие элементы. Эти атрибуты
имеют значение, только если создается схема данных.
FOR XML EXPLICIT
SELECT au_fname, au_lname, address
FROM authors
WHERE au_fname like 'M%'
FOR XML RAW;
SELECT 1 as tag, 0 as parent,
au_fname as 'authors!1!fname',
au_lname as 'authors!1!lname',
address as 'authors!1!address'
FROM authors
WHERE au_fname like 'M%'
FOR XML EXPLICIT;
Немного исправим запрос для демонстрации
возможностей директивы FOR XML EXPLICIT.
select 1 as tag, 0 as parent,
au_fname as 'authors!1!fname',
au_lname as 'authors!1!lname!element',
address as 'authors!1!!cdata‘
from authors
where au_fname like 'M%'
for xml explicit
Вот результат:
<authors lname="Green">
<fname>Marjorie</fname>
<![CDATA[ 309 63rd St. #411 ]]>
</authors>
<authors lname="O'Leary">
<fname>Michael</fname>
<![CDATA[ 22 Cleveland Av. #14 ]]> </authors><authors lname="Smith">
<fname>Meander</fname>
<![CDATA[ 10 Mississippi Dr. ]]>
</authors><authors lname="Greene">
<fname>Morningstar</fname>
<![CDATA[ 22 Graybar House Rd. ]]>
</authors>
<authors lname="DeFrance">
<fname>Michel</fname>
<![CDATA[ 3 Balding Pl. ]]>
</authors>
XMLDATA
Иногда бывает полезно получить не только сами
данные, но и их схему. Схема данных также
записывается в формате XML. Она определяет типы
элементов и атрибутов, накладывает ограничения
на их значения, и вообще представляет
метаинформацию, позволяющую проверить
документ на действительность (validity).
Существует несколько разновидностей (форматов)
схем данных. SQL Server использует XDR-схемы
(XML Data Reduced). Ключевое слово XMLDATA
может быть использовано для всех трех режимов
формирования XML-документа (raw, auto и explicit).
ELEMENTS
Ключевое слово, использующееся только
совместно с FOR XML AUTO.
При его указании поля формируются как
элементы: название поля соответствует
названию элемента, а значение поля –
значению элемента.
BINARY BASE64
Определяет, как будут выведены двоичные
данные (binary data).
Зачем XML нужен в СУБД?
• Передача запросов и результатов через
Интернет
– XML прозрачно проходит сквозь сетевые экраны
• В отличие, скажем, от СОМ-объектов
• Взаимодействие в гетерогенных средах
– XML сейчас понимают все независимо от платформы и
ОС
• Интеграция не только с другими СУБД, но и с
серверами B2B, электронной коммерции и пр.
• Не требует установки дополнительного ПО на
клиента
– Клиент может быть сколь угодно тонким
• Опять же потому, что средства его поддержки
присутствуют изначально
“Клиенты”
“Посредники”
“Серверы”
TIBCO
NT
Web
SNA
CICS MF
MQ
CICS UNIX
PDA
HTTP
Phones
CORBA
ATMs
Kiosks
JAVA RMI
DCOM
CORBA
NT
“Клиенты”
“Посредники” “Серверы”
NT
CICS MF
Web
CICS UNIX
PDA
XML
Phones
ATMs
Kiosks
CORBA
NT
ОБЪЕДИНЕННЫЕ СЛУЖБЫ
Поставщик A
SAP
XSL
АСУ РП
Планирование
XSL
XML сообщение
XML
Торговля Online
Виртуальный
торговый центр
Заказы
Склад
Мощность
XML
XSL
Потребители
Поставщик B
XSL
JD Edwards
XSL
Поставщик C
Siebel
Windows DNA 2000
Платформа для веб-приложений следующего поколения
Клиентский
ярус
Ярус прикладной
логики
Службы приложений
Ярус данных
Доступ к данным
И их хранилищам
Хост-системы
Browser
ASP/COM+
приложение
SQL Server
Приложение
Другие СУБД
МиниПК
IIS/ASP, COM+/MTS, MSMQ.
ADO/OLE DB,
Active Directory, XML,
Commerce
Internet (TCP/IP, HTTP, HTML, XML)
Microsoft
SQL Server2000
…
ПЕРВОЕ И ВТОРОЕ ПОКОЛЕНИЯ
ВЕБ ПРИЛОЖЕНИЙ
Файл
Вебсервер
Browser
1 в 1 соответствие
страницы файлу
Файл БД Штатные
разработки
Вебсервер
Browser
“Динамические
страницы”
ТРЕТЬЕ ПОКОЛЕНИЕ
Web
Вебsite
служба
Файл
Web
Вебsite
служба
Web
Вебsite
служба
Завтра, внешние веб-сайты
могут стать строительными
кирпичиками с помощью XML
•Веб-службы
•Мегасервисы
“Брандмауэр”
Как подключить приложение
к сайту сегодня = HTML
“сканирование экрана” или
“по договоренности”
БД
Веб-сервер
Штатные
разработки
Browser
“Динамические страницы”
Просмотр,
изменение,
удаление файлов
Порча
оборудования
Демонтаж
оборудования
Установка
вредоносного
программного кода
КОМПЬЮТЕРЫ
ЧЕЛОВЕЧКИ
Download