Отличие черно-белой XML-схемы от XSD-схемы
Некоторое время я сокращался, но не мог найти учебники или ресурсы по XML-схеме, предоставленные Microsoft по этой ссылке. Это выглядит как:
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes">
<AttributeType name='studentID' dt:type='string' required='yes'/>
<ElementType name='name' content='textOnly'/>
<ElementType name='GPA' content='textOnly' dt:type='float'/>
<ElementType name='student' content='mixed'>
<attribute type='studentID'/>
<element type='name'/>
<element type='GPA'/>
</ElementType>
<ElementType name='class' content='eltOnly'>
<element type='student'/>
</ElementType>
</Schema>
Я знаю, что это не рекомендованный W3C формат XSD... Я сталкиваюсь с трудностью, чтобы знать, как читать и делать из него стандартный формат XSD. Я также хочу генерировать классы C# из этого.
Любая помощь будет оценена. Это действительно смутило мое понимание схем XML.
1 ответ
Это схема XDR. Если вы хотите преобразовать этот файл в XML-схему W3C в Windows с установленной платформой.NET или Visual Studio SDK, вы можете использовать xsd.exe
инструмент командной строки т.е. xsd.exe schema.xdr
создаст соответствующий schema.xsd
файл. Тогда вы можете подать заявку xsd.exe
на schema.xsd
создать файлы классов в C# или VB.NET для использования с System.Xml.Serialization.XmlSerializer
,
Когда я запускаю VS 2012 xsd.exe
в вашем примере создается следующая схема W3C XSD:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="class">
<xs:complexType>
<xs:sequence>
<xs:element name="student" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" minOccurs="0" msdata:Ordinal="1" />
<xs:element name="GPA" type="xs:double" minOccurs="0" msdata:Ordinal="2" />
</xs:sequence>
<xs:attribute name="studentID" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>