Dado el esquema de (anónima, los puntos clave de interés se cambia el nombre y el resto omitidas):¿Por qué este XDocument falla la validación?
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="inspec"
targetNamespace="the_right_namespace"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
<xs:element name="inspec">
<xs:complexType>
<xs:all>
<xs:element name="a_scalar_property" type="xs:int"/>
<xs:element name="a_collection_property">
<xs:complexType>
<snip>
</xs:complexType>
</xs:element>
<xs:element name="another_collection_property">
<xs:complexType>
<snip>
</xs:complexType>
</xs:element>
</xs:all>
</xs:complexType>
</xs:element>
</xs:schema>
y la instancia (declarado mediante literales VB XML):
Dim xDocument =
<x:inspec xmlns:x='the_right_namespace'>
<a_collection_property/>
<another_collection_property/>
</x:inspec>
validación falla con el mensaje The element 'inspec' in namespace 'the_right_namespace' has incomplete content. List of possible elements expected: 'a_scalar_property'.
¿Por qué? El elemento all
, según W3Schools:
"El elemento all especifica que los elementos secundarios pueden aparecer en cualquier orden y que cada elemento secundario puede aparecer cero o una vez".
Omitir a_scalar_property
es lo mismo que incluirlo cero veces. ¿Por qué este documento no puede validar?
Y no diga cosas como 'publicar el código completo' - esta no es mi dirección IP y la he anonimizado por una buena razón. Hay muy poco más que hacer, y he probado con este ejemplo mínimo, da el mismo resultado.
relevante: (. No estoy diciendo que necesariamente estar equivocado en este caso) http://w3fools.com/ – JJJ
Gracias. No he encontrado W3Schools demasiado útil, pero lo he incluido como una referencia de la que probablemente todo el mundo haya oído hablar, y ¡realmente esperarías que la primera oración de la página sobre una pieza fundamental de Xml Schema fuera correcta! –