这是一个XML架构问题。
我知道xsd:所有元素不能出现在序列中(必须是其类型的顶级元素)。
也就是说,我不能使用以下内容:
<xsd:complexType name="Application"> <xsd:sequence> <xsd:element ref="Name"></xsd:element> <xsd:all> <xsd:element ref="ADD"></xsd:element> <xsd:element ref="DELETE"></xsd:element> </xsd:all> </xsd:sequence> </xsd:complexType>
我的问题是如何以任何顺序(无序集)声明上面的“ADD”和“DELETE”元素,但仍然要确保元素“Name”将是第一个,并始终显示。 (考虑到我不仅有“ADD”和“DELETE”的情况,而是设置了大约10个或更多的无序元素:ADD,DELETE,EDIT等)
重要注意事项:ADD和DELETE可能只会显示一次,但是它们的顺序并不重要:
<Application> <NAME> <DELETE> <ADD> </Application>
但不是:
<Application> <NAME> <DELETE> <ADD> <DELETE> <!--cannot appear twice--> </Application>
如果我明白你的要求,那么你就是正确的,唯一缺少的就是maxOccurs =“无限制”。
我创建了以下模式:
<?xml version="1.0"?> <xs:schema targetNamespace="http://someNamespace" xmlns="http://someNamespace" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Root" type="Application"> </xs:element> <xs:complexType name="Application"> <xs:sequence> <xs:element ref="Name"></xs:element> <xs:choice maxOccurs="unbounded"> <xs:element ref="ADD"></xs:element> <xs:element ref="DELETE"></xs:element> </xs:choice> </xs:sequence> </xs:complexType> <xs:element name="Name"/> <xs:element name="ADD"/> <xs:element name="DELETE"/> </xs:schema>
它工作得很好
<ns0:Root xmlns:ns0="http://someNamespace"> <ns0:Name /> <ns0:ADD /> <ns0:ADD /> <ns0:DELETE /> <ns0:ADD /> <ns0:DELETE /> <ns0:DELETE /> </ns0:Root>
但不是
<ns0:Root xmlns:ns0="http://someNamespace"> <ns0:ADD /> <ns0:ADD /> <ns0:DELETE /> <ns0:ADD /> <ns0:DELETE /> <ns0:DELETE /> </ns0:Root>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。