xsd - 将类型限制为三种自定义类型之一

时间:2014-09-29 12:22:49

标签: xml xsd restriction

也许我的词汇在某种程度上是错误的:

我想创建一个xsd,它定义了许多'自定义类型之一'对于元素。
我的xml应该具有相同的根源#some; someInfo'然后是一种元素 CustomTypeA或CustomTypeB。

XML应如下所示:

<xml>
  <someInfo>whatever is important</someInfo>
  <info type="CustomTypeA">
    <CustomTypeA-1>F1</CustomTypeA-1>
    <CustomTypeA-2>F2</CustomTypeA-2>
  </info>
</xml>

或在其他情况下,其中info应该是其他CustomType:

<xml>
  <someInfo>whatever is important in an other case</someInfo>
  <info type="CustomTypeB">
    <CustomTypeB-1 attr1="someAttribute">F1</CustomTypeB-1>
  </info>
</xml>

2 个答案:

答案 0 :(得分:1)

如果您希望元素的类型依赖于其中一个属性的值,您有两个选择:

(a)使用&#34; xsi:type&#34;作为属性名称,其值是架构中类型的名称

(b)使用XSD 1.1和条件类型赋值的新功能。如果您能够使用XSD 1.1作为最佳解决方案,但并非所有人都支持它。

答案 1 :(得分:0)

昨天我做了一些条件类型赋值here。有关条件类型分配的更多信息,请参阅at the last example here