2012-07-18 70 views
0

我有一个巨大的XML文件的完整的员工和信息,并有一个问题。 XML文件的SQLXMLBulkLoad架构验证问题(容易)

例子:

<Employees> 
    <Employee> 
    <EmployeeID>blah</EmployeeID> 
    <FirstName>blah</FirstName> 
    <LastName>blah</LastName> 
    <MiddleName>blah</MiddleName> 
    .......... and on 
    </Employee> 
    ........ and on 
</Employees> 

我的模式,到目前为止是这样的:

<?xml version="1.0" encoding="utf-8"?> 

<xsd:element name="Employees" sql:relation="The_Employees"> 
    <xsd:complexType> 
     <xsd:sequence> 
      <xsd:element name="Employee"> 
       <xsd:element name="EmployeeID" sql:field="EmpNo" type="xsd:integer"/> 
       <xsd:element name="FirstName" sql:field="FirstName"> 
        <xsd:simpleType> 
         <xsd:restriction base="xsd:string"> 
          <xsd:whiteSpace value="collapse"/> 
         </xsd:restriction> 
        </xsd:simpleType> 
       </xsd:element> 
       .......... and on 
      </xsd:element> 
     </xsd:sequence> 
    </xsd:complexType> 
</xsd:element> 

从我的研究中,根元素应该包含关系在数据库的表(为了保密,在这个例子中,名称是“The_Employees”)所以,我做了关系,并且也取得了SQL:字段表中的每一列,因为列名比XML不同元素标签在大多数情况下。但是,在哪些方面我可以将每个<Employee>标签与我的表相关联?此外,同时验证XML,它抛出这个错误:

The content of 'Employee' must match (annotation?, (simpleType | complexType)?, (unique | key | keyref)*)). A problem was found starting at: element.

这似乎是验证在想,我试图分裂内容分成两个单独的表,因此需要注解的是,但我不是。有什么建议么?

仅供参考:这里的最终产品将是它使用SQLXMLBulkLoad从XML文件中的数据加载到一个新的SQL表一个VB.NET程序。

回答

0

好吧...修复很简单,我回答这个问题,从而使他人在未来可能参考。如果有一个根元素以及该根元素下的每个单独的父元素,并且使用批量加载,则可以设置根元素到SQL:是常数= 1这告诉根元素存在的架构,但忽略它。另外,上述模式被ammended到:

<xsd:element name="Employees" sql:is-constant=1> 
<xsd:complexType> 
    <xsd:sequence> 
     <xsd:element name="Employee" sql:relation="The_Employees"> 
      <xsd:complexType> 
      <xsd:sequence> 
      <xsd:element name="EmployeeID" sql:field="EmpNo" type="xsd:integer"/> 
      <xsd:element name="FirstName" sql:field="FirstName"> 
       <xsd:simpleType> 
        <xsd:restriction base="xsd:string"> 
         <xsd:whiteSpace value="collapse"/> 
        </xsd:restriction> 
       </xsd:simpleType> 
      </xsd:element> 
      .......... and on 
      </xsd:sequence> 
      </xsd:complexType> 
     </xsd:element> 
    </xsd:sequence> 
</xsd:complexType>