我有一个奇怪的请求。我们想要实现一个验证检查,确认传入的xml中的所有十进制值都有一个小数点。虽然在语义上有效,
<longitude>10</longitude>
时,应该通过验证失败
<longitude>10.0</longitude>
应该通过。
我正在考虑创建一个XMLdocument,加载XSD并使用XPath查找XML文档中的所有节点,其中节点的XSD定义定义为:
<xs:simpleType><xs:restriction base="xs:decimal">
是否可以在xml中找到“所有小数节点”,即使它们的类型(限制)是在XSD中定义的?若然,XPATH会是什么样子?
或者我最好在XSD中写一个<Rule>
并让验证器完成繁重的工作吗?如果是这样,该规则会是什么样子?
谢谢!
答案 0 :(得分:1)
我找到了答案..我创建了一个正则表达式规则并添加到XSD:
<xs:restriction base="xs:decimal">
<xs:pattern value ="^[0-9]+\.([0-9])?$" /> <-- Added this line
现在,当架构验证运行时,没有小数点的十进制值将被抛出为错误。
答案 1 :(得分:1)
要回答您的原始问题,在架构感知XPath 2.0中,您可以编写
//element(*, xs:decimal)[matches(text(), '\.')]