2017-01-30 5 views
0

this schemaに対してXMLファイルを検証しようとしています。XSDに対する検証でXMLファイルの重複キーが無視される

ファイル内の他の場所から参照されるデータをcontatinsするマスターテーブルセクションがあります。 MasterFile Tableには一意のエントリが含まれているため、xmlファイルの他の場所から参照できるようになっています。

しかし、私は無効な鍵であるべきものを認識することができません。 XMLメモ帳、メモ帳++、XMLツールとEclipseで検証を試みました。 SCHEM上からTaxTableの

定義:

<xs:element name="TaxTable" minOccurs="0"> 
<xs:complexType> 
    <xs:sequence> 
     <xs:element name="TaxTableEntry" maxOccurs="unbounded"> 
      <xs:complexType> 
       <xs:sequence> 
        <xs:element name="TaxType" type="FAIAcodeType"> 
        </xs:element> 
        <xs:element name="Description" type="FAIAlongtextType"> 
        </xs:element> 
        <xs:element name="TaxCodeDetails" maxOccurs="unbounded"> 
         <xs:complexType> 
           <xs:sequence> 
            <xs:element name="TaxCode" type="FAIAcodeType"> 
            </xs:element> 
            <xs:element name="EffectiveDate" type="xs:date" minOccurs="0"> 
            </xs:element> 
            <xs:element name="ExpirationDate" type="xs:date" minOccurs="0"> 
            </xs:element> 
            <xs:element name="Description" type="FAIAlongtextType" minOccurs="0"> 
            </xs:element> 
            <xs:choice minOccurs="0"> 
             <xs:element name="TaxPercentage" type="xs:decimal"> 
             </xs:element> 
             <xs:element name="FlatTaxRate" type="AmountStructure"> 
             </xs:element> 
            </xs:choice> 
            <xs:element name="Country" type="ISOCountryCode"> 
            </xs:element> 
            <xs:element name="Region" type="FAIAcodeType" minOccurs="0"> 
            </xs:element> 
           </xs:sequence> 
         </xs:complexType> 
        </xs:element> 
       </xs:sequence> 
      </xs:complexType> 
     </xs:element> 
    </xs:sequence> 
</xs:complexType> 
</xs:element> 

キーとKeyRef定義:TaxTypeキー拘束を破るべき最小限のXMLファイルの

<xs:key name="KeyTaxType"> 
<xs:selector xpath="MasterFiles/TaxTable/TaxTableEntry"/> 
<xs:field xpath="TaxType"/> 
</xs:key> 

<xs:keyref name="RefRegistrationTaxType" refer="KeyTaxType"> 
<xs:selector xpath="Header/Company/TaxRegistration"/> 
<xs:field xpath="TaxType"/> 
</xs:keyref> 

<xs:keyref name="RefCustomerTaxType" refer="KeyTaxType"> 
<xs:selector xpath="MasterFiles/Customers/Customer/TaxRegistration"/> 
<xs:field xpath="TaxType"/> 
</xs:keyref> 

例が、3で検証します異なるツール。存在しない要素を追加したり、要素の順序を変えたりするとエラーが発生するため、検証はキー以外のすべてに対して機能しますので、少なくとも検証が行われることがわかります。検証の問題のようだということを示すために更新

