He visto null
elementos representados de varias maneras:
El elemento está presente con xsi:nil="true"
:
<book>
<title>Beowulf</title>
<author xsi:nil="true"/>
</book>
El elemento está presente, pero se representa como un elemento vacío (que creo que está mal ya que está 'vacío' y null
es semánticamente diferente):
<book>
<title>Beowulf</title>
<author/>
</book>
<!-- or: -->
<book>
<title>Beowulf</title>
<author></author>
</book>
El elemento no está presente en absoluto en el marcado devuelto :
<book>
<title>Beowulf</title>
</book>
El elemento tiene un <null/>
elemento hijo (de TStamper a continuación):
<book>
<title>Beowulf</title>
<author><null/></author>
</book>
¿Existe una forma correcta o canónica de representar tal null
valor? ¿Hay formas adicionales que los ejemplos anteriores?
El XML para los ejemplos anteriores está ideado, así que no lo leas demasiado. :)
xmlns:xsi="http://w3.org/2001/XMLSchema-instance"
. Tenga en cuenta la falta http: //. Es importante porque la cadena de espacio de nombres es en realidad solo una cadena para el analizador xml y no una uri.xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
. Nota "www". Ver w3.org/TR/xmlschema-1/#no-xsixsi:
prefijo debe declararse. Un analizador XML compatible con el espacio de nombres rechazará su documento XML si intenta usar elxsi:
prefijo sin declararlo. La especificación relevante aquí es w3.org/TR/xml-names/#nsc-NSDeclared ("Restricción de espacio de nombres: Prefijo declarado") que dice que los únicos prefijos predefinidos sonxml:
yxmlns:
. El esquema XML se basa en la especificación de los espacios de nombres XML, pero no agrega ningún prefijo predefinido adicional, ya que esto violaría la especificación de los espacios de nombres XML.