2016-12-17 7 views
-1

私はSQLXMLBULKLOADLibを使用していますが、追加のネームスペースなしで動作します xmlns="http://schemas.datacontract.org/2004/07/test.test"。追加の名前空間でXSDとバルクロードユーティリティを作成するには?SQLバルクロードで追加の名前空間を持つXMLがロードされない

このXMLは、2番目の名前空間の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> 

スキーマファイル:?xmlbulkloadユーティリティは、データを挿入するように、XSD内の追加の名前空間への参照を追加する方法

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

答えて

1

XMLデータはスキーマに対して検証されません。

xmlドキュメントは、すべての要素を 'http://schemas.datacontract.org/2004/07/test.test'という名前空間に配置しますが、スキーマはtargetnamespaceとして名前空間に存在すると想定していません。

また、 'Customer'のカーディナリティが間違っています(1-1)。スキーマ属性elementFormDefault = "qualified"を設定していない場合、XMLドキュメントの各要素は名前空間で修飾する必要があります。

スキーマに対してXMLデータを有効にするには、スキーマは次のようになります。

enter image description here

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

おかげSprotty。それはまさに私が探していたものでした。 XMLを完全に整理するための最後の明確化が必要です。ありがとうSprotty。 –

+0

それはまさに私が探していたものでした。 XMLを完全に整理するための最後の明確化が必要です。要素に定義されている名前空間をどのように扱うか。 \t \t \t \t [email protected] \t \t \t \t [email protected]: \t

+0

これを得ることができました..最初に参照して2番目のxsdを追加し、これを解決しました。 –

関連する問題