Xml xs:带模式限制和规范表示的整数验证问题
我有一个问题,根据第三方XML模式接收第三方XML文档。模式对xs:integer元素使用模式限制:Xml xs:带模式限制和规范表示的整数验证问题,xml,xsd,Xml,Xsd,我有一个问题,根据第三方XML模式接收第三方XML文档。模式对xs:integer元素使用模式限制: <xs:simpleType name="NumericInteger_Length8To8"> <xs:annotation> <xs:documentation xml:lang="en">Format limitations: n8</xs:documentation> </xs:annotation&g
<xs:simpleType name="NumericInteger_Length8To8">
<xs:annotation>
<xs:documentation xml:lang="en">Format limitations: n8</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:integer">
<xs:pattern value="-?[0-9]{8,8}" />
</xs:restriction>
</xs:simpleType>
格式限制:n8
接收的XML显示8位整数,其中1个或多个前导数字为零:
<exampleCode>01234567</exampleCode>
01234567
当我解析这个XML时,它是有效的,因为它与模式匹配。接下来,我必须再次发送与文本消息相同的XML。我的XML呈现程序发送整数的规范表示形式,因此没有前导零:
<exampleCode>1234567</exampleCode>
1234567
接收系统尝试验证我发送的消息,并抛出一个错误,因为值1234567不再与模式限制匹配
由于接收到的XML在我的系统中以XML文档的形式存储在内部,因此它被转换为一个实整数,词法表示丢失。接下来,当我呈现XML文档时,最初的词汇表示显然已经消失,因此没有前导零。我看不出解决这个问题的好办法。对我来说,唯一的可能性是在内部修改XML模式,例如,将类型定义设置为xs:string,这样就可以在不做任何更改的情况下传递它,但我更愿意不接触(第三方)模式
我的问题是,这是否是对xs:integer的模式方面的有效使用,第三方XML模式也是有效模式吗?W3是否对模式的使用施加了限制或指导
我只能找到几个类似的问题,例如
(规范形式……节)
这是完全合法的,但在我看来,这是非常糟糕的做法 W3C并不负责制定指导方针或使用建议,它通常将这些留给其他人