如何将字母数字字段评估为部分数字和部分字母

How to evaluate an alpha numeric field as partially numeric and partially alpha

我的 XML 将包含一个可能以千字节或兆字节为单位的长度。 XML 看起来像以下之一:

<size>100M</size>
<size>100K</size>

我需要保证如果输入的数据以K结尾,则数字小于2096129(且大于0),但如果数据以M结尾,则数字需要小于2048(且大于0)大于 0)。是否可以将除最后一个字符以外的所有字符都视为整数(因此我可以使用 min/max 包含标签),但仍然对最后一个字符使用模式?

不,你不能在这里使用任何 xs:decimal 或其任何子类型,因此你必须使用 xs:string 而不能使用 min/max excusive,因为没有语言功能在 XML 架构中将一个简单类型组合为其他简单类型的串联。

在 XSD 1.0 中做到这一点的唯一方法是创建一个覆盖整对数值及其单位的模式(正则表达式)。根据您的 min/max 值,这可能看起来有点讨厌,但应该很简单。

(在 XSD 1.1 中你可以使用断言)