Выбрать главу

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) в таблице базы данных.