我正在使用Eclipse IDE构建一个XML Schema以供JAXB处理,但我收到的验证错误如下:
<xsd:element name="testEl">
<xsd:complexType>
<xsd:choice>
<xsd:sequence>
<xsd:element name="testElChild">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="tec1"/>
<xsd:element name="tec2"/>
</xsd:sequence>
<xsd:attribute name="type" use="required" fixed="yes"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:sequence>
<xsd:element name="testElChild">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="tec3"/>
<xsd:element name="tec4"/>
</xsd:sequence>
<xsd:attribute name="type" use="required" fixed="no"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:choice>
</xsd:complexType>
</xsd:element>
基本上,我试图指定如果元素testElChild
的type属性的值为“yes”,那么它应该包含子元素tec1
和tec2
,但是如果type属性的值为“no”,那么它应该包含子元素元素tec3
和tec4
。
上述模式有什么问题和/或如何使用有效的XML模式实现目的?
显示您获得的验证错误会有很大帮助。我只能假设你在两个选项中都有相同的元素名称testElChild
。
要修复它,我建议您遵循编写XML模式的两个最佳实践:
TestElChild
,你可以选择一种扩展类型,例如: NoTypeTestElChild
和YesTypeTestElChild
。一开始可能很乏味,但从长远来看,你会遇到一些麻烦。如果您在根据这些实践编写XSD时遇到问题,请告诉我们。