Поделиться через


Явное сопоставление элементов и атрибутов XSD с таблицами и столбцами (SQLXML 4.0)

При использовании схемы XSD для представления реляционных баз данных в виде XML элементы и атрибуты схемы должны быть сопоставлены с таблицами и столбцами базы данных. Строки таблицы или представления базы данных будут соответствовать элементам в XML-документе. Значения столбцов базы данных сопоставляются с атрибутами и элементами.

При запросах XPath к схеме XSD c заметками данные для элементов и атрибутов схемы берутся из таблиц и столбцов, которым они сопоставлены. Для получения единичного значения из базы данных сопоставление, заданное схемой XSD, должно содержать спецификации и связей, и полей. Если имя элемента или атрибута не совпадает с именем таблицы, представления или столбца, которому оно сопоставлено, для задания сопоставления элемента или атрибута в XML-документе и таблицы (представления) или столбца базы данных используются заметки sql:relation и sql:field.

sql-relation

Заметка sql:relation добавляется для сопоставления узла XML в схеме XSD и таблицы базы данных. Имя таблицы (представления) задано как значение заметки sql:relation.

Если для элемента задана заметка sql:relation, ее область действия охватывает все атрибуты и дочерние элементы, описанные в определении сложного типа этого элемента, сокращая, таким образом, усилия по написанию заметок.

Заметка sql:relation полезна также в случае, когда идентификаторы, допустимые в Microsoft SQL Server, недопустимы в XML. Например, «Order Details» — допустимое имя таблицы в SQL Server, но не в XML. В этих случаях заметка sql:relation может использоваться для указания сопоставления, например следующим образом.

<xsd:element name="OD" sql:relation="[Order Details]">

sql-field

Заметка sql-field сопоставляет атрибут или элемент столбцу базы данных. Заметка sql:field добавляется для сопоставления узла XML в схеме и столбца базы данных. Нельзя задавать заметку sql:field на элементе с пустым содержимым.

Примеры

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

А. Задание заметок sql:relation и sql:field

Эта схема XSD состоит из элемента сложного типа <Person> с дочерними элементами <FName> и <LName> и атрибутом BusinessEntityID.

Заметка sql:relation сопоставляет элемент <Person> с таблицей Person.Person в базе данных База данных AdventureWorks2008R2. Заметка sql:field сопоставляет элементу <FName> столбец FirstName, а элементу <LName> — столбец LastName.

Для атрибута BusinessEntityID не задано заметок. Поэтому атрибут по умолчанию сопоставляется столбцу с тем же именем.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
  <xsd:element name="Person" sql:relation="Person.Person" >
   <xsd:complexType>
     <xsd:sequence>
        <xsd:element name="FName"
                     sql:field="FirstName" 
                     type="xsd:string" /> 
        <xsd:element name="LName"  
                     sql:field="LastName"  
                     type="xsd:string" />
     </xsd:sequence>
        <xsd:attribute name="BusinessEntityID" 
                       type="xsd:integer" />
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

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

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

  2. Скопируйте приведенный ниже шаблон и вставьте его в текстовый файл. Сохраните файл под именем MySchema-annotatedT.xml в том же каталоге, где был сохранен файл MySchema-annotated.xml.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
      <sql:xpath-query mapping-schema="MySchema-annotated.xml">
        /Person
      </sql:xpath-query>
    </ROOT>
    

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

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

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

Частичный результирующий набор:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> 
 <Person BusinessEntityID="1"> 
    <FName>Gustavo</FName> 
    <LName>Achong</LName> 
 </Person> 
  .....
</ROOT>