http://localhost/Novelty?sql=select top 10 * from tblCustomer FOR XML AUTO&root=customer
Обратите внимание, что параметр root в конце данного URL-указателя содержит корневой элемент XML-документа. Без него довольно трудно отображать результаты HTTP-запросов в окне Web-броузера.
Применение XML, XSLT и SQLXML для создания отчета
Попробуем теперь применить описанные ранее сведения в практической ситуации, например для создания списка адресов клиентов. Как будет показано далее, изменение HTML-содержимого с помощью XSL-файла не вызывает больших трудностей. Поэтому такой способ часто применяется для форматирования страниц, которые предполагается распечатать, или вместе с JavaScript/ASP.NET для повышения функциональности и надежности.
SQL Server предоставляет данные в формате XML, а для сохранения запроса используется шаблон в файле noveltytemplate.xml. Единственным назначением этого файла является сбор данных и присвоение страницы стиля.
<?xml version =1.0' encoding='UTF-8 '?>
<root xmlns:sql='urn:schemas-microsoft-com:xml-sql' sqclass="underline" xsl='noveltyxsl.xsl' >
<sqclass="underline" query>
SELECT FirstName, LastName, Address, City, State FROM tblCustomer FOR XML AUTO
</sqclass="underline" query>
</root>
В первой строке задается базовый XML-документ и способ связывания со страницей стиля, который аналогичен применению элемента xmclass="underline" stylesheet в листинге 9.2. Следующий элемент sqclass="underline" query является контейнером команды SQL или выполняемого запроса. Предложение FOR XML AUTO сообщает SQL Server о возвращении результатов в формате XML. В шаблоне предполагается, что корневой элемент называется root, поэтому его не нужно указывать в шаблоне запроса.
НА ЗАМЕТКУДля динамического присвоения страницы стиля с помощью SQLXML нужно добавить в URL-указатель параметр запроса xsl= и указать используемый файл в формате http://имя_компьютера/виртуальный_каталог_шаблонов/имя_шаблона.xml?xsl=имя файла_стиля.xsl.
В листинге 9.7 показана страница стиля XSL, которая используется для создания итогового XML-документа. Для указания атрибута в ней применяется технология XPATH. С помощью синтаксиса CSS и HTML создается формат представления извлеченной информации в окне Web-броузера.
ЛИСТИНГ 9.7. Файл noveltyxsl.xsl<?xml version='1.0' encoding='UTF-8'?>
<xsclass="underline" stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsclass="underline" template match = '*'>
<xsclass="underline" apply-templates />
</xsclass="underline" template>
<!-- Имя запрашиваемой таблицы извлекается из дочерних элементов. -->
<xsclass="underline" template match = 'tblCustomer'>
<TR>
<!-- Обратите внимание на использование XPATH для сбора данных из полей. -->
<TD><xsclass="underline" value-of select='@FirstName' /></TD>
<TD><xsclass="underline" value-of select='@LastName' /></TD>
<TD><xsclass="underline" value-of select='@Address' /></TD>
<TD><xsclass="underline" value-of select='@City' /></TD>
<TD><xsclass="underline" value-of select='@State' /></TD>
</TR>
</xsclass="underline" template>
<xsclass="underline" template match = '/'>
<HTML>
<HEAD>
<STYLE>th {background-color: #000080; color: #ffffff;} td {font-family: Arial} </STYLE>
</HEAD>
<BODY>
<TABLE border='1' style='width:600;'>
<TR><TH colspan='9' >Customers</TH></TR>
<TR>
<TH>First name</TH>
<TH>Last name</TH>
<TH>Address</TH>
<TH>City</TH>
<TH>State</TH>
</TR>
<xsclass="underline" apply-templates select = 'root' />
</TABLE>
</BODY>
</HTML>
</xsclass="underline" template>
</xsclass="underline" stylesheet>
Разместите оба файла (noveltytemplate.xml и noveltyxsl.xsl) в подчиненном каталоге templates виртуального Web-каталога Novelty, который описывается в предыдущем разделе. После этого откройте Web-броузер Internet Explorer версии 6.0 или выше и введите в нем следующий URL-указатель:
http://localhost/Novelty/templates/noveltytemplate.xml?contenttype=text/html
Параметр contenttype используется для указания формата представления конечного результата, т.е. в виде HTML-страницы. После выполнения описанных действий данные в окне Web-броузера будут иметь такой вид, как на рис. 9.14.
РИС. 9.14. Результат представления данных с помощью XML-шаблона и технологии XSL
Резюме
В этой главе представлены базовые сведения о языке XML и его назначении. Здесь демонстрируются способы применения XML на платформе.NET Framework и взаимодействия XML с Visual Basic.NET. В конце главы показан способ конфигурирования Web-сервера IIS и СУБД SQL Server 2000 для представления информации в виде XML-документов, на основе которых можно легко создавать HTML-страницы. Большая часть приведенной здесь информации играет роль введения в главу 10, "ADO.NET и XML".
Вопросы и ответы
Что означает "создание схемы" в контексте XML?
В контексте баз данных "создание схемы" означает создание документа с определениями объектов и сущностей. В контексте XML это понятие может быть расширено и охватывать другие сведения, например определение поля без неопределенных значений (NOT NULL) в таблице базы данных.