我正在使用SQLXMLBULKLOADLib,而下面的工作没有额外的命名空间
xmlns="http://schemas.datacontract.org/2004/07/test.test"
。如何使用额外的命名空间制作XSD和批量加载实用程序?
此XML在没有第二个名称空间xmlns
的情况下正常工作:
<ROOT xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/test.test">
<Customers>
<CustomerID>1111</CustomerID>
<CompanyName>Sean Chai</CompanyName>
<City>NY</City>
</Customers>
<Customers>
<CustomerID>1112</CustomerID>
<CompanyName>Tom Johnston</CompanyName>
<City>LA</City>
</Customers>
</ROOT>
架构文件:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema"
xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<xsd:element name="ROOT" sql:is-constant="1" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Customers" sql:relation="Cust" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="CustomerID" type="xsd:integer" />
<xsd:element name="CompanyName" type="xsd:string" />
<xsd:element name="City" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
如何在XSD中添加对其他命名空间的引用,以便xmlbulkload实用程序插入数据?
答案 0 :(得分:2)
XML数据不会针对架构进行验证。
xml文档将所有元素放入命名空间&#39; http://schemas.datacontract.org/2004/07/test.test&#39;,但架构并不期望它们作为目标名称空间位于命名空间中,因此未设置。
您的基数也是&#39;客户&#39;是错误的(1-1),并且您没有设置schema属性elementFormDefault =&#34; qualified&#34;,如果没有此设置,XML文档中的每个元素都必须使用命名空间进行限定。
因此,为了使您的XML数据对模式有效,您的模式应如下所示。
<?xml version="1.0" encoding="utf-8" ?>
<!-- Created with Liquid XML 2017 Developer Bundle Edition (Trial) 15.0.0.6978 (https://www.liquid-technologies.com) -->
<xsd:schema xmlns:sql="urn:schemas-microsoft-com:mapping-schema"
xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
elementFormDefault="qualified"
targetNamespace="http://schemas.datacontract.org/2004/07/test.test"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="ROOT"
sql:is-constant="1">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Customers"
minOccurs="0"
maxOccurs="unbounded"
sql:relation="Cust">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="CustomerID"
type="xsd:integer"/>
<xsd:element name="CompanyName"
type="xsd:string"/>
<xsd:element name="City"
type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>