Определение значений по умолчанию для атрибутов в схеме XDR (схема XDR)

Важное примечаниеВажно!

Этот раздел включен в документацию в качестве справочника по приложениям прежних версий. Дальнейшая разработка этой функции проводиться не будет. Рекомендуется избегать использования данной функции в новых разработках. Вместо этого для создания XML-представлений пользуйтесь схемами XSD с заметками. Дополнительные сведения см. в разделе Введение в схемы XSD с заметками (SQLXML 4.0). Можно преобразовать существующие схемы XDR с заметками в схемы XSD. Дополнительные сведения см. в разделе Преобразование схем XDR с заметками в эквивалентные схемы XSD (SQLXML 4.0).

В столбцах базы данных могут быть заданы значения по умолчанию. Аналогично в схеме XDR значения по умолчанию могут быть заданы для атрибутов (в схеме XDR нельзя задать значения по умолчанию для элементов). Схема XDR позволяет задать спецификацию атрибута default для элемента <AttributeType>.

Если значение столбца, связанное с атрибутом, равно NULL, этот атрибут не возвращается для этого экземпляра элемента. Но если для элемента <AttributeType> указан атрибут default, атрибут возвращается с указанным значением по умолчанию.

Например, если при получении данных из базы данных в XML-документ отсутствует одно из значений атрибута, используется значение по умолчанию этого атрибута в схеме XDR.

ПримечаниеПримечание

Значение по умолчанию может не отображаться в возвращенном документе, но использоваться проверяющим средством синтаксического анализа при отсутствии атрибута.

ПримечаниеПримечание

Значение по умолчанию используется, если используемое средство синтаксического анализа применяет схему. То есть для средства синтаксического анализа MSXML флаг resolveExternals необходимо установить в значение TRUE (по умолчанию), средство синтаксического анализа выбирает схемы. После синтаксического анализа отдельные экземпляры имеют атрибуты (для которых указаны значения по умолчанию) независимо от того, включен ли атрибут в XML-документ. Модель DOM предоставляет значение по умолчанию.

Примеры

Чтобы создать рабочие образцы на основе следующих примеров, необходимо выполнить определенные требования. Дополнительные сведения см. в разделе Требования к запуску примеров SQLXML.

А. Указание значения атрибута по умолчанию в схеме XDR

В этом примере атрибуту Title присвоено значение по умолчанию «XYZ». Когда контактные записи получены, значение по умолчанию назначается контактам, у которых нет названия.

<?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.Person" >
    <AttributeType name="CID" />
    <AttributeType name="FirstName" />
    <AttributeType name="LastName" />
    <AttributeType name="Title" default="XYZ"/>

    <attribute type="CID" sql:field="BusinessEntityID" />
    <attribute type="FirstName" />
    <attribute type="LastName" />
    <attribute type="Title"  />
</ElementType>
</Schema>

Проверка образца запроса XPath к схеме

  1. Скопируйте приведенный выше код схемы и вставьте его в текстовый файл. Сохраните файл с именем DefaultValueXdr.xml.

  2. Скопируйте следующий шаблон и вставьте его в текстовый файл. Сохраните файл под именем DefaultValueXdrT.xml в том же каталоге, где был сохранен файл DefaultValueXdr.xml.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
      <sql:xpath-query mapping-schema="DefaultValueXdr.xml">
        /Person.Person[@CID &gt; 1000 and @CID &lt; 1006]
      </sql:xpath-query>
    </ROOT>
    

    Путь к каталогу схемы сопоставления (файл DefaultValueXdr.xml) задается относительно каталога, в котором сохранен шаблон. Можно также задать абсолютный путь, например:

    mapping-schema="C:\MyDir\DefaultValueXdr.xml"
    
  3. Создайте и запустите тестовый скрипт SQLXML 4.0 (Sqlxml4test.vbs), чтобы выполнить шаблон.

    Дополнительные сведения см. в разделе Использование ADO для выполнения запросов SQLXML 4.0.

Полученный результирующий набор показан ниже.

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  <Person.Person CID="1001" FirstName="Terri" LastName="Duffy" /> 
  <Person.Person CID="1002" FirstName="Roberto" LastName="Tamburello" /> 
  <Person.Person CID="1003" FirstName="Michael" LastName="Sullivan" /> 
  <Person.Person CID="1004" FirstName="Sharon" LastName="Salavaria" /> 
  <Person.Person CID="1005" FirstName="Gail" LastName="Erickson" Title="Ms." /> 
</ROOT>