XML Schema обеспечивает
механизм, называемый группы замены, который позволяет одним элементам заменять
другие. Более точно, элементы могут быть назначены в специальную группу
элементов, определяемую элементом с особым именем, который называется главным
элементом. (Обратите внимание, что главный элемент должен быть объявлен как
глобальный элемент.) Для того чтобы проиллюстрировать сказанное, мы объявляем
два элемента с именами customerComment и shipComment,
и назначаем их в группу
замены, главный элемент которой – comment.
Теперь customerComment и shipComment могут использоваться везде, где мы разрешили использовать comment
. Элементы в группе замены должны иметь
тот же самый тип, что и главный элемент, или они могут иметь тип, который был получен
из типа главного
элемента. Для того чтобы
объявить эти два новых элемента и сделать их заменяемыми для элемента comment
, мы используем следующий синтаксис:
<element name=”shipComment” type=”string” substitutionGroup=”ipo:comment”/> <element name=”customerComment” type=”string” substitutionGroup=”ipo:comment”/>
Когда эти объявления добавлены к
схеме международного счета на покупку, comment
может
быть заменен на shipComment и customerComment в
документе примера, например:
.... <items> <item partNum=”833-AA”> <productName>Lapis necklace</productName> <quantity>1</quantity> <USPrice>99.95</USPrice> <ipo:shipComment> Use gold wrap if possible </ipo:shipComment> <ipo:customerComment> Want this for the holidays! </ipo:customerComment> <shipDate>1999-12-05</shipDate> </item> </items> ....
Отметим,
что, когда документ примера содержит заменяемые элементы, типы которых получены
от их главных элементов, то нет необходимости идентифицировать полученные
типы, используя конструкцию xsi:type
, как мы описали в Разделе 4.3.
Существование группы замены не
требует каких-либо элементов, которые употребляются в этом классе, и также не
препятствует использованию главного элемента. Она просто обеспечивает механизм,
который позволяет элементам применяться взаимозаменяемо.