枚举类型的正确XSD
本文关键字:XSD 类型 枚举 | 更新日期: 2023-09-27 18:00:36
我有一个类似的枚举类
public enum Test
{
a = 1,
b = 2
}
我正在为以下创建xsd
<xs:complexType name="Test">
<xs:all>
<xs:element name="TCode" type="TestCode" minOccurs="1" maxOccurs="1" />
<xs:element name="TValue" type="TestValue" minOccurs="1" maxOccurs="1" />
</xs:all>
</xs:complexType>
<xs:simpleType name="TestCode">
<xs:restriction base="xs:string">
<xs:enumeration value="a" />
<xs:enumeration value="b" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="TestValue">
<xs:restriction base="xs:string">
<xs:enumeration value="1" />
<xs:enumeration value="2" />
</xs:restriction>
</xs:simpleType>
- 这是为
Enum
类创建xsd
类型的正确方法吗 如何在不使用
xs:assert
的情况下验证XML元素?如果
TCode
是a
,则TValue
是1
如果
TCode
是b
,则TValue
是2
XML将是
<Test>
<TCode>a</TCode>
<TValue>1</TValue>
</Test>
有什么想法吗?
我认为使用标准xsd函数是不可能的。但是,如果TCode和TValue有一个固定的1比1关系,你不应该只问这两者中的一个吗?这将使创建无效状态成为不可能。
示例:
<xs:complexType name="Test">
<xs:choise>
<xs:element name="TCode" type="TestCode" minOccurs="1" maxOccurs="1" />
<xs:element name="TValue" type="TestValue" minOccurs="1" maxOccurs="1" />
</xs:choise>
</xs:complexType>