XSD 限制 - 空白 "replace",但不允许使用空格

XSD restrictions - whiteSpace "replace", but spaces not allowed

将空格放入遵循以下 XML 模式的消息中会发生什么情况?

<xs:whiteSpace value="replace"/>
<xs:pattern value="[\-\*0-9A-Z]{12}"/>

会不会空格被替换成空格,然后验证失败?还是会发生其他事情?

您的 xs:pattern 正则表达式不允许 spaces,并且 xs:whiteSpace facet 不会改变这一点。

完整 XSD

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="root">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:whiteSpace value="replace"/>
        <xs:pattern value="[\-\*0-9A-Z]{12}"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>

</xs:schema>

XML

这个XML将有效:

<root>123456789012</root>

这个 XML 将 无效 因为 space:

<root>1234567890 2</root>

如果 XSD 被更改为允许 spaces,

        <xs:pattern value="[ \-\*0-9A-Z]{12}"/>

并且 XML 有一个选项卡:

<root>1234567890    2</root>

然后 xs:whiteSpace 值将替换为 space,并且 现在 XSD 将找到 XML 有效.