.net - 在两个具有相同名称的 XSD 组之间进行选择

标签 .net xml xsd xsd-1.0

我有一个架构,需要允许两组元素之一一次或多次:

<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/

相关文章:

c# - 可读性与性能比较

.net - 计算两个日期之间的月数

xml - 如何使用 VB .net 解析 XML

带有属性的 XML 模式限制

java - 嵌套时递归 XML 架构类型验证失败

c# - 如何实现一个非随机的随机数生成器?

c# - 在屏幕的右下角显示表格?

java - 如何使用 Jersey 将带注释的对象列表从客户端传递到服务器

android - 如何在电子商务应用程序中将 ListView 项目显示为项目?

xml - 两个 XML 的通用 XSD