我想驗證this schema的XML文件。針對XSD的驗證忽略XML文件中的重複密鑰
有一個主表部分,它包含數據,然後從文件的其他地方引用數據。 MasterFile表應該包含唯一的條目,以便它們可以從xml文件中的其他地方引用。
但是我無法弄清楚什麼應該是無效的鍵。我曾嘗試使用XML工具和Eclipse在XML記事本,Notepad ++中進行驗證。從上述舍姆稅率表的
定義:
<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定義:最小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>
實施例那應該打破TaxType鍵約束,但是這驗證在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>
更新,以表明它似乎是一個驗證問題。
我還假設它是如何工作的,或者至少該架構的創建者希望它如何工作。我編輯了我的帖子並添加了一個用重複的TaxType驗證的例子。 – johankr
謝謝!它看起來可能是因爲命名空間綁定。你能粘貼架構文件中的命名空間綁定嗎? (看起來像'xmlns'的所有東西)。謝謝! –
當谷歌搜索表明這可能是問題的根源的一些結果。 這是你在想什麼? xs:schema xmlns =「urn:OECD:StandardAuditFile-Taxation/2.00」xmlns:xs =「http://www.w3.org/2001/XMLSchema」xmlns:doc =「urn:schemas-OECD: schema-extensions:documentation「targetNamespace =」urn:OECD:StandardAuditFile-Taxation/2.00「elementFormDefault =」qualified「attributeFormDefault =」unqualified「version =」2.00「id =」FAIA-T「>' – johankr