gpt4 book ai didi

C# XMLReader - 多个子集合无法通过 XSD 架构进行验证

转载 作者:太空宇宙 更新时间:2023-11-03 14:32:50 25 4
gpt4 key购买 nike

我有一个提供的 XSD。我对 XSD 的了解还不够,无法开始修改它。

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Dataset">
<xs:complexType>
<xs:sequence>
<xs:element name="Person">
<xs:complexType>
<xs:sequence>
<xs:element name="PayrollNumber" type="String16" maxOccurs="1" minOccurs="1" />
<xs:element name="Surname" type="String50" maxOccurs="1" />
<xs:element name="Name" type="String50" maxOccurs="1" />
<xs:element name="StreetAddress" type="String50" maxOccurs="1" />
<xs:element name="Suburb" type="String20" maxOccurs="1" />
<xs:element name="Skills">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="Skill" type="String16" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="HomePhone" type="String14" maxOccurs="1" />
<xs:element name="MobilePhone" type="String14" maxOccurs="1" />
<xs:element name="PagerNumber" type="String14" maxOccurs="1" />
<xs:element name="Email" type="String80" maxOccurs="1" />
<xs:element name="RecordType" type="RecordType" maxOccurs="1" minOccurs="1" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:simpleType name="String16">
<xs:restriction base="xs:string">
<xs:maxLength value="16" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="String50">
<xs:restriction base="xs:string">
<xs:maxLength value="50" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="String20">
<xs:restriction base="xs:string">
<xs:maxLength value="20" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="String30">
<xs:restriction base="xs:string">
<xs:maxLength value="30" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="String14">
<xs:restriction base="xs:string">
<xs:maxLength value="14" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="String80">
<xs:restriction base="xs:string">
<xs:maxLength value="80" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="RecordType">
<xs:restriction base="xs:string">
<xs:enumeration value="A" />
<xs:enumeration value="E" />
<xs:enumeration value="D" />
</xs:restriction>
</xs:simpleType>
</xs:schema>

我有以下 XML。

<Dataset>
<Person>
<PayrollNumber>1234567</PayrollNumber>
<Surname>Denson</Surname>
<Name>John-Jaime-Winston Junior</Name>
<StreetAddress>Level 5, City Central Tower 2, 121 King William St</StreetAddress>
<Suburb>Mitcham</Suburb>
<Skills>
<Skill>Skill1</Skill>
<Skill>Skill2</Skill>
</Skills>
<HomePhone>08 8888 8888</HomePhone>
<MobilePhone>041 888 999</MobilePhone>
<PagerNumber>111111</PagerNumber>
<Email>curly@stooge.com</Email>
<RecordType>A</RecordType>
</Person>
</Dataset>

NET 文件验证器与 XMLReader 配合良好。

但是,如果我引入多个 Person 记录 - 即。验证失败的集合验证错误:元素“Dataset”具有无效的子元素“Person”。 0 0

如何修改我的 XSD?

最佳答案

是的,您的 XSD 现在在数据集中定义了一个元素 Person 的序列。

您可以通过更改 XSD 中的这一行轻松更改它:

    <xs:element name="Person">

    <xs:element name="Person" minOccurs="1" maxOccurs="unbounded">

如果没有给出 minOccursmaxOccurs 值,它们默认为 1 - 所以你得到的最小值和最大值正好是一个 Person在你的数据集中。

将这些值更改为对您有意义的值,例如minOccurs="1"maxOccurs="10" 或使用 maxOccurs="unbounded" 任意次数(无限制)。

关于C# XMLReader - 多个子集合无法通过 XSD 架构进行验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2205431/

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