Иллюстрированный самоучитель по SQL для начинающих

SQL:2003 и XML

Теперь воспользуемся следующей XML-схемой для преобразования этого типа:

<xsd:complexType Name='ARRAY_4.CHAR_13'>
<xsd:annotation>
<xsd:appinfo>
<sqlxml:sqltype kind='ARRAY1
maxElements='4'
mappedElementType='CHAR_13'/>
</xsd:appinfo>
</xsd:annotation>
<xsd:sequence>
<xsd:element Name='element'
minOccurs='0' maxOccurs='4'
nillable='true' type='CHAR_13'/>
</xsd:sequence >
</xsd:complexType>

Результат будет примерно следующим:

<Phone>
<element>(888)555-llll</element>
<element>xsi:nil='true'/>
<element>(888)555-3434</element>
</Phone>

Элемент в массиве, содержащий xsi:nil='true', говорит о том, что второй телефонный номер в исходной таблице содержит неопределенное значение.

Мультимножества

Номера телефонов из предыдущего примера могут также хорошо храниться и в мультимножествах. Для преобразования мультимножества воспользуемся следующим программным кодом:

CREATE TABLE CONTACTINFO (
Name CHARACTER (30)
Phone CHARACTER (13) MULTISET
);

Преобразуем этот тип в XML с помощью такой схемы:

<xsd:complexType Name='MULTISET.CHAR_13'>
<xsd:annotation>
<xsd:appinfo>
<sqlxml:sqltype kind='MULTISET'
mappedElementType='CHAR_13'/>
</xsd: appinfo>
</xsd:annotation>
<xsd:sequence>
<xsd:element Name='element'
minOccurs='0' maxOccurs='unbounded'
nillable='true' type='CHAR_13'/>
</xsd:sequence >
</xsd:complexType>

Результат будет примерно следующим:

<Phone>
<element>(888)555-llll</element>
<element>xsi:nils' true'I>
<element>(888)555-3434</element>
</Phone>
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.