Как написать XSD для следующего XML?
-
12-10-2019 - |
Вопрос
<?xml version="1.0"?>
<datatype xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
xs:noNamespaceSchemaLocation="sampletype.xsd">
<table name="emp">
<columns>
<column>
<name>emp_id</name>
<data_type>int(200) </data_type>
</column>
</columns>
</table>
</datatype>
Здесь я генерирую XSD для вышеупомянутого XML, но это было неверно. Можете ли вы помочь мне сгенерировать XSD для XML? заранее спасибо.
Решение
Просто беги xsd.exe
утилита (см.: Инструмент определения схемы MSDN XML) над этим XML -файлом, и вы получаете свой ответ:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="datatype" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="datatype" msdata:IsDataSet="true" msdata:Locale="en-US">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="table">
<xs:complexType>
<xs:sequence>
<xs:element name="columns" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="column" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" minOccurs="0" />
<xs:element name="data_type" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="name" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
Так что неправильно об этом xsd ?? А xsd.exe
Попытки угадать, что будет содержать ваш XML, но в некоторых случаях он просто должен сделать некоторые предположения, так что этот результат XSD может быть или не может быть именно тем, что вам нужно, и это определенно может быть написано лучше/более эффективно, если у вас есть Дополнительные ноу-хау о структуре XML. Например, если вы знать что всегда будет просто сингл <table>
Элемент, вы можете сделать вещи намного проще.