Для форматирования результатов исполнения шаблона
может быть использована XSL-трансформация. Для этого необходимо задать атрибут
xsl, значение которого есть относительный или полный путь до файла, содержащего
шаблон трансформации. Атрибут xsl необязателен, как и раздел header.
Вот как будет выглядеть шаблон, основанный на изрядно
уже поднадоевшем вам запросе.
<?xml version="1.0" ?>
<my_root xmlns:sql="urn:schemas-microsoft-com:xml-sql"
sql:xsl="xsl_for_query.xsl">
<sql:query>
select
au_fname,au_lname,address
from authors where au_fname
like 'M%' for xml raw
</sql:query>
</my_root>
|
В нем используется та же схема преобразования, что и в
предыдущем примере. Теперь попробуйте его вызвать (предположим, вы его
сохранили под именем first_template.xml):
http://server/server_pubs/template/first_template.xml
|
Результат получается довольно странным: IE
представляет HTML-документ (получаемый при трансформации) в формате XML. Делает
он это на вполне законных основаниях, и чтобы результат выдавался все-таки в
формате HTML, нужно явно указать тип выходного потока. Это легко сделать с
помощью параметра contenttype.
http://server/server_pubs/template/first_template.xml?contenttype=text/html
|
Достоинства шаблонов очевидны:
Так как шаблон находится на сервере, вы полностью
контролируете его содержимое;
Шаблоны намного проще в использовании;
Тело шаблона и используемая схема преобразования
скрыты от пользователя;
Шаблоны можно динамически изменять или создавать, что
придает интернет-серверу дополнительную гибкость;
С помощью шаблонов можно выполнять запросы XPath, но
об этом уже в следующем разделе.
В шаблонах можно использовать следующие атрибуты
(рассмотрены наиболее используемые):
client-side-xml – Булева переменная, принимающая
значение 0 или 1. Если указывается 1, то при выборке используется форматирование
XML-документа на клиенте. Т.е. SQL Server выполняет обычный запрос, передает
рекордсет клиенту, и уже там производится формирование документа. Более
подробно клиентские курсоры будут рассмотрены в разделе ADO и XML.
ПРИМЕЧАНИЕ
В данном случае клиентом является
компьютер, откуда поступает запрос к SQL Server-y, то есть машина, где
расположен SQLXMLOLEDB-провайдер. В случае использования ADO – это машина
клиента. В случае использования шаблонов – сервер IIS.
|
nullvalue – позволяет задавать строку, которая в
URL-запросе и запросе XPath будет означать NULL.
is-xml – атрибут параметра, принимающий значение 0 и
1, используется в разделе header. По умолчанию он равен 1. Это означает, что
значение параметра интерпретируется как фрагмент xml, поэтому, например, < не заменяется. Если задано значение 0, параметр интерпретируется как
обычный текст.
Назначение других атрибутов можно найти в MSDN.
Запросы XPath
XPath не рассчитан на работу с реляционными данными.
Чтобы использовать XPath-запросы для выборки реляционных данных, необходимо
создать схему данных XDR или XSD. XDR была разработана несколько лет назад при
активном участии Microsoft, т.к. в то время необходимость в схемах данных была, а, по существу, самих схем не было. С появлением XSD популярность и
актуальность применения XDR начали падать.
ПРИМЕЧАНИЕ
Спецификацию XSD можно найти в [5].
|
Схема данных выполняет две важные функции: задает
структуру будущего XML-документа и определяет, какие поля и таблицы должны
использоваться при выполнении запроса XPath. Такие схемы называются
аннотированными схемами запросов, а атрибуты, связывающие объекты базы данных с
XML-узлами – аннотациями. До выхода в свет SQLXML 2.0 можно было использовать
только аннотированные схемы на основе SDR [6]. Однако сейчас лучше использовать
аннотированные схемы на основе спецификации XSD [7]. Некоторую информацию по
преобразованию схем из XDR в более новый формат XSD можно найти в [8].
Вот синтаксис шаблонов с использованием запросов
XPath:
<your_root xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<sql:header>
<xql:param
name="your_param_name"> param_value </sql:param>
<xql:param
name="your_param_name"> param_value </sql:param>...n
</sql:header>
<sql:xpath-query
mapping-schema="your_schema.xml">
XPath query
</sql:xpath-query>
</your_root> Рекомендуем скачать другие рефераты по теме: права человека реферат, реферат влияние.
Предыдущая страница реферата | 16
17
18
19
20
21
22
23
24
25
26 | Следующая страница реферата
|
|