我正在尝试添加枚举类型,如下所示。它添加了字符串类型,但当 jaxb 将 xsd 转换为 java 类时我需要枚举值。我使用 simpletype 将其转换为字符串,但不确定如何在元素内更改它,就像我尝试更改它一样,它会给我错误。
<xs:element name="DeletionReq">
<xs:complexType>
<xs:sequence>
<xs:element name="Id" type="xs:long"/>
<xs:element name="isNewProcess" type="xs:boolean" default="false"/>
<xs:element name="data" type="tns:data" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="data">
<xs:sequence>
<xs:element name="dataColumnName" type="xs:string" minOccurs="0" />
<xs:element name="dataOldValue" type="xs:string" minOccurs="0"/>
<xs:element name="dataNewValue" type="xs:string" minOccurs="0"/>
<xs:element name="testRecord" type="xs:string" minOccurs="0"/>
<xs:element name="projId" type="xs:string" minOccurs="0"/>
<xs:element minOccurs="0" name="allowedApplDataColumnNames">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="code1" />
<xs:enumeration value="code2" />
<xs:enumeration value="code3" />
<xs:enumeration value="code4" />
<xs:enumeration value="code5" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
您可以在complexType之外定义类型
data
,如下所示:
<xs:simpleType name="allowedApplDataColumnNamesType">
<xs:restriction base="xs:string">
<xs:enumeration value="code1" />
<xs:enumeration value="code2" />
<xs:enumeration value="code3" />
<xs:enumeration value="code4" />
<xs:enumeration value="code5" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="data">
<xs:sequence>
<xs:element name="dataColumnName" type="xs:string" minOccurs="0" />
<xs:element name="dataOldValue" type="xs:string" minOccurs="0"/>
<xs:element name="dataNewValue" type="xs:string" minOccurs="0"/>
<xs:element name="testRecord" type="xs:string" minOccurs="0"/>
<xs:element name="projId" type="xs:string" minOccurs="0"/>
<xs:element name="allowedApplDataColumnNames" type="allowedApplDataColumnNamesType" minOccurs="0" />
</xs:sequence>
</xs:complexType>
从枚举创建显式类型:
<xs:complexType name="data">
<xs:sequence>
...
<xs:element minOccurs="0" name="allowedApplDataColumnNames" type="tns:myEnum"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="myEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="code1" />
<xs:enumeration value="code2" />
<xs:enumeration value="code3" />
<xs:enumeration value="code4" />
<xs:enumeration value="code5" />
</xs:restriction>
</xs:simpleType>