我正在使用xml,我使用xsd来验证我的xml文件。我的xsd和xml文件太长了,我可以给你一部分。
XSD文件:
...
<xs:complexType name="BankType">
<xs:choice>
<xs:element name="Code" type="codeType" minOccurs="1" maxOccurs="1" />
<xs:element name="NewCode" type="codeType" minOccurs="0" maxOccurs="1" />
<xs:element name="SWIFTBIC" type="swiftType" minOccurs="0" maxOccurs="1" />
<xs:element name="Name" type="nameType" minOccurs="0" maxOccurs="1" />
<xs:element name="CorAccount" type="accountType" minOccurs="0" maxOccurs="1" />
<xs:element name="SubCorAccount" type="accountType" minOccurs="0" maxOccurs="1" />
<xs:element name="TaxNumber" type="taxNumberType" minOccurs="0" maxOccurs="1" />
<xs:element name="Address" type="addressType" minOccurs="0" maxOccurs="1" />
<xs:element name="PhoneNumber" type="phoneNoType" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="FaxNumber" type="faxNumberType" minOccurs="0" maxOccurs="unbounded" />
</xs:choice>
</xs:complexType>
<xs:complexType name="OperationsForBankType">
<xs:sequence>
<xs:element name="Method" type="methodType" minOccurs="1" maxOccurs="1" />
<xs:element name="Bank" type="BankType" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
...
XML文件:
...
<Operations>
<Method>ADD</Method>
<Bank>
<Code>111111</Code>
<SWIFTBIC>AAAAAAAA</SWIFTBIC>
<Name>ASDFGHJKL</Name>
<CorAccount>1111111111111111111111111111</CorAccount>
<SubCorAccount>1111111111111111111111111111</SubCorAccount>
<TaxNumber>1700792251</TaxNumber>
<Address>Bakı şəhəri, Nizami küçəsi, 70</Address>
<PhoneNumber>+994125981107</PhoneNumber>
<FaxNumber>+994125980307</FaxNumber>
</Bank>
...
错误是Reason: cvc-complex-type.2.4.d: Invalid content was found starting with element 'SWIFTBIC'. No child element is expected at this point.
我该如何解决?
编辑:之前我使用过xs:sequence
但标签的顺序可能会发生变化,这就是我无法使用它的原因。所有元素都可以出现,可以是空的,也不会发生..
答案 0 :(得分:1)
正如我在xsd
中看到的那样,所有元素都是预期的。
选择指标
指标指明可以出现一个或另一个子元素:
序列指标
指标指定子元素必须以特定顺序出现:
试试这个: -
<xs:complexType name="BankType">
<xs:sequence>
<xs:element name="Code" type="codeType" minOccurs="1" maxOccurs="1" />
<xs:element name="NewCode" type="codeType" minOccurs="0" maxOccurs="1" />
<xs:element name="SWIFTBIC" type="swiftType" minOccurs="0" maxOccurs="1" />
<xs:element name="Name" type="nameType" minOccurs="0" maxOccurs="1" />
<xs:element name="CorAccount" type="accountType" minOccurs="0" maxOccurs="1" />
<xs:element name="SubCorAccount" type="accountType" minOccurs="0" maxOccurs="1" />
<xs:element name="TaxNumber" type="taxNumberType" minOccurs="0" maxOccurs="1" />
<xs:element name="Address" type="addressType" minOccurs="0" maxOccurs="1" />
<xs:element name="PhoneNumber" type="phoneNoType" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="FaxNumber" type="faxNumberType" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
答案 1 :(得分:0)
将complexType BankType更改为xs:all
而不是xs:choice。但是,maxOccurs="unbounded"
中无法xs:all
,因此您需要将电话和传真号码限制为最大值。 1或者你需要创建一个容器元素(PhoneNumbers等),它可以包含多个数字,但最多可以包含1个。