Xml 相同深度下具有相同名称的XSD元素

Xml 相同深度下具有相同名称的XSD元素,xml,xsd,Xml,Xsd,我有一个问题,这个XSD片段是否有效: <xsd:element name="yolo" minOccurs="0"/> <xsd:element name="yolo" /> XML示例: <yolo /> 感谢的 您应该具有以下架构 <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org

我有一个问题,这个XSD片段是否有效:

<xsd:element name="yolo" minOccurs="0"/>
<xsd:element name="yolo" />

XML示例:

<yolo />

感谢

您应该具有以下架构

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="yolo" type="xs:string"/>
</xs:schema>


请使用联机工具生成schema to xml或xml to schema as和

快速回答,代码段无效

假设您将上面的代码片段放在以下上下文中(为了明确相同的深度是什么意思,因为@Janty被它弄糊涂了):


假设您尝试使用.NET XSD处理器执行上述操作,则会出现以下错误:

元素“”的多个定义 导致内容模型变得不明确。必须创建内容模型 在元素信息项的验证过程中形成 序列,直接、间接或隐式包含的粒子 其中,用于尝试验证中序列中的每个项目 可以在不检查内容或属性的情况下唯一地确定回合 该项的属性,并且没有关于该项的任何信息 在序列的其余部分

如果您尝试使用基于Xerces的处理器

cos nonambig:::约洛和 “”:yolo(或来自其 替换组)违反“唯一粒子属性”。在期间 如果根据此模式进行验证,则会为这些模式创建歧义 两个粒子

XSD规范描述了cos nonambig(或多或少微软的实现错误消息)

然而,更令人困惑的是,一些处理器允许您覆盖UPA行为(具体地或间接地),因此很可能会尝试相同的操作,并且不会出现错误。。。微软使用Xerces和Xerces的功能做到了这一点

Microsoft文档适用于您的情况。。。这是他们的例子。。。匹配,不是吗

<xs:sequence>
    <xs:element name="A" type="xs:string"/>
    <xs:element name="B" type="xs:string" minOccurs="0"/>
    <xs:element name="B" type="xs:string"/>
</xs:sequence>


谢谢,但我不想代表提供的示例XML编写XSD。我正在编写某种工具来验证XSD,我想知道——如果我的工具能够得到上面的XSD,它被认为是有效的吗?我知道我可以为这个例子编写一个“更好”的XSD。但这不是我的观点。谢谢,那么您应该学习xsd开发的基础知识。它将帮助你创建正确的模式。@Digital_现实,这不是你指出的文章的副本。非常详细的评论对我很有帮助。非常感谢。
<xs:sequence>
    <xs:element name="A" type="xs:string"/>
    <xs:element name="B" type="xs:string" minOccurs="0"/>
    <xs:element name="B" type="xs:string"/>
</xs:sequence>