Сопоставление по умолчанию элементов и атрибутов XDR с таблицами и столбцами
Важно! |
|---|
Этот раздел включен в документацию в качестве справочника по приложениям прежних версий. Дальнейшая разработка этой функции проводиться не будет. Рекомендуется избегать использования данной функции в новых разработках. Вместо этого для создания XML-представлений пользуйтесь схемами XSD с заметками. Дополнительные сведения см. в разделе Введение в схемы XSD с заметками (SQLXML 4.0). Можно преобразовать существующие схемы XDR с заметками в схемы XSD. Дополнительные сведения см. в разделе Преобразование схем XDR с заметками в эквивалентные схемы XSD (SQLXML 4.0). |
В XDR-схеме с заметками, элемент, по умолчанию, сопоставляется таблице или представлению с таким же именем, а атрибут сопоставляется столбцу с тем же именем.
Простые дочерние элементы в схеме можно сопоставить столбцам базы данных. Чтобы сопоставить элемент столбцу в базе данных, указывается атрибут content для этого элемента со значением textOnly. Если content=textOnly не указан при сопоставлении элемента столбцу базы данных, заметка sql:field должна быть явно указана, чтобы сопоставить <элемент> столбцу базы данных. Дополнительные сведения см. в разделе Явное сопоставление элементов и атрибутов XDR с таблицами и столбцами.
Примеры
Чтобы создать рабочие образцы на основе следующих примеров, необходимо выполнить определенные требования. Дополнительные сведения см. в разделе Требования к запуску примеров SQLXML.
А. Задание сопоставления по умолчанию
В этом примере элемент <Person.Contact> сопоставляется с таблицей Person.Contact в базе данных AdventureWorks, а все атрибуты сопоставляются со столбцами таблицы Person.Contact, имеющими те же имена. В этой XDR-схеме заметки не указываются.
<?xml version="1.0" ?><Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes" xmlns:sql="urn:schemas-microsoft-com:xml-sql"><ElementType name="Person.Contact" > <AttributeType name="ContactID" /> <AttributeType name="FirstName" /> <AttributeType name="LastName" /> <attribute type="ContactID" /> <attribute type="FirstName" /> <attribute type="LastName" /></ElementType></Schema>
Проверка образца запроса XPath к схеме
Скопируйте приведенный выше код схемы и вставьте его в текстовый файл. Сохраните файл с именем DefaultXdr.xml.
Скопируйте следующий шаблон и вставьте его в текстовый файл. Сохраните файл под именем DefaultXdrT.xml в том же каталоге, где был сохранен файл DefaultXdr.xml.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="DefaultXdr.xml"> /Person.Contact[@ContactID < 3] </sql:xpath-query></ROOT>Путь к каталогу схемы сопоставления (файл DefaultXdr.xml) задается относительно каталога, в котором сохранен шаблон. Можно также задать абсолютный путь, например:
mapping-schema="C:\MyDir\DefaultXdr.xml"Создайте и запустите тестовый сценарий SQLXML 4.0 (Sqlxml4test.vbs), чтобы выполнить шаблон.
Дополнительные сведения см. в разделе Использование ADO для выполнения запросов SQLXML 4.0.
Полученный результирующий набор показан ниже.
<?xml version="1.0" encoding="UTF-8" ?><ROOT> <Person.Contact ContactID="1" FirstName="Gustavo" LastName="Achong"/> <Person.Contact ContactID="2" FirstName="Catherine" LastName="Abel"></ROOT>
Б. Сопоставление <элемента> XML столбцу базы данных
По умолчанию элемент XML сопоставляется таблице базы данных, а атрибут сопоставляется столбцу базы данных. Чтобы сопоставить элемент столбцу в базе данных, указывается атрибут content со значением textOnly.
Эта XDR-схема состоит из того же элемента <Person.Contact>, как и предшествующем примере, но поля SQL (ContactID, FirstName, LastName) сопоставляются дочерним элементам вместо атрибутов.
<?xml version="1.0" ?><Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes" xmlns:sql="urn:schemas-microsoft-com:xml-sql"><ElementType name="ContactID" content="textOnly" /><ElementType name="FirstName" content="textOnly" /><ElementType name="LastName" content="textOnly" /><ElementType name="Person.Contact" > <element type="ContactID" /> <element type="FirstName" /> <element type="LastName" /></ElementType></Schema>
По умолчанию элемент <Person.Contact> в XDR-схеме сопоставляется таблице Person.Contact в базе данных AdventureWorks. Атрибут content указывается на дочерних элементах <FirstName> и <LastName>. Поэтому эти дочерние элементы сопоставляются со столбцами с теми же именами в таблице Person.Contact.
Примечание |
|---|
Смешанное содержимое (элементы как для текстовых, так и дочерних элементов) не поддерживаются. |
Проверка образца запроса XPath к схеме
Скопируйте приведенный выше код схемы и вставьте его в текстовый файл. Сохраните файл с именем ElementXdr.xml.
Скопируйте следующий шаблон и вставьте его в текстовый файл. Сохраните файл под именем ElementXdrT.xml в том же каталоге, где был сохранен файл ElementXdr.xml.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="ElementXdr.xml"> /Person.Contact[ContactID < 3] </sql:xpath-query></ROOT>Путь к каталогу схемы сопоставления (файл ElementXdr.xml) задается относительно каталога, в котором сохранен шаблон. Можно также задать абсолютный путь, например:
mapping-schema="C:\MyDir\ElementXdr.xml"Создайте и запустите тестовый сценарий SQLXML 4.0 (Sqlxml4test.vbs), чтобы выполнить шаблон.
Дополнительные сведения см. в разделе Использование ADO для выполнения запросов SQLXML 4.0.
Полученный результирующий набор показан ниже.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <Person.Contact> <ContactID>1</ContactID> <FirstName>Gustavo</FirstName> <LastName>Achong</LastName> </Person.Contact> <Person.Contact> <ContactID>2</ContactID> <FirstName>Catherine</FirstName> <LastName>Abel</LastName> </Person.Contact></ROOT>
Важно!
Примечание