【发布时间】:2016-06-29 20:40:29
【问题描述】:
我有一个复杂类型-“A”,它使用扩展基-“基”后跟一系列元素。现在扩展 base-'Base' 本身就是复杂类型,并且在序列 ex.(元素 1、2、3)中有多个元素引用。我遇到的问题是,在尝试验证 XML 时,我得到的错误是元素“A”有无效的子“1”,它列出了 XML 上的其他可能元素。因为我在一个小组中工作,所以我只能对架构而不是 XML 进行更改。对不起,如果我解释它奇怪的例子将在下面
这是架构
<xsd:complexType name="A">
<xsd:complexContent>
<xsd:extension base="Base" >
<xsd:sequence minOccurs="0" maxOccurs="unbounded">
<xsd:element name="B" minOccurs="0">
<xsd:complexType>
<xsd:complexContent>
<xsd:extension base="BData"/>
</xsd:complexContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="C" minOccurs="0">
<xsd:complexType>
<xsd:complexContent>
<xsd:extension base="CData"/>
</xsd:complexContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="D" minOccurs="0">
<xsd:complexType>
<xsd:complexContent>
<xsd:extension base="DData"/>
</xsd:complexContent>
</xsd:complexType>
</xsd:element>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
XML
<A>
<D/>
<B/>
<C/>
<T> <---- This is the element from the base'Base' that gives me the error>
<......>
</T>
</A>
好的,所以在看到 cmets 之后,我将详细说明我的问题。这是我第一次发布问题,我面临的问题与我的工作有关,所以我无法发布具体细节。所以主要问题是'A'。所以我有我正在编辑的架构,它假设验证多个 XML。因此,我的目标是找到一种方法,让 Complextype A 使每个元素都有效,但同时如果从扩展名中调用一个元素,则无论顺序或次数如何,都不会弹出错误。我已经研究了“所有”元素,但问题是它只能发生 1 次。结论:序列无限次出现但顺序受限,全部无顺序限制但限于1次出现。这就像一个问题的兔子洞,欢迎任何解决方案。
【问题讨论】:
-
XML 元素名称不能以数字开头。
-
您缺少一个结束
xsd:sequence元素。 -
您没有包含引用的
Base声明。 -
你的格式一团糟。
-
请阅读 How to Ask 并返回正确的 minimal reproducible example。谢谢。