4.3 Использование полученных типов в документах

В сценарии нашего примера, счета на покупку сгенерированы в ответ на счета  клиентов, при этом могут формироваться адреса для поставки товара и в счетах на оплату с указанием разных стран. Международный счет на покупку, ipo.xml представленный ниже, иллюстрирует один такой случай, где товары отправлены в Великобританию, а счет послан по американскому адресу. Ясно, что лучше, когда мы просто можем добавлять новые сложные типы международного адреса, посредством создания новых образований из Address. Схема для международных счетов на покупку в этом случае не должна расшифровывать каждую возможную комбинацию международных адресов для счета и отгрузки. XML Схема позволяет нам определять элементы billTo и shipTo как типы Address (см. ipo.xsd), но использовать международные адреса вместо Address. Другими словами, документ примера, содержание которого соответствует типу UKAddress, будет правилен, если содержание появится внутри документа, размещаясь, где ожидается Address (при этом предполагается, что в UKAddress само содержание правильно). Чтобы применить эту особенность работы XML Schema, и точно определить, какой производный тип требуется, производный тип должен быть идентифицирован в документе. Тип идентифицируется, используя атрибут xsi:type, который является частью пространства имен XML Schema. В примере, ipo.xml, используются производные типы UKAddress и USAddress, определенные через значения, назначенные атрибутом xsi:type.

Международный счет на покупку, ipo.xml

<?xml version=”1.0”?> <ipo:purchaseOrder xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xmlns:ipo=”http://www.example.com/IPO” orderDate=”1999-12-01”> <shipTo exportCode=”1” xsi:type=”ipo:UKAddress”> <name>Helen Zoe</name> <street>47 Eden Street</street> <city>Cambridge</city> <postcode>CB1 1JR</postcode> </shipTo> <billTo xsi:type=”ipo:USAddress”> <name>Robert Smith</name> <street>8 Oak Avenue</street> <city>Old Town</city> <state>PA</state> <zip>95819</zip> </billTo> <items> <item partNum=”833-AA”> <productName>Lapis necklace</productName> <quantity>1</quantity> <USPrice>99.95</USPrice> <ipo:comment>Want this for the holidays!</ipo:comment> <shipDate>1999-12-05</shipDate> </item> </items> </ipo:purchaseOrder>

В Разделе 4.8 мы опишем, как предохранить производные типы от использования в таком способе замены.

 


Вип Каталог | Оптимальный каталог | Скрипт каталога | Каталог недвижимости | Мебельный каталог | Русский каталог | Рубрикатор | Каталог сайтов | Каталог Рунета | Поиск в Рунете | Оптимизируем.ру | Спортивный каталог | Каталог РуНета | Строительный каталог | Каталог производителей | РуЛист
Используются технологии uCoz