当将空格放入遵循以下XML Schema的消息中时会发生什么?
<xs:whiteSpace value="replace"/>
<xs:pattern value="[\-\*0-9A-Z]{12}"/>
是否用空格替换空格,然后验证失败?或者会发生其他事情?
答案 0 :(得分:2)
您的xs:pattern
正则表达式不允许空格,而xs:whiteSpace
构面不会改变它。
<?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将 有效 :
<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 有效