我有一个定义文档中多个元素的 XSD 架构。我期望的两组元素是集合。一组元素定义如下:
<xsd:element name="Prospects" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ROW" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ID" type="xdv:guidKey" nillable="false" />
<xsd:element name="Name" minOccurs="0">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xdv:stringLen50">
<xsd:attribute name="origVal" type="xdv:stringLen50" use="optional" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
... more stuff...
</xsd:element>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" fixed="Prospects" />
<xsd:attribute name="alias" type="xsd:string" use="required" fixed="Prospects" />
<xsd:attribute name="keys" type="xsd:string" use="required" fixed="ProposalID" />
<xsd:attribute name="codeTableColVal" type="xdv:codeTableColVal" use="optional" />
</xsd:complexType>
另一组元素如下所示:
<xsd:element name="Employees" minOccurs="0" maxOccurs="1">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ROW">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ID" type="xdv:guidKey" nillable="false" />
<xsd:element name="Seq" type="xdv:guidKey" nillable="false" />
<xsd:element name="CompanyName" minOccurs="0">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xdv:stringLen32">
<xsd:attribute name="origVal" type="xdv:stringLen32" use="optional" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
... more stuff...
</xsd:element>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" fixed="Employees" />
<xsd:attribute name="alias" type="xsd:string" use="required" fixed="Employees" />
<xsd:attribute name="keys" type="xsd:string" use="required" fixed="OpportunityID,Seq" />
<xsd:attribute name="codeTableColVal" type="xdv:codeTableColVal" use="optional" />
</xsd:complexType>
主要区别在于前者为 Prospects 指定 minOccurs="0" 并且没有出现最大值,然后为 ROW 定义 minOccurs=0 和 maxOccurs=unbounded。
对于后者,它为员工定义 minOccurs=0 和 maxOccurs=1,而对于 ROW,它没有定义 minOccurs 或 maxOccurs。
当我运行实用程序时Xsd2Code
,它会为 Prospects 生成我的 C# 代码,它会创建一个带有 ROWs 集合(作为 List())的 Prospects 属性,但对于Employees,它会创建一个带有 ROW 属性的 Employee 属性,而不是一个集合。
我的问题:这个的模式规则是什么?由于没有在 ROW 上为员工定义 maxOccurs 是应用父级的最小值和最大值还是应该是一个集合?
我正在尝试确定创建我的代码的实用程序是否错误或 .xsd 文件是否错误。