XML xs:int十六进制值

Geo*_*ffM 7 xml hex xsd

我想将数字存储在类型为或其他简单整数类型的XML文件中,但允许用户以十六进制格式输入数字.XML标准是否允许这样做,因为我找不到任何相关的东西?

例如,如果XSD说:

<xs:element name="value" type="xs:integer" use="required" />
Run Code Online (Sandbox Code Playgroud)

那么我希望XML能够说:

<value>0xFF00FF</value>
Run Code Online (Sandbox Code Playgroud)

或者十六进制的符号.

显然我可以尝试但只能证明在一个特定的实现中支持,而不是它是否是标准.我并不特别在意保存到XML是否会失去基础.

Mel*_*ius 6

我会在元素中使用正则表达式<xs:pattern>

<xs:element name="value" use="required">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:pattern value="0x[0-9A-Fa-f]+|[0-9]+"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>
Run Code Online (Sandbox Code Playgroud)

这允许您存储十进制和十六进制数(带有强制性0x前缀)。但是,您需要在将字符串转换为数字时专门处理它。


Ben*_*ela 5

我不这么认为。xs:integer是 的派生/子集类型xs:decimal,其表示定义为

十进制有一个词法表示,由有限长度的十进制数字序列 (#x30-#x39) 组成,由句点分隔作为十进制指示符。允许使用可选的前导符号。如果省略符号,则假定为“+”。前导零和尾随零是可选的。如果小数部分为零,则可以省略句号和后面的零。例如:-1.23、12678967.543233、+100000.00、210。

您可以删除 0x 并将其设置为 hexBinary,尽管您丢失了数字语义。