gpt4 book ai didi

xsd - XSD 架构是否允许循环组?

转载 作者:行者123 更新时间:2023-12-01 13:04:15 33 4
gpt4 key购买 nike

对于这个 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 试图遍历所有依赖项。 MS版本预处理方案并扩展所有组。由于循环依赖性,这种扩展将是无限的,因此它会因错误而退出。对于 Mono 版本,有两种可能的情况:

  1. 它尝试遍历依赖树并以无限循环结束。
  2. 它试图扩展所有组和最终陷入无限循环。

这只是我的猜测。我从未见过 Mono xsd 的实际源代码。

关于xsd - XSD 架构是否允许循环组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4048945/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com