SQL:2003 и XML
Обработка неопределенных значений
Поскольку SQL-данные могут быть неопределенными значениями, необходимо решить, как представлять их в XML-документе. Неопределенные значения могут быть представлены либо как нуль, либо как отсутствие всякого значения. Если элемент столбца необходимо представить как неопределенное (нулевое) значение, то он будет иметь атрибут xsi:nil="true". Это может быть сделано следующим способом:
<row> <FirstName>Bill</FirstName> <LastName>Bailey</LastName> <City xsi:nil="true" /> <AreaCode>714</AreaCode> <Telephone>5 55-22 22</Telephone> </row>
Если элемент столбца отсутствует, то выполните следующее:
<row> <FirstName>Bill</FirstName> <Las tName>Bailey</Las tName> <AreaCode>714</AreaCode> <Telephone>55 5-22 22</Telephone> </row>
При выборе этой опции строка содержит неопределенное значение, которое "отсутствует". С ним нет связей.
Создание XML-схемы
При преобразовании данных из SQL в XML первый созданный документ содержит данные, а второй – информацию о схеме. В качестве примера рассмотрим схему для документа CUSTOMER (см. "Преобразование таблиц").
<xsd:schema> <xsd:simpleType name="CHAR_15"> <xsd:restriction base="xsd:string"> <xsd:lenght value = "15"/> </xsd;restriction> </xsd:simpleType> <xsd:simpleType name="CHAR_25"> <xsd:restriction base="xsd:string"> <xsd:lenght value = "25"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="CHAR_3"> <xsd:restriction base="xsd:string"> <xsd:lenght value = "3"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name-"CHAR_8"> <xsd:restriction base="xsd:string"> <xsd:lenght value = "8"/> </xsd:restriction> </xsd:simpleType> <xsd:sequence> <xsd:element name="FirstName" type="CHAR_15"/> <xsd:element name="LastName" type="CHAR_25"/> <xsd:element name="City" type="CHAR_25" nillable="true"/> <xsd:element name="AreaCode" type="CHAR_3" nillable="true"/> <xsd:element name="Telephon" type="CHAR_8" nillable="true"/> <xsd:sequence> </xsd:schema>
Эта схема подходит в том случае, если при обработке неопределенных значений используется опция "нуль". Опция "отсутствие" требует несколько иного определения элемента. Например:
<xsd:element name="City" type="CHAR_25 minOccurs="0"/>