Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml xs:带模式限制和规范表示的整数验证问题_Xml_Xsd - Fatal编程技术网

Xml xs:带模式限制和规范表示的整数验证问题

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

我有一个问题,根据第三方XML模式接收第三方XML文档。模式对xs:integer元素使用模式限制:

  <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并不负责制定指导方针或使用建议,它通常将这些留给其他人