如何为以下xml编写xsd?

时间:2010-12-22 07:44:47

标签: xml xsd-validation

   <?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>

这里我为xml生成了xsd,但它不正确。你能帮我生成xml的xsd吗?提前谢谢。

1 个答案:

答案 0 :(得分:2)

只需在此XML文件上运行xsd.exe实用程序(请参阅:MSDN XML Schema Definition Tool),即可获得答案:

<?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>元素,那么你可以让事情变得更容易。