2017-09-28 14 views
0

sqlxmlバルクローダーを使用して、巨大なxmlファイルをdbにロードしようとしています。そのためには、スキーマファイルを更新する必要があります。ここでは、スキーマファイルは次のとおりです。xsdスキーマは、ファイルxmlを正しく処理しません。

xsi:schemaLocation="http://www.eagleinvsys.com/2011/EagleML-2-0 eagleml-main-2-0.xsd" 
xsi:type="WarehouseTransactionMessage" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://www.eagleinvsys.com/2011/EagleML-2-0" 
:これらのタグをオフのままならば、それは正常に動作しますが、私はそれを行うの贅沢を持っていけない場合

<?xml version="1.0" ?> 
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:sql="urn:schemas-microsoft-com:mapping-schema" 
      xmlns="http://www.eagleinvsys.com/2011/EagleML-2-0" > 

    <xsd:element name="EagleML" 
       xsi:type="WarehouseTransactionMessage" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

       sql:is-constant="1" > 
    <xsd:complexType > 
     <xsd:sequence> 
    <!--<xsd:element name="header" sql:is-constant="1" /> 
    <xsd:element name="taskIdentifier" sql:is-constant="1" />--> 
    <xsd:element name="warehouseTransaction" sql:is-constant="1"> 
    <xsd:complexType > 
    <xsd:sequence> 
     <xsd:element name="warehouseOpenLot" sql:relation="TEST" > 
      <xsd:complexType> 
      <xsd:sequence> 
       <xsd:element name="accountingBasis" type="xsd:string" /> 
       </xsd:sequence> 
       <!--<xsd:attribute name="accruedLtdBase" type="xsd:decimal" /> 
      <xsd:attribute name="accruedLtdLocal" type="xsd:decimal" />--> 
      <!--<xsd:attribute name="xrateLocalBase" type="xsd:decimal" />--> 
      <!--<xsd:attribute name="buySellFlag" type="xsd:normalizedString" /> 
      <xsd:attribute name="closeTipsIncomeLtdBase" type="xsd:decimal" />--> 
     </xsd:complexType> 
     </xsd:element> 
    </xsd:sequence> 
    </xsd:complexType> 
    </xsd:element> 
     </xsd:sequence> 
    </xsd:complexType> 
    </xsd:element> 
</xsd:schema> 

、ここでは、xmlファイルは

<EagleML 
eaglemlVersion="2-0" 
eaglemlType="WarehouseTransactionMessage" 
eaglemlRevision="263" 
xsi:schemaLocation="http://www.eagleinvsys.com/2011/EagleML-2-0 eagleml-main-2-0.xsd" 
xsi:type="WarehouseTransactionMessage" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://www.eagleinvsys.com/2011/EagleML-2-0" 
> 
    <header> 
    <messageId>B70JFJ55EE9AVXOX</messageId> 
    <sentBy>http://www.eagleinvsys.com/</sentBy> 
    <creationTimestamp>2017-09-25T08:25:54-04:00</creationTimestamp> 
    </header> 
    <taskIdentifier> 
    <correlationId>JFJ55EE9TARJH009</correlationId> 
    <sequenceNumber>1</sequenceNumber> 
    </taskIdentifier> 
    <warehouseTransaction> 
     <header> 
     <objectType>WarehouseOpenLot</objectType> 
     </header> 
     <warehouseOpenLot> 
     <accountingBasis>USTAX</accountingBasis> 
     </warehouseOpenLot> 
     <warehouseOpenLot> 
     <accountingBasis>TESTT</accountingBasis> 
     </warehouseOpenLot> 
    </warehouseTransaction> 
    </EagleML> 

です

私はここで間違っていますか?これらのタグをEagleML要素に移動しようとしましたが、まだどこにもいないようです。誰にもこのエラーが表示されますか?

答えて

0

スキーマは、特定の名前空間のXMLボキャブラリを記述します。スキーマにtargetNamespace属性がない場合は、名前空間のない語彙が記述されます。

インスタンスドキュメントには、ネームスペース宣言xmlns = "http://www.eagleinvsys.com/2011/EagleML-2-0"があり、これはEagleMLとそのすべての子/子孫をその名前空間に入れます。スキーマのtargetNamespace

EagleMLの仕様を知らなくても、それがスキーマか間違っているインスタンス文書かどうかはわかりませんが、一致しないと伝えることができます。最も単純な修正は、targetNamespace属性をxs:schema要素に追加することです。

関連する問題