架构验证在验证之前不会修剪字符串

Dan*_*rth 6 .net c# xml xsd xml-validation

在自动格式化后,我在验证XML文件时遇到问题.在验证字符串之前,验证不会修剪字符串.这是.NET的XML验证实现中的错误还是这种可接受的行为?如果它是被接受的行为,那么通常如何处理这样的情况,因为在我看来,这两个XML文件是等价的.

我的XSD:

<xs:schema ...>
  ...
  <xs:simpleType name="ItemTypeData">
    <xs:restriction base="xs:string">
      <xs:enumeration value="ItemA" />
    </xs:restriction>
  </xs:simpleType>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)

格式化之前的我的XML(验证通过):

...
<ItemType>ItemA</ItemType>
...
Run Code Online (Sandbox Code Playgroud)

格式化后(验证失败):

...
<ItemType>
  ItemA
</ItemType>
...
Run Code Online (Sandbox Code Playgroud)

Mic*_*Kay 3

鉴于模式的定义方式,您的验证器行为正确。您要么需要阻止格式化程序对内容进行此类自由操作,要么需要更改架构 - 例如,通过将 ItemTypeData 设为 xs:token 而不是 xs:string 的限制(在 xs:token 中,考虑前导和尾随空格微不足道)。