JAXB Marshaller не имеет элементов, значение которых равно нулю

Когда я выполняю маршалинг Java-объекта с помощью JAXB Marshaller, маршаллер не создает пустые элементы для пустых файлов в Java-объекте. Например, у меня есть следующий объект Java:

public class PersonTraining {

    @XmlElement(name = "Val1", required = true)
    protected BigDecimal val1;
    @XmlElement(name = "Val2", required = true, nillable = true)
    protected BigDecimal val2;
    @XmlElement(name = "Val3", required = true, nillable = true)
    @XmlSchemaType(name = "dateTime")
    protected XMLGregorianCalendar val3;
}

Когда я беру экземпляр этого объекта и маршаллизирую в XML, я получаю следующее (это потому, что я не установил значение для Val2):

<PersonTraining>
      <Val1>1</Val1>
       <Val3>2010-01-01T00:00:00.0-05:00</Val3>
 </PersonTraining>

Тем не менее, я ожидал следующего результата от операции маршаллинга (Infact, мне особенно нужен также элемент, чтобы можно было проверить XML на соответствие XSD)

<PersonTraining>
      <Val1>1</Val1>
      <Val2></Val2>
       <Val3>2010-01-01T00:00:00.0-05:00</Val3>
 </PersonTraining>

Пожалуйста, дайте мне знать, какую опцию мне нужно установить, чтобы нулевое значение в атрибутах объекта ТАКЖЕ могло быть маршализовано и возвращено как пустые / нулевые элементы.

Вот код сортировки:

StringWriter sw = new StringWriter();
JAXBContext jc = JAXBContext.newInstance("person_training");   
Marshaller m = jc.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
m.marshal(ptl, sw);

Ответы на вопрос(1)

Ваш ответ на вопрос