我定义了这个XSD元素:
<xsd:element name="CU_FIRST_NAME">
<xsd:annotation>
<xsd:documentation>
The first name of the customer that is getting billed for the order
</xsd:documentation>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="50"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
我知道这可以被单个元素替换,但我有一个更复杂的元素(一个序列),我需要使它成为可选项。
有没有办法让第一个孩子(即层次结构中的<xsd:schema>
以下)元素可选?
要清楚,我想让整个CU_FIRST_NAME
节点及其所有子节点都是可选的。
答案 0 :(得分:1)
我最终意识到我使用的元素实际上是更高级别对象中的引用。
我解决这个问题的方式是:
原始代码:
<xsd:element ref="CU_FIRST_NAME"/>
新代码:
<xsd:element ref="CU_FIRST_NAME" minOccurs="0"/>
所以,我真的在问错误的问题。
答案 1 :(得分:0)
<xs:element name="item" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string"/>
<xs:element name="note" type="xs:string" minOccurs="0"/>
<xs:element name="quantity" type="xs:positiveInteger"/>
<xs:element name="price" type="xs:decimal"/>
</xs:sequence>
</xs:complexType>
</xs:element>
在第一个元素中使用minOccurs="0"
。这将使它如果你选择顶部你必须选择其余的。但如果你把它放在孩子身上那么它们都是可选的。