在我的XML模式中,我有类型字符串的元素,我不想为空(如果它包含空格等,我也认为它是空的)
我申请了我在http://blogs.msdn.com/b/neerajag/archive/2005/08/12/450723.aspx
找到的重新启动<xsd:restriction base = "xsd:string">
<xs:minLength value="1" />
<xs:pattern value=".*[^\s].*" />
</xsd:restriction>
这种模式究竟做了什么,将会做我期望的事情?
答案 0 :(得分:8)
这不是你想要的吗?
<xs:restriction base="xs:token">
<xs:minLength value="1"/>
</xs:restriction>
如果字符串只包含空格(换行符,回车符,制表符,前导和尾随空格),则处理器将删除它们,因此验证将失败;如果还有其他什么,验证将成功。 (注意:两个或多个空格的内部序列将被删除 - 确保你没关系)
答案 1 :(得分:6)
模式:
.*
(.
匹配任何字符)。\s
是空格,因此[^\s]
是“匹配不是空格的内容。匹配中的初始^
会否定正常匹配这些字符中的任何一个。答案 2 :(得分:5)
我不知道是否仍然有用,但我找到了比第一次发布更好的模式。这是:
<xs:simpleType name="nonEmptyString">
<xs:restriction base="xs:string">
<xs:pattern value="(\s*[^\s]\s*)+"></xs:pattern>
</xs:restriction>
</xs:simpleType>
使用Eclipse,似乎工作正常。
答案 3 :(得分:0)
查看帖子“不允许空字符串的模式”的主题仍然没有答案。您可以使用<xsd:whiteSpace value="collapse" />
标记来禁止空格
whiteSpace
约束设置为"collapse"
,它将执行以下操作