我有四個元素 A、B、C、D。我想創建一個 XSD,其架構應選擇 [A & B & C] 或 [A & D]。<xs:schema xmlns:w3="http://www.w3.org/TR/xmlschema-1/" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0"><xs:element name="abcd"> <xs:complexType> <xs:choice> <xs:element name="A" type="xs:string"/> <xs:sequence> <xs:element name="B" type="xs:dateTime"/> <xs:element name="C" type="xs:decimal"/> </xs:sequence> <xs:sequence> <xs:element name="D" type="xs:dateTime"/> </xs:sequence> </xs:choice> </xs:complexType></xs:element>這是正確的嗎?我通過 xjc 從 xsd 生成了 java 類。我得到這個文件:@XmlAccessorType(XmlAccessType.FIELD)@XmlType(name = "", propOrder = {"a","b","c","d"})public class abcd {@XmlElement(name = "a", required = true)protected String a;@XmlElement(name = "b")protected String b;@XmlElement(name = "c")protected BigDecimal c;@XmlElement(name = "d")protected String d;// get&set}此類與我的 xsd 方案不匹配。我究竟做錯了什么?
1 回答

慕斯709654
TA貢獻1840條經驗 獲得超5個贊
您的模式接受 [A]、[B & C] 或 [D] 的選擇。
另一種思考方式[A & B & C] or [A & D]是[A] followed by either [B & C] or [D]。這可以在 XSD 中表示,方法是將 A 元素從選項中移出到一個序列中,如下所示:
<xs:element name="abcd">
? ? <xs:complexType>
? ? ? ? <xs:sequence>
? ? ? ? ? ? <xs:element name="A" type="xs:string"/>
? ? ? ? ? ? <xs:choice>
? ? ? ? ? ? ? ? <xs:sequence>
? ? ? ? ? ? ? ? ? ? <xs:element name="B" type="xs:dateTime"/>
? ? ? ? ? ? ? ? ? ? <xs:element name="C" type="xs:decimal"/>
? ? ? ? ? ? ? ? </xs:sequence>
? ? ? ? ? ? ? ? <xs:element name="D" type="xs:dateTime"/>
? ? ? ? ? ? </xs:choice>
? ? ? ? </xs:sequence>
? ? </xs:complexType>
</xs:element>
添加回答
舉報
0/150
提交
取消