Для простоты и удобства будем использовать стандартную базу данных PUBS из поставки SQL Server 2000. Надо сказать, что Query Analyzer – не лучшее средство для просмотра XML-документов, т.к. результат он помещает в одну ячейку, как текстовое поле (или в одну строку, обрезая текст, при выводе результата в виде текста). Поэтому, если вы хотите испробовать все примеры сами, обратитесь к разделу IIS и XML-функции SQL Server.
Начнем с рассмотрения FOR XML RAW:
| select au_fname, au_lname, address from authors where au_fname like 'M%' for xml raw |
Этот запрос возвращает имена всех авторов, начинающиеся с буквы M. Вот результаты в формате XML:
| <row au_fname="Marjorie" au_lname="Green" address="309 63rd St. #411" /> <row au_fname="Michael" au_lname="O'Leary" address="22 Cleveland Av. #14" /> <row au_fname="Meander" au_lname="Smith" address="10 Mississippi Dr." /> <row au_fname="Morningstar" au_lname="Greene" address="22 Graybar House Rd." /><row au_fname="Michel" au_lname="DeFrance" address="3 Balding Pl." /> |
Теперь заменим xml raw на xml auto:
| <authors au_fname="Marjorie" au_lname="Green" address="309 63rd St. #411" /> <authors au_fname="Michael" au_lname="O'Leary" address="22 Cleveland Av. #14" /><authors au_fname="Meander" au_lname="Smith" address="10 Mississippi Dr." /> <authors au_fname="Morningstar" au_lname="Greene" address="22 Graybar House Rd." /><authors au_fname="Michel" au_lname="DeFrance" address="3 Balding Pl." /> |
Как видите, изменения невелики. Вместо названия элемента «row» подставляется имя таблицы. Теперь добавим к этому запросу ключевое слово ELEMENTS.
| select au_fname, au_lname, address from authors where au_fname like 'M%' for xml auto, elements |
Вот результаты:
| <authors> <au_fname>Marjorie</au_fname> <au_lname>Green</au_lname> <address>309 63rd St. #411</address> </authors><authors> <au_fname>Michael</au_fname> <au_lname>O'Leary</au_lname> <address>22 Cleveland Av. #14</address> </authors><authors> <au_fname>Meander</au_fname> <au_lname>Smith</au_lname> <address>10 Mississippi Dr.</address> </authors><authors> <au_fname>Morningstar</au_fname> <au_lname>Greene</au_lname> <address>22 Graybar House Rd.</address> </authors><authors> <au_fname>Michel</au_fname> <au_lname>DeFrance</au_lname> <address>3 Balding Pl.</address> </authors> |
Документ получился более громоздким: все поля представлены элементами.
С помощью ключевого слова XMLDATA можно получить документ со схемой данных.
| select au_fname, au_lname, address from authors where au_fname like 'M%' for xml auto, xmldata |
Этот запрос вернет такой документ:
| <Schema name="Schema1" xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes"> <ElementType name="authors" content="empty" model="closed"> <AttributeType name="au_fname" dt:type="string" /> <AttributeType name="au_lname" dt:type="string" /> <AttributeType name="address" dt:type="string" /> <attribute type="au_fname" /> <attribute type="au_lname" /> <attribute type="address" /> </ElementType></Schema><authors xmlns="x-schema:#Schema1" au_fname="Marjorie" au_lname="Green" address="309 63rd St. #411" /> <authors xmlns="x-schema:#Schema1" au_fname="Michael" au_lname="O'Leary" address="22 Cleveland Av. #14" /> <authors xmlns="x-schema:#Schema1" au_fname="Meander" au_lname="Smith" address="10 Mississippi Dr." /> <authors xmlns="x-schema:#Schema1" au_fname="Morningstar" au_lname="Greene" address="22 Graybar House Rd." /><authors xmlns="x-schema:#Schema1" au_fname="Michel" au_lname="DeFrance" address="3 Balding Pl." /> |
Как видите, теперь документу предшествует ХDR-схема, позволяющая проверить правильность его содержимого.






