xml - totaldigits - xsd element types
atributos de elemento XSD nillable y minOccurs (1)
Debe decidir si está pensando en XML como XML, o si está pensando en XML como una forma de transmitir objetos Java (u otros) de aquí para allá.
En XML, nillable permite la construcción <myelement xsi:nil=''true''/>
como un indicador de un valor ausente explícito, como un SQL NULL. Esto es semánticamente diferente de solo <myelement/>
. Y ambos son distintos de nada en absoluto. Entonces, al mirar XML, debe distinguir cuatro casos:
<!-- nothing -->
<myElement attr1=''true''>some content</myElement>
<myElement/>
<myElement xsi:nil=''true''/>
Si, por otro lado, usted está interesado principalmente en Java, tal vez porque está utilizando SOAP, entonces necesita pensar en cómo el mapa de objetos Java va y viene.
Para cualquier elemento de Java que se herede de Object, JAXB y otras tecnologías de mapeo necesitan una forma de tratar con valores nulos. Nillable es la forma de hacerlo. Si prohíbe algo que puede ser un objeto, los kits de herramientas usarán molestamente una matriz para encontrar una manera de representar la ausencia.
Por otro lado, si tiene una matriz, tenga en cuenta que la matriz en sí misma es un objeto y puede ser nula. Por lo tanto, cada conjunto de herramientas tiene que distinguir una matriz de elementos cero de una nula.
Por otro lado, si tiene un tipo primitivo (por ejemplo, int
), nillable dará lugar a problemas, ya que no hay una asignación de xsi: nil a una primitiva.
Voy y vienen con la configuración de un elemento para minOccurs="0"
y nillable="true"
.
Estaba leyendo this artículo y ahora en mi WSDL no estoy seguro de si usar ambos vale la pena. El artículo ofrece un buen ejemplo de representación de matrices donde puede tener valores nulos intercalados, ya que esto no se puede hacer con solo minOccurs="0"
. Ahora, la convención con la que he estado yendo es que si un elemento no es opcional, no es anulable. La diferencia, tal como lo entiendo, y donde radica mi pregunta, es que al aplicar la propiedad anulable a un elemento, ¿estoy diciendo que puede pasar el equivalente XSD de un valor NULO? De lo contrario, un elemento sin la propiedad anulable, tiene que tener un valor dentro de la restricción que se le asigna?