Здесь я использовал новую аннотированную схему и
шаблон трансформации.
Аннотированная схема:
<?xml version="1.0" encoding="windows-1251"
?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:sql="urn:schemas-microsoft-com:xml-sql"
xmlns:dt="urn:schemas-microsoft-com:datatypes">
<ElementType name="Авторы" sql:relation="authors">
<AttributeType name="Имя" dt:type="string" />
<AttributeType name="Фамилия" dt:type="string" />
<AttributeType name="Адрес" dt:type="string" />
<attribute type="Имя" sql:field="au_fname" />
<attribute type="Фамилия" sql:field="au_lname" />
<attribute type="Адрес" sql:field="address" />
</ElementType>
</Schema>
|
Шаблон трансформации:
<?xml version="1.0" encoding="windows-1251"
?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match =
"*">
<xsl:apply-templates />
</xsl:template>
<xsl:template match =
"/">
<html>
<body>
<table
border="1" style="table-layout:fixed"
width="600">
<tr
bgcolor="teal">
<th><font
color="white">Имя</font></th>
<th><font
color="white">Фамилия</font></th>
<th><font
color="white">Адрес</font></th>
</tr>
<xsl:for-each
select="my_root/Авторы">
<tr>
<td><font
color="teal"><xsl:value-of select="@Имя"/></font></td>
<td><font
color="teal"><xsl:value-of select="@Фамилия"/></font></td>
<td><font
color="teal"><xsl:value-of select="@Адрес"/></font></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
|
XML-документ на стороне клиента
Предположим, ваш SQL Server работает в очень
напряженном режиме, и вы не хотите нагружать его еще больше, заставляя
формировать XML-документы. Можно сделать так: создать обычный рекордсет и
загрузить его в формате XML в объект DOMDocument или какой-либо другой. Решение
на первый взгляд здравое, однако, поработав немного с таким документом, вы
поймете, что это не то. Во-первых, структура такого XML-документа задается
жестко без возможности изменения. Во-вторых, схема сохраняется в формате XDR, а
он уже стар и может не удовлетворять вашим потребностям. К тому же возникают
проблемы с выполнением шаблонов и XPath-запросами. Для решения этих (и многих
других) проблем был создан новый сервисный провайдер – SQLXMLOLEDB. Как и
другие сервисные провайдеры (например, MSDataShape) он предназначен только для
преобразования результирующего набора строк в нужный формат. Так как
SQLXMLOLEDB ничего не знает о форматах протоколов обмена данными с
SQL-серверами, он использует для этого соответствующий провайдер. К сожалению, провайдер SQLXMLOLEDB пока умеет работать совместно только с
SQLOLEDB-провайдером для SQL Server, однако в будущем (по крайней мере, я очень
надеюсь) он сможет работать с другими провайдерами, например, MSDAORA
(провайдер для Oracle). Если такая поддержка будет встроена, у нас будет
возможность получать XML-документы от источников, которые не поддерживают XML
напрямую.
Рекомендуем скачать другие рефераты по теме: права человека реферат, реферат влияние.
Предыдущая страница реферата |
25
26
27
28
29
30
31
32
33
34
35 |
Следующая страница реферата