XSD架构元素可以是两种类型之一

问题描述 投票:0回答:1

我一直在四处查看,实际上没有简单的方法可以让元素成为两种可能的类型吗?我已经尝试了以下解决方法。

<xs:element name="food">
  <xs:complexType>
     <xs:choice>
       <xs:element name="meat" type="meatFoods"/>
       <xs:element name="veggies" type="veggieFoods"/>
     </xs:choice>
  </xs:complexType>
</xs:element>

和:

<xs:choice>
  <xs:sequence>
    <xs:element name="food" type="meatFoods"/>
  </xs:sequnce>
  <xs:sequence>
    <xs:element name="food" type="veggieFoods"/>
  </xs:sequence>
</xs:choice>

和:

<xs:complexType name="MeatOrVeggies">
  <xs:choice>
    <xs:element name="meat" type="meatFoods"/>
    <xs:element name="veggies" type="veggieFoods"/>
  </xs:choice>
</xs:complexType>
<xs:element name="food" type="MeatOrVeggies"/>

这些都引发某种错误。最后一个给出食物是一个元素,并且没有子级错误,第二个给出“名称为“食物”的多个元素,并且在模型组中出现不同的类型。”

此XSD是Java有效负载对象的有效负载,它具有:FoodInterface food。肉和蔬菜是该界面的枚举,如下所示:

public enum Meat implements FoodInterface{
   Chicken,
   Beef,
   Pork
}

提前感谢。

java xml xsd jaxb schema
1个回答
0
投票

“ ... union元素将简单类型定义为来自指定简单数据类型的值的集合(联合)...”

© www.soinside.com 2019 - 2024. All rights reserved.