【发布时间】:2010-10-29 04:18:48
【问题描述】:
对于这个xml:
<elem1 xmlns="http://www.fixprotocol.org/ns/fast/t/1.0">
<elem2>
<elem2/>
</elem2>
</elem1>
我有这个架构,它似乎可以很好地针对w3 schema validation service 进行验证,并且该架构可以很好地验证上述 XML。可悲的是,xsd.exe 和其他一些工具报告它是一个错误。那是对的吗? XML 模式是否不允许循环组引用?谢谢!
更新:架构不是我的,无法更改:(
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.fixprotocol.org/ns/fast/t/1.0" xmlns:t="http://www.fixprotocol.org/ns/fast/t/1.0">
<xs:element name="elem1">
<xs:complexType>
<xs:group ref="t:grp1" />
</xs:complexType>
</xs:element>
<xs:group name="grp1">
<xs:sequence>
<xs:group ref="t:grp2" />
</xs:sequence>
</xs:group>
<xs:group name="grp2">
<xs:sequence>
<xs:element minOccurs="0" name="elem2">
<xs:complexType>
<xs:group ref="t:grp1" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
</xs:schema>
【问题讨论】:
-
xsd.exe 的错误是什么?
-
错误:为架构“tmp”生成类时出错。 - 来自 targetNamespace='...' 的组 'grp2' 的定义无效:循环组引用。如果这是一个 XSD 错误,我可以尝试联系负责它的组织,并告诉他们一个错误。如果没有,我会尝试寻找替代代码生成器,或者尝试修复 mono 的 xsd.exe 中的错误(挂起而不是显示错误)。
标签: xsd xsd.exe circular-reference