如果 XML 文件中具有复杂类型的元素,则 XML 编辑器中的 xsi:type 支持让您可以在该复杂类型与从该复杂类型派生的任何其他复杂类型之间进行选择。
XML 模式规范允许您通过扩展来派生类型。例如,您有一个 XML 模式且为它创建名为 Address 的复杂类型。然后将一些基本元素添加至 Address,如 streetName 和 city。
然后从 Address 通过扩展派生出两个新的复杂类型 - USAddress 和 UKAddress。向 USAddress 添加名为 state 的新元素,并向 UKAddress 添加名为 postcode 的新元素。
完成以上操作之后,您又创建两个元素(billTo 和 shipTo)作为 Address 类型。
当为诸如 billTo 或 Address 之类的元素创建 XML 实例文档时,xsi:type 属性就会被自动添加至该文档。例如:
<billTo xsi:type="ipo:Address">
xsi:type 属性用来标识派生的复杂类型(以及从其进行派生的复杂类型)。
在 XML 编辑器的“设计”视图中,将提供一个列表,让您选择适当的类型定义(Address、USAddress 或 UKAddress)。内容模型的指导编辑将反映您选择的类型定义。例如,如果您选择 USAddress,则 billTo 元素可包含 state 元素,但它不能包含 postcode 元素。
XML 示例“编辑和验证 XML 文件”演示了 xsi:type 支持。
有关 xsi:type 的更多信息,请参阅 XML Schema Part 0: Primer 中的 Using Derived Types in Instance Documents 一节。
有关使用 xsi:type 时的验证语义的更多信息,请参阅 XML Schema Part 1: Structures 中的 Schema-Related Markup in Documents Being Validated 一节。