<?xml version="1.0" encoding="UTF-8"?> 
<xs:AuditFile 
xmlns:xs="urn:OECD:StandardAuditFile-Taxation/2.00" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="urn:OECD:StandardAuditFile-Taxation/2.00 ../../main/resources/FAIA_v_2_01_full.xsd "> 
<xs:Header> 
    <xs:AuditFileVersion>2.0.1</xs:AuditFileVersion> 
    <xs:AuditFileCountry>LU</xs:AuditFileCountry> 
    <xs:AuditFileDateCreated>2001-01-01</xs:AuditFileDateCreated> 
    <xs:SoftwareCompanyName>TestCorp</xs:SoftwareCompanyName> 
    <xs:SoftwareID>Test</xs:SoftwareID> 
    <xs:SoftwareVersion>Test</xs:SoftwareVersion> 
    <xs:Company> 
     <xs:RegistrationNumber>123456</xs:RegistrationNumber> 
     <xs:Name>Test Corporation</xs:Name> 
     <xs:Address> 
      <xs:City>London</xs:City> 
      <xs:PostalCode>123456</xs:PostalCode> 
     </xs:Address> 
     <xs:Contact> 
      <xs:ContactPerson> 
       <xs:FirstName>John</xs:FirstName> 
       <xs:LastName>Doe</xs:LastName> 
      </xs:ContactPerson> 
      <xs:Telephone>45646825</xs:Telephone> 
     </xs:Contact> 
     <xs:TaxRegistration> 
      <xs:TaxRegistrationNumber>LU1234566-78</xs:TaxRegistrationNumber> 
      <xs:TaxType>TVA</xs:TaxType> 
      <xs:TaxNumber>LU1234566-78</xs:TaxNumber> 
     </xs:TaxRegistration> 
    </xs:Company> 
    <xs:DefaultCurrencyCode>EUR</xs:DefaultCurrencyCode> 
    <xs:SelectionCriteria> 
     <xs:TaxReportingJurisdiction>xs:TaxReportingJurisdiction</xs:TaxReportingJurisdiction> 
     <xs:CompanyEntity>xs:CompanyEntity</xs:CompanyEntity> 
     <xs:SelectionStartDate>2015-01-01</xs:SelectionStartDate> 
     <xs:SelectionEndDate>2015-12-31</xs:SelectionEndDate> 
     <xs:DocumentType>xs:DocumentType</xs:DocumentType> 
     <xs:OtherCriteria>First Other Criteria</xs:OtherCriteria> 
     <xs:OtherCriteria>Second Other Criteria</xs:OtherCriteria> 
    </xs:SelectionCriteria> 
    <xs:HeaderComment>xs:HeaderComment</xs:HeaderComment> 
    <xs:TaxAccountingBasis>Invoice Accounting</xs:TaxAccountingBasis> 
    <xs:TaxEntity>xs:TaxEntity</xs:TaxEntity> 
</xs:Header> 
<xs:MasterFiles> 
<xs:TaxTable> 
    <xs:TaxTableEntry> 
     <xs:TaxType>TVA</xs:TaxType> 
     <xs:Description>Taxe sur la valeur ajoutée</xs:Description> 
     <xs:TaxCodeDetails> 
      <xs:TaxCode>1</xs:TaxCode> 
      <xs:EffectiveDate>2010-01-01</xs:EffectiveDate> 
      <xs:Description>LU/01/0/0.00 - TVA sur ventes</xs:Description> 
      <xs:TaxPercentage>0.0</xs:TaxPercentage> 
      <xs:Country>LU</xs:Country> 
     </xs:TaxCodeDetails> 
    </xs:TaxTableEntry> 
    <xs:TaxTableEntry> 
     <xs:TaxType>TVA</xs:TaxType> 
     <xs:Description>Taxe sur la valeur ajoutée</xs:Description> 
     <xs:TaxCodeDetails> 
      <xs:TaxCode>1</xs:TaxCode> 
      <xs:EffectiveDate>2010-01-01</xs:EffectiveDate> 
      <xs:Description>LU/01/0/0.00 - TVA sur ventes</xs:Description> 
      <xs:TaxPercentage>0.0</xs:TaxPercentage> 
      <xs:Country>LU</xs:Country> 
     </xs:TaxCodeDetails> 
    </xs:TaxTableEntry> 
</xs:TaxTable> 
</xs:MasterFiles> 

答えて

0

私の理解は、あなたの記述とは異なっています。要するに

selectorは一意である必要があり、field彼らはユニークなものを選択するもの要素を選択します。

この場合、セレクタはTaxTableEntryのリスト全体を選択し、それぞれのフィールドでTaxTypeを選択します。具体的には、これは、このリスト内(すなわち、リストの各項目内ではなくリスト全体内)であることを意味し、TaxTypeはすべて異なる必要があります。 keyRef sの

、これらの値は明確MasterFile(またはどこでもkey定義を置く)内TaxTableEntryを識別するために、外部キーとして参照することができます。

あなたの側の検証の動作がこれから逸脱している場合は、期待どおりに動作しないXMLインスタンスを自由に共有してください。

+0

私はそれがどのように働いたのか、あるいは少なくともスキーマの作成者がそれが働きたがっていることを仮定しました。私は自分の投稿を編集し、重複した 'TaxType'で検証する例を追加しました。 – johankr

+0

ありがとう!名前空間の束縛のためかもしれないようです。名前空間のバインディングをスキーマファイルから貼り付けることができますか? ( 'xmlns'のようなもの)。ありがとう! –

+0

グーグルがこれが問題の原因になる可能性があると示唆したときに、いくつかの結果が出ました。 これはあなたが気にしていたことですか? xmlns:doc = "urn:schemas-OECD:" ' – johankr

関連する問題