Задание целевого пространства имен с помощью заметки sql:target-namespace (схема XDR)
![]() |
---|
Этот раздел включен в документацию в качестве справочника по приложениям прежних версий. Дальнейшая разработка этой функции проводиться не будет. Рекомендуется избегать использования данной функции в новых разработках. Вместо этого для создания XML-представлений пользуйтесь схемами XSD с заметками. Дополнительные сведения см. в разделе Введение в схемы XSD с заметками (SQLXML 4.0). Можно преобразовать существующие схемы XDR с заметками в схемы XSD. Дополнительные сведения см. в разделе Преобразование схем XDR с заметками в эквивалентные схемы XSD (SQLXML 4.0). |
Заметка sql:target-namespace может использоваться для размещения элементов и атрибутов из пространства имен по умолчанию в другом пространстве имен. Атрибут sql:target-namespace можно добавить только к тегу <Schema> в схеме XDR.
Значение sql:target-namespace является URI-код пространства имен (универсальным идентификатором ресурса), используемым для формирования элементов и атрибутов, указанных в схеме сопоставления. Данный URI применяется ко всем элементам и атрибутам пространства имен по умолчанию. XML-документ, возвращаемый запросами к схеме, содержит декларации xmlns:prefix="uri" и префикс элемента и имена атрибутов соответственно. Используемый URI берется из значения примечания sql:target-namespace. Однако префикс формируется произвольно и не соответствует какому-либо значению в схеме (даже если префиксы используются в схеме).
Примеры
Чтобы создать рабочие образцы на основе следующих примеров, необходимо выполнить определенные требования. Дополнительные сведения см. в разделе Требования к запуску примеров SQLXML.
А. Укажите целевое пространство имен
В этом примере заметка sql:target-namespace используется для указания целевого пространства имен. В результате все элементы и атрибуты, которые перешли бы в пространство имен по умолчанию перенаправляются в целевое пространство имен (MyNamespace).
<?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" sql:target-namespace="urn:MyNamespace"><ElementType name="Sales.SalesOrderHeader" > <AttributeType name="SalesOrderID" /> <attribute type="SalesOrderID"/></ElementType><ElementType name="Sales.Customer" > <AttributeType name="CustomerID" /> <attribute type="CustomerID" /> <element type="Sales.SalesOrderHeader" > <sql:relationship key="CustomerID" foreign-key="CustomerID" key-relation="Sales.Customer" foreign-relation="Sales.SalesOrderHeader" /> </element></ElementType></Schema>
Проверка образца запроса XPath к схеме
Скопируйте приведенный выше код схемы и вставьте его в текстовый файл. Сохраните файл под именем TargetNS-Xdr.xml.
Скопируйте следующий шаблон и вставьте его в текстовый файл. Сохраните файл под именем TargetNS-XdrT.xml в том же каталоге, где был сохранен файл TargetNS-Xdr.xml.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="TargetNS-Xdr.xml" xmlns:x="urn:MyNamespace" > x:Sales.Customer[@CustomerID=1] </sql:xpath-query></ROOT>
Запрос XPath в шаблоне запрашивает все элементы <Customer>, определенные в пространстве имен «MyNamespace». Префикс «x» в шаблоне привязан к пространству имен.
Путь к каталогу схемы сопоставления (файл TargetNS-Xdr.xml) задается относительно каталога, в котором сохранен шаблон. Можно также задать абсолютный путь, например:
mapping-schema="C:\MyDir\TargetNS-Xdr.xml"
Создайте и запустите тестовый сценарий SQLXML 4.0 (Sqlxml4test.vbs), чтобы выполнить шаблон.
Дополнительные сведения см. в разделе Использование ADO для выполнения запросов SQLXML 4.0.
Полученный результирующий набор показан ниже.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <y0:Sales.Customer xmlns:y0="urn:MyNamespace" CustomerID="1"> <y0:Sales.SalesOrderHeader SalesOrderID="43860" /> <y0:Sales.SalesOrderHeader SalesOrderID="44501" /> <y0:Sales.SalesOrderHeader SalesOrderID="45283" /> <y0:Sales.SalesOrderHeader SalesOrderID="46042" /> </y0:Sales.Customer></ROOT>
Обратите внимание, что префиксы сформированы произвольно, но соответствуют тому же пространству имен.