Comunque un avviso per tutti: Se un elemento è opzionale, vuol dire che lo è l'elemento stesso, non il suo valore. Per esempio la strada dell'indirizzo può essere omesso, ma <dpi:Street/>
invalida l'XML.
Ritengo che il controllo del file xml, venga effettuato utilizzando la standard internazionale, tramite il relativo file .xsd.
Dovresti controllare la type del campo, in particolare il valore minLenght,
se vale 1, significa che il campo non puo' essere vuoto (deve contenere almeno un carattere)
se invece vale 0, come nell'esempio sotto, puo' essere omesso
L'altro campo maxLength, invece rappresenta il numero massimo di caratteri che il campo può contenere,
nell'esempio: 30
Codice:
<xsd:simpleType name="StringMin0Max30_Type">
<xsd:restriction base="xsd:string">
<xsd:minLength value="0"/>
<xsd:maxLength value="30"/>
</xsd:restriction>
</xsd:simpleType>