在Delphi应用程序中,我声明了这个枚举:
TReportEnum=(Report1,Report2,Report3,Report4,Report5);
相应地,我设置了这样的XSD枚举:
<xs:simpleType name="Reports">
<xs:restriction base="xs:token">
<xs:enumeration value="Report1"/>
<xs:enumeration value="Report2"/>
<xs:enumeration value="Report3"/>
<xs:enumeration value="Report4"/>
<xs:enumeration value="Report5"/>
</xs:restriction>
</xs:simpleType>
此XSD中的枚举值是与Delphi(或C ++)中的枚举类型值对应的标记/字符串,它们基本上只是整数的命名常量。因此,当我在我的应用程序中基于此XSD处理XML时,我被迫在处理之前将枚举的XML字符串强制转换为TReportEnum(strtoInt(XMLEnum)),这会降低XSD枚举的实用性。
在Skonnard and Gudgin中,我查看了可用于声明枚举的所有数据类型,我找不到任何可以在XSD / XML中模拟数值作为命名常量的内容,沿着在Delphi / C ++中命名为constant或enum。
我错过了什么吗?我想做不可能的事吗?如果没有,我该怎么做?