У меня есть этот xsd:
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema xmlns="http://myschema.com/schema"
targetNamespace="http://myschema.com/schema"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="aType" mixed="true">
<xs:group ref="aElements" minOccurs="0" maxOccurs="unbounded"/>
</xs:complexType>
<xs:group name="aElements">
<xs:choice>
<xs:element name="a" type="aType"/>
</xs:choice>
</xs:group>
<xs:element name="b">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="aElements"/>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
, и я пытаюсь проверить этот XML-документ по нему:
<?xml version="1.0" encoding="utf-8" ?>
<b xmlns="http://myschema.com/schema">
<a/>
</b>
Однако средство проверки xml в Visual Studio 2008 жалуется на элемент :
Элемент 'b' в пространстве имен 'http://myschema.com/schema' имеет недопустимый дочерний элемент' a 'в пространстве имен' http://myschema.com/schema'. Список возможных ожидаемых элементов: 'a'.
В чем проблема?
Редактировать : Упс, когда я остановился на примере, который я вызвал, я забыл сделать элемент необязательным внутри элемента, вызывая бесконечную рекурсию. Однако проблема с этим модом все еще существует.
ОТВЕТ : Ответ состоял в том, что тег схемы xs: должен включать атрибут elementFormDefault = "qualised".