在学习dataset与xml转换过程中,遇到了一个案例(其xml片段在结尾处),在其xml文件中,添加了xsd的构架信息(也就是xml的内容信息与xsd构架信息写在了一个xml文件中),而网上大部分的xml学习文献都是说xml与xsd文件是各自独立的,很困惑。网上搜集到“写入数据集内容作为 XML 数据”文献,其描述“在 ADO.NET 中可以编写 DataSet 的 XML 表示形式(包含或不包含其架构)。 如果架构信息以内联形式包含在 XML 表示形式中,则使用 XML 架构定义语言 (XSD) 来编写。 架构包含 DataSet 的表定义以及关系和约束定义。”不确认是否在描述xml与xsd合并的情况,请大神指点,或是有相关的详细文献赐教,谢谢
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="串口通讯">
<xs:complexType>
<xs:sequence>
<xs:element name="串口名称" type="xs:string" />
<xs:element name="协议" type="xs:string" />
<xs:element name="波特率" type="xs:integer" default="9600" />
<xs:element name="数据位" type="xs:short" default="8" />
<xs:element name="奇偶校验" type="xs:short" default="0" />
<xs:element name="停止位" type="xs:short" default="1" />
<xs:element name="编码" type="xs:short" default="0" />
<xs:element name="超时" type="xs:integer" default="500" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType>
。。。。。。。。。。。。。
<串口通讯>
<串口名称>COM1</串口名称>
<协议>modbus</协议>
<波特率>9600</波特率>
<数据位>8</数据位>
<奇偶校验>0</奇偶校验>
<停止位>1</停止位>
<编码>0</编码>
<超时>500</超时>
</串口通讯>
内联形式(inline)就是将 xsd(XML Schema Definition) 直接写在 xml 文件中,可以通过下面的代码验证
var dt = new DataTable("串口通讯");
dt.Columns.Add(new DataColumn("串口名称", typeof(string)));
dt.Columns.Add(new DataColumn("协议", typeof(string)));
var row = dt.NewRow();
row["串口名称"] = "COM1";
row["协议"] = "modbus";
dt.Rows.Add(row);
var ds = new DataSet();
ds.Tables.Add(dt);
ds.WriteXml("dataset.xml", XmlWriteMode.WriteSchema);
生成的 dataset.xml 文件内容如下
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
<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="串口通讯">
<xs:complexType>
<xs:sequence>
<xs:element name="串口名称" type="xs:string" minOccurs="0" />
<xs:element name="协议" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<串口通讯>
<串口名称>COM1</串口名称>
<协议>modbus</协议>
</串口通讯>
</NewDataSet>
大神,<xs:element name="串口名称" type="xs:string" minOccurs="0" />中的minOccurs="0"如何去掉呢