I am trying to generate a XSD file with a boolean element that is always required. When I use the XSD file to generate the java classes (with JAXB) the field is not required.
I have attempted the following versions:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:tns="http://com.my.example/test"
targetNamespace="http://com.my.example/test"
elementFormDefault="qualified">
<xs:complexType name="MyComplexElement">
<xs:sequence>
<xs:element name="MySimpleElement" type="xs:boolean" minOccurs="1" maxOccurs="1" nillable="false"/>
<xs:element name="MySimpleElement2" type="xs:boolean" minOccurs="1" maxOccurs="1" nillable="true"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
That XSD file generates me the following fields in the Java class:
@XmlElement(name = "MySimpleElement")
protected boolean mySimpleElement;
@XmlElement(name = "MySimpleElement2", required = true, type = Boolean.class, nillable = true)
protected Boolean mySimpleElement2;
Whereas I was expecting something like this:
@XmlElement(name = "MySimpleElement", required=true) // This one would be my preferred one
protected boolean mySimpleElement;
@XmlElement(name = "MySimpleElement2", required = true, type = Boolean.class, nillable = false)
protected Boolean mySimpleElement2;
I also have attempted to generate the XSD file from a java class but I wasn't able to do it either.
Note: I am using org.codehaus.mojo.jaxb2-maven-plugin version:2.5.0
An xml element of type
xs:boolean
which is not nillable can be represented in java by primitive data typeboolean
because aboolean
always has a value (true
orfalse
) - it cannot benull
. Because it always has a value, it is not needed to specifically mark it as required to have the xml element generated.An xml element of type
xs:boolean
which is nillable cannot be represented by primitive data typeboolean
because aboolean
cannot be null. Therefore it is represented by aBoolean
object. Because it can be null, it is needed to specifically mark it as required to have the xml element generated even if it isnull
.