无法在 XSD 中使用 Assert 元素

Unable to use Assert element in XSD

提问人:Pushpraj Singh 提问时间:11/5/2023 最后编辑:Pushpraj Singh 更新时间:11/5/2023 访问量:39

问:

我是XSD架构验证的新手。我正在寻找是否要在XSD架构中应用其他条件。在互联网上搜索了很多之后,我找到了“assert”元素,我们可以在其中测试条件,例如if else condition。但是 XSD 验证器给了我这样的错误

enter image description here

你能帮我解决这个问题吗?谢谢

我尝试在 XSD 中使用 assert 元素,我的期望是使用“if else”之类的条件。

这是我的简单XML数据

<?xml version="1.0" encoding="UTF-8"?><person> <name>JohnDoe</name><age>30</age></person>

这是我的 XSD 架构

<?xml version="1.0" encoding="UTF-8"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:element name="person">
<xs:complexType>
  <xs:sequence>
    <xs:element name="name" type="xs:string"/>
    <xs:element name="age" type="xs:integer"/>
  </xs:sequence>
  
  <xs:assert test="age &gt;= 0 and age &lt;= 120"/>
</xs:complexType></xs:element></xs:schema>
xsd xsd 验证 xsd-1.1

评论


答:

1赞 Martin Honnen 11/5/2023 #1

我认为,如果您使用支持 XSD 1.1 的验证器,您的架构将起作用(但示例 XML 实例是有效的)。基本上,您的开源选项是最新版本的 Apache Xerces Java,您需要确保使用支持 XSD 1.1 的版本(Web 界面在 https://www.softwarebytes.org/xmlvalidation/ 上在线),或者 Python 包 https://pypi.org/project/xmlschema/,我有一个 Python 包版本在这个 XML 工作台小提琴的浏览器中运行,使用 XSD 按钮运行验证。

此外,还有 Saxon EE 或 Altova 等商业选择。