在我的XML模式中,我有类型字符串的元素,我不想为空(如果它包含空格等我也认为它是空的)
我在http://blogs.msdn.com/b/neerajag/archive/2005/08/12/450723.aspx上找到了我发现的restrinction.
<xsd:restriction base = "xsd:string">
<xs:minLength value="1" />
<xs:pattern value=".*[^\s].*" />
</xsd:restriction>
Run Code Online (Sandbox Code Playgroud)
这种模式究竟做了什么,将会做什么?
小智 8
这不是你想做的吗?
<xs:restriction base="xs:token">
<xs:minLength value="1"/>
</xs:restriction>
Run Code Online (Sandbox Code Playgroud)
如果字符串仅包含空格(换行符,回车符,制表符,前导和尾随空格),则处理器将删除它们,因此验证将失败; 如果还有其他什么,验证将成功.(注意:两个或多个空格的内部序列将被删除 - 确保你没关系)
模式:
.*
(.
匹配任何字符).\s
是空格,所以[^\s]
"匹配不是空格的东西.^
匹配中的首字母否定了这些字符中的任何一个的正常匹配.我不知道是否仍然有用,但我找到了比第一次发布更好的模式.这里是:
<xs:simpleType name="nonEmptyString">
<xs:restriction base="xs:string">
<xs:pattern value="(\s*[^\s]\s*)+"></xs:pattern>
</xs:restriction>
</xs:simpleType>
Run Code Online (Sandbox Code Playgroud)
使用Eclipse,似乎工作正常.