Здесь использован атрибут hide для удаления XML-узла
из результирующего документа, но сохранить возможность его использования в
XPath-запросах. Атрибуты limit-field и limit-value ограничивают количество
издательств одним – «Binnet & Hardley». Раздел xsd:annotation вынесен, однако его можно было использовать и внутри узла <xsd:element
name="employee"…>. В таком случае имя элемента relationship можно
было не указывать.
Примерно так можно использовать эту схему:
http://server/server_pubs/schema/schema1.xml/pubs/employee[@minit=""]?root=root
|
Схемы можно непосредственно указывать в шаблоне.
Например:
<?xml version="1.0" encoding="windows-1251"
?>
<my_root
xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:ms="urn:schemas-microsoft-com:mapping-schema"
id="InLineSchema1"
sql:is-mapping-schema="1">
<xsd:element name="Авторы" ms:relation="authors">
<xsd:complexType>
<xsd:attribute
name="Имя"
ms:field="au_fname"/>
<xsd:attribute
name="Фамилия" ms:field="au_lname"/>
<xsd:attribute
name="Адрес"
ms:field="address"/>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<sql:xpath-query
mapping-schema="#InLineSchema1">
/Авторы
</sql:xpath-query>
</my_root>
|
Для того чтобы запрос XPath использовал схему, а также
для сокрытия ее в результирующем документе XML, указан атрибут
is-mapping-schema. Он может принимать значения 0 или 1. Кроме этого, необходимо
явно сослаться на используемую схему, так как их в шаблоне может быть
несколько. Это делается путем добавления атрибута id в схему и атрибута
mapping-schema – в раздел самого запроса.
Создание аннотированных схем не совсем тривиальная
задача, требующая к тому же знания большого количества тонкостей. К счастью, в
Microsoft разработали специальный инструмент для автоматической генерации схем
– XML View Mapper. Его можно бесплатно скачать по адресу http://msdn.microsoft.com/downloads/default.asp?url=/downloads/sample.asp?url=/msdn-files/027/001/443/msdncompositedoc.xml
. У него хороший графический интерфейс и достаточно неплохая документация;
думаю, вы с ним разберетесь быстро. Единственный его недостаток – отсутствие
возможности сохранять схемы в формате XSD. Надеюсь, в будущем эта возможность
появится.
К сожалению, SQL Server 2000 лишь частично
поддерживает спецификацию XPath и возможности использования XPath-запросов к
базе данных. Ниже приведена сводка поддерживаемых и не поддерживаемых
возможностей.
Поддерживаемая функциональность XPath:
Тип
|
Значения
|
Оси (axis)
|
attribute, child, parent, and self
|
Операторы сравнения
|
=, !=, <, <=, >, >=
|
Арифметические операторы
|
+, -, *, div
|
Функции явного
преобразования
|
number(), string(), Boolean()
|
Булевы операторы
|
And, or
|
Булевы функции
|
true(), false(), not()
|
Не поддерживаемая функциональность: