有没有办法为分号分隔的双值指定XSD模式?
<test>2.5;25.2e7;-0.5e8</test>
这是我的方法:
<xsd:pattern value="[-+]?[0-9][0-9]*.[0-9][0-9]*([eE][-+]?[0-9][0-9]*)?(;?[-+]?[0-9][0-9]*.[0-9][0-9]*)*"/>
但我仍然发现了许多它给我带来验证错误的例子。If发现了类似d+
的东西,但到目前为止没有帮助。
谢谢你的回答!
如果您只想在冒号前后允许两个数字,那么您的模式中所缺少的就是第二个和后面浮点的重复模式中的指数表达式。你应该修改你的模式如下:
<xs:pattern value="[-+]?[0-9][0-9]*.[0-9][0-9]*([eE][-+]?[0-9][0-9]*)?(;?[-+]?[0-9][0-9]*.[0-9][0-9]*([eE][-+]?[0-9][0-9]*)?)*"/>
或者在更紧凑的版本中,为了可读性,还添加了一些括号,并允许在冒号前后有更多的数字:
<xs:pattern value="([-+]?d+.d+([eE]?d+)?)(;([-+]?d+.d+([eE]?d+)?))*"/>
可以限制在冒号前后两位:
<xs:pattern value="([-+]?d{1,2}.d{1,2}([eE]?d{1,2})?)(;([-+]?d{1,2}.d+([eE]?d{1,2})?))*"/>