我有一个架构,需要允许两组元素之一一次或多次:
<xs:element name="Parent" maxOccurs="99">
<xs:complexType>
<xs:choice>
<xs:sequence>
<xs:element name="Address" type="xs:string" />
<xs:element name="City" type="xs:string" />
<xs:element name="State" type="xs:string" />
<xs:element name="Zip" type="xs:string" />
</xs:sequence>
<xs:sequence>
<xs:element name="Address" type="xs:string" />
<xs:element name="State" type="xs:string" />
<xs:element name="Zip" type="xs:string" />
<xs:element name="Country" type="xs:string" />
</xs:sequence>
</xs:choice>
</xs:complexType>
</xs:element>
但验证似乎总是发生在第一个选择时(它会说“缺少元素城市”)。我怎样才能做到这一点?我使用的是 .NET XSD 1.0,无法更改 XML。
最佳答案
这有效。如果有人想要提供更好的解决方案或进一步详细说明,我将暂时不回复这篇文章。
<xs:group name="SharedElements">
<xs:sequence>
<xs:element name="Address" type="xs:string" />
</xs:sequence>
</xs:group>
<xs:group name="NationalElements">
<xs:sequence>
<xs:element name="city" type="xs:string" />
<xs:element name="State" type="xs:string" />
<xs:element name="Zip" type="xs:string" />
</xs:sequence>
</xs:group>
<xs:group name="InternationalElements">
<xs:sequence>
<xs:element name="State" type="xs:string" />
<xs:element name="Zip" type="xs:string" />
<xs:element name="Country" type="xs:string" />
</xs:sequence>
</xs:group>
<xs:element name="Parent" maxOccurs="99">
<xs:complexType>
<xs:sequence>
<xs:group ref="SharedElements" />
<xs:choice>
<xs:group ref="NationalElements" />
<xs:group ref="InternationalElements" />
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
关于.net - 在两个具有相同名称的 XSD 组之间进行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24945114/