我对此XSD代码段是否有效有疑问:
<xsd:element name="yolo" minOccurs="0"/>
<xsd:element name="yolo" />
示例XML:
<yolo />
感谢
答案 0 :(得分:1)
快速回答,该代码段无效。
假设你把上面的片段放在下面的上下文中(为了清楚你的意思是同一个深度,因为@Janty对它感到困惑):
<?xml version="1.0" encoding="utf-8" ?>
<!-- XML Schema generated by QTAssistant/XSD Module (http://www.paschidev.com) -->
<xsd:schema targetNamespace="http://tempuri.org/XMLSchema.xsd" xmlns="http://tempuri.org/XMLSchema.xsd" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:complexType name="test">
<xsd:sequence>
<xsd:element name="yolo" minOccurs="0"/>
<xsd:element name="yolo" />
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
假设您尝试使用.NET XSD处理器,您将收到以下错误:
元素“http://tempuri.org/XMLSchema.xsd:yolo”的多重定义 导致内容模型变得模糊不清。内容模型必须是 形成为在验证元素信息项期间 序列,粒子直接,间接或隐含地包含 其中试图验证序列中的每个项目 可以在不检查内容的情况下唯一确定转弯 该项目的属性,没有任何有关项目的信息 在序列的其余部分。
如果您尝试使用基于Xerces的处理器......
cos-nonambig:“http://tempuri.org/XMLSchema.xsd”:yolo和 “http://tempuri.org/XMLSchema.xsd”:yolo(或来自他们的元素) 替代组)违反“独特粒子归因”。中 针对此模式的验证,将为这些模式创建歧义 两个粒子。
XSD规范描述了cos-nonambig here(或多或少微软的实现错误消息)。
然而,为了增加混淆,一些处理器允许你覆盖UPA行为(特定或间接),所以很可能碰巧尝试相同并且没有错误...... Microsoft使用{{3和Xerces及其EnableUpaCheck功能。
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>
答案 1 :(得分:0)