Ошибка схемы Xsd.exe: неопределенный complexType 'http://www.w3.org/2001/XMLSchema:string' используется в качестве основы для ограничения сложного типа
Как решить эту проблему?
Предупреждение 2 Неопределенный complexType 'http://www.w3.org/2001/XMLSchema:string' используется в качестве основы для ограничения сложного типа.
Это происходит из-за <xs:simpleContent><xs:restriction base='xs:string'>
<xs:element name='TO'>
<xs:complexType>
<xs:simpleContent>
<xs:restriction base='xs:string'>
<xs:maxLength value='15'/>
<xs:attribute name='PROVID'>
<xs:simpleType>
<xs:restriction base='xs:int'>
<xs:enumeration value='1'/>
<xs:enumeration value='2'/>
<xs:enumeration value='3'/>
<xs:enumeration value='5'/>
<xs:enumeration value='6'/>
<xs:enumeration value='7'/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name='TYPE'>
<xs:simpleType>
<xs:restriction base='xs:string'>
<xs:enumeration value='NPM'/>
<xs:enumeration value='EMS'/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:restriction>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:schema>
Глядя на справку W3schools, все выглядит нормально, но не в соответствии с VS2010 и Xsd.exe.
Все, что я действительно хочу сделать, - это определить элемент TO, который может иметь два вышеуказанных атрибута, а его текст должен быть ограничен 15 символами.
1 ответ
Решение
Вы не можете ограничить строку до 15 символов и одновременно расширить ее до сложного типа с атрибутами. Если вы сначала определите ограниченный тип строки, а затем расширите его, у вас не возникнет проблем:
<xs:simpleType name="RestrictedString">
<xs:restriction base="xs:string">
<xs:maxLength value="15"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="TO">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="RestrictedString">
<xs:attribute name="PROVID">
<xs:simpleType>
<xs:restriction base="xs:int">
<xs:enumeration value="1"/>
<xs:enumeration value="2"/>
<xs:enumeration value="3"/>
<xs:enumeration value="5"/>
<xs:enumeration value="6"/>
<xs:enumeration value="7"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="TYPE">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="NPM"/>
<xs:enumeration value="EMS"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>