如何定义合适的复杂类型?

时间:2011-06-01 13:09:40

标签: xsd

我在xsd中有这个:

<xs:element name="Parameter" type="complex">

我希望定义复杂的:

<xs:simpleType name="complex">
    1 xs:decimal
    2 xs:string
  </xs:simpleType>

因此,如果参数的值为十进制,则取小数,如果值不是十进制,则假定该值为字符串。如何声明我的复杂类型?

1 个答案:

答案 0 :(得分:2)

您需要complexTypechoice来表达:

<xs:complexType name="complex">
   <xs:choice>
      <xs:element name="number" type="xs:decimal"/>
      <xs:element name="string" type="xs:string"/>
   </xs:choice>
</xs:complexType>

编辑:根据您的评论,这值得一试:

<xs:simpleType name="monat">
   <xs:union memberTypes="xs:decimal xs:string"/>
</xs:simpleType>

但是JAXB无论如何都会translateString,因此联盟没有任何好处,至少对于生成的类而言。而你正在使用JAXB只是猜测。