Bob*_*non 16 xml schema case-sensitive simpletype
我需要在XML模式(.xsd)文件中使用不区分大小写的字符串枚举类型.通过执行以下操作,我可以使用不区分大小写.
<xs:simpleType name="setDigitalPointType">
<xs:restriction base="xs:string">
<xs:pattern value="[Oo][Nn]" />
<xs:pattern value="[Oo][Ff][Ff]" />
</xs:restriction>
</xs:simpleType>
Run Code Online (Sandbox Code Playgroud)
唯一的问题是我没有枚举值.使用Visual Studio编写XML时,我不会得到漂亮的intellesense.以下将给出我的枚举,但它区分大小写.
<xs:simpleType name="setDigitalPointType">
<xs:restriction base="xs:string">
<xs:enumeration value="on" />
<xs:enumeration value="off" />
</xs:restriction>
</xs:simpleType>
Run Code Online (Sandbox Code Playgroud)
这将给我我的枚举,但如果我收到"开","开"或"否"的值,它将无法验证.
我想要枚举"on","off"并允许输入不区分大小写的版本.
Orv*_*ing 17
如果您希望保持不区分大小写的验证,同时仍在Visual Studio 2010中获取Intellisense,则可以使用union:
<xs:simpleType name="setDigitalPointType">
<xs:union>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="on" />
<xs:enumeration value="off" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[Oo][Nn]" />
<xs:pattern value="[Oo][Ff][Ff]" />
</xs:restriction>
</xs:simpleType>
</xs:union>
</xs:simpleType>
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为它利用了Visual Studio 2010在构建Intellisense数据时仅处理union中第一个简单类型的事实.但是,当它验证文档时,它会处理两者,这意味着"On"仍然被确定为有效,即使它不在枚举值列表中.