XSD:来自不同模式的具有相同名称的属性

时间:2011-08-17 16:46:47

标签: xsd

是否可以为以下xml编写xsds:

<list add:type="single" view:type="multi"/>

其中add和view指向不同的模式?然后,我将使用模式名称来过滤所需的属性值。

1 个答案:

答案 0 :(得分:1)

您将使用三个架构文档来执行此操作。

  • 架构文档1将具有addName命名空间的targetNamespace,并将声明一个名为“type”的全局属性。
  • 模式文档2将具有视图命名空间的targetNamespace,并将声明一个名为“type”的全局属性。
  • 架构文档3将导入两个名称空间。它还将声明一个complexType,它具有使用对“add:type”和“view:type”的属性引用定义的两个属性。元素“列表”将属于该类型。您将确保在属性定义的范围中包含xmlns:add =“...”和xmlns:view =“...”命名空间声明。

基本上,只要您想要来自其他命名空间的元素或属性,您就会拥有另一个具有该命名空间的targetNamespace的架构文档。在那里,该命名空间的元素或属性是全局声明的。然后,当您希望在其他模式文档中使用这些属性或元素时,1)导入命名空间(xs:import)2)为命名空间声明一个ns前缀,并使用ref =“nsprefix:attr_or_elem_name”来引用属性或元素。