Xml XSD元素与元素不一致

Xml XSD元素与元素不一致,xml,xsd,xsd-1.1,Xml,Xsd,Xsd 1.1,我必须用XSD验证XML XML可以如下所示: 1234 第一组 ... 更多元素 XML也可以如下所示: asdf 第2组 ... 可能与第一个XML不同的一些其他元素 在第一个XML中,uuid的类型为xs:integer。在第二个XML中,uuid的类型为xs:string 为了在XSD中验证这些XML,我决定在选项中使用组 我的XSD如下所示: ... 更多元素 ... 还有一些元素可能与第一个XML不同 使用XMLSpy,我得到以下错误: 元素“uuid”与元素“uuid”

我必须用XSD验证XML
XML可以如下所示:


1234
第一组
... 更多元素
XML也可以如下所示:


asdf
第2组
... 可能与第一个XML不同的一些其他元素
在第一个XML中,uuid的类型为
xs:integer
。在第二个XML中,uuid的类型为
xs:string

为了在XSD中验证这些XML,我决定在
选项
中使用

我的XSD如下所示:


... 更多元素
... 还有一些元素可能与第一个XML不同
使用XMLSpy,我得到以下错误:

元素“uuid”与元素“uuid”不一致。
是的,它们并不一致,但这正是我想要的:-)
那么,我必须如何更改XSD,以便在不同的组中以相同的选择使用具有不同类型的相同元素?uuid不是唯一的元素,这可能有所不同,这就是我实现
-解决方案的原因

谢谢你的帮助

编辑
为了避免uuid的歧义,本例中的顺序并不重要。也可以是例如最后一个元素

具有相同名称和相同父级的任意两个元素在XSD中必须具有相同的类型。这就是“元素声明一致”约束的本质。从错误的措辞来看,我相信XMLSpy告诉您违反了该约束。(您还违反了“唯一粒子属性”约束


如果希望
uuid
元素接受字符串或整数,请为其指定一个整数和字符串并集的类型。顺序很重要,因为第一个匹配的元素值决定了如何在模式验证后信息集中键入元素值。

可能对您有帮助。对于
u有两个定义uid
以这种方式会产生歧义。如果您自己进行XML验证,手动:您将如何决定是否将出现的
uuid
解释为字符串还是整数?您提到的答案中的歧义是,因为元素的顺序很重要。在我的例子中,顺序不重要,但类型is、 这是第二项任务:依赖于type元素,应该使用一个组如何为
uuid
等创建一个简单的定义,这足以解释所有情况?然后使用断言检查与
type
元素的值有关的附加约束。