问题描述
我有一个XML文件可以针对XSD模式进行验证。这就是我的XML文件的样子。
<service>
<id>myid</id>
<name>myname</name>
<arg>arg1</arg>
<arg>arg2</arg>
</service>
这些是验证规则。
-
id
和name
是唯一的并且是必需的。这些元素中不能有多个元素。 -
arg
可以重复 - 顺序无关紧要。元素可以是任意顺序。
这是我为此创建的XSD文件。
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="service">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element type="xs:string" name="id" minOccurs="1" maxOccurs="1"/>
<xs:element type="xs:string" name="name" minOccurs="1" maxOccurs="1"/>
<xs:element type="xs:string" name="arg" minOccurs="1" maxOccurs="unbounded"/>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
当我尝试使用此(https://www.freeformatter.com/xml-validator-xsd.html)在线验证器进行验证时,此方法有效。但是,即使有两个id
元素或没有id
元素,它现在也会显示任何错误。
<service>
<id>myid</id>
<id>anotherid</id>
<name>myname</name>
<arg>arg1</arg>
<arg>arg2</arg>
</service>
这应该是错误的,因为有两个id
元素。如何在choice
元素中同时具有可重复元素和不可重复元素。 Sequence
在这里是不可能的,因为顺序无关紧要。
<service>
<name>myname</name>
<arg>arg1</arg>
<arg>arg2</arg>
</service>
这应该失败,因为id
元素不存在。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)