xml - 双值的分号分隔列表的 XSD 模式
问题描述
有没有办法为分号分隔的双精度值指定 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]*)*"/>
但我仍然发现很多例子,它给了我验证错误。如果找到类似的东西\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})?))*"/>
推荐阅读
- php - 尝试使用 php 设置条带 api 并收到一条错误消息“未定义类型 'Stripe\StripeClient'”。
- sql-server - 如何为我的 docker 容器设置时区?
- python - Python Selenium - 使用 chrome 配置文件时出错
- javascript - Webpack-dev-server 未使用 HtmlWebpackPlugin 选项中的模板
- r - R:查找 NA 值之间的最大行数
- html - 如何在 HTML 中设置 select 的默认值?
- symfony - 如何使用 knp_paginator 将锚点附加到 url
- java - jTable布尔列显示真/假而不是复选框
- python - Flask SQLAlchemy - ondelete='CASCADE' 不删除“USER”的“POSTS”。(使用 SQLite 数据库)
- algorithm - 具有所需顶点的有向加权图