XSD限制 - whiteSpace"替换",但不允许使用空格

时间:2015-04-30 11:06:21

标签: xml xsd xsd-validation

当将空格放入遵循以下XML Schema的消息中时会发生什么?

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

是否用空格替换空格,然后验证失败?或者会发生其他事情?

1 个答案:

答案 0 :(得分:2)

您的xs:pattern正则表达式不允许空格,而xs:whiteSpace构面不会改变它。

完整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将 无效

<root>1234567890 2</root>

如果XSD被更改为允许空格,

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

和XML中有一个标签:

<root>1234567890    2</root>

然后xs:whiteSpace值会用空格替换它,现在 XSD会发现XML 有效