[英]XSD - Making elements optional and mandatory in an XML schema
我為XML生成的架構如下所示:
<xs:complexType name="ComplexElement1">
<xs:sequence>
<xs:element name="ComplexType1" type="ComplexType1">
</xs:element>
<xs:element name="ComplexType2" type="ComplexType2" minOccurs="0">
</xs:element>
<xs:element name="ComplexType3">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:element name="ComplexType4" type="ComplexType4"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ComplexType5" type="ComplexType5" minOccurs="0"/>
<xs:element name="ComplexType6" type="ComplexType6" minOccurs="0" maxOccurs="1"/>
<xs:element name="SimpleType1" type="xs:string" minOccurs="0" maxOccurs="1"/>
<xs:element name="ComplexType7" type="ComplexType7" minOccurs="0" maxOccurs="1"/>
<xs:element name="SimpleType2" minOccurs="1" maxOccurs="1" type="xs:string"/>
</xs:sequence>
<xs:attribute name="Attribute1" type="StringLength3WithNoSpace" use="required"/>
<xs:attribute name="Attribute2" type="ComplexAttribute1"/>
<xs:attribute name="Attribute3" type="xs:boolean" use="optional"/>
</xs:complexType>
從XSD中可以看到,ComplexType 5,6和7以及SimpleType 1都是可選元素 。 另外,SimpleType2是必填元素。
當我嘗試在請求中沒有SimpleType2的請求時,會收到類似以下內容的消息
Message validation failed. Errors: [cvc-complex-type.2.4.b: The content of element 'ComplexElement1' is not complete. One of '{"somePath":SimpleType2}' is expected.]
工作正常。
但是,在我不放置任何可選元素,ComplexType 5、6和7,SimpleType 1以及強制性SimpleType2的情況下,就會出現問題。
我期望的消息與上述消息相同-因為使用minOccurs =“ 0”,該序列中的所有其他元素都是可選的
但是,我收到的實際錯誤消息是:
Message validation failed. Errors: [cvc-complex-type.2.4.b: The content of element 'ComplexElement1' is not complete. One of '{"somePath":ComplexType5, "somePath":ComplexType6, "somePath":SimpleType1, "somePath":ComplexType7, "somePath":SimpleType2}' is expected.]<
這不是真的正確,因為我的架構僅將SimpleType2定義為強制性,將所有其他類型定義為可選。
關於如何解決此問題的任何想法?
模式驗證器查看每個元素,並確定在當前位置是否允許該元素。 如果它找到了不允許的元素,或者在不允許序列結尾的位置找到了序列的結尾,那么它將為您提供可以有效出現在當前位置的元素列表。 這就是它設計的工作方式,您將無法對其進行更改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.