← Înapoi la dicționar
xsd-element-not-allowed Fatal Erori de schemă XSD

Element prezent în pozitie greșită (ordinea XML)

Referință: XML Schema Part 1, §3.4

Ce înseamnă

UBL 2.1 definește o ordine strictă pentru elementele copil ale fiecărui container. Dacă pui un element corect dar în poziție greșită — de exemplu <cac:LegalMonetaryTotal> înainte de <cac:TaxTotal> — validatorul XSD respinge XML-ul.

Mesajele tipice variază în funcție de parser:

cvc-complex-type.2.4.d: Invalid content was found starting with element ...
Element '{...}LegalMonetaryTotal': This element is not expected.

De ce contează ordinea

UBL folosește xsd:sequence în schemă, nu xsd:all — asta înseamnă că elementele trebuie să apară fix în ordinea declarată. E o particularitate a XSD-ului care surprinde mulți dezvoltatori (HTML, JSON și majoritatea formatelor moderne nu impun ordine).

Cum se rezolvă

  1. Compară XML-ul tău cu un exemplu valid (vezi mai jos) și mută elementele în ordinea așteptată
  2. Verifică schema UBL-Invoice-2.1.xsd sau UBL-CreditNote-2.1.xsd pentru ordinea exactă a <xsd:sequence>
  3. Generatoarele de XML (cum ar fi Factureanu) respectă automat ordinea — majoritatea problemelor de ordonare apar la XML scrise manual sau compuse de scripturi care nu cunosc schema

Ordinea de nivel superior pentru Invoice

cbc:UBLVersionID
cbc:CustomizationID
cbc:ProfileID
cbc:ID
cbc:IssueDate
cbc:DueDate
cbc:InvoiceTypeCode
cbc:Note
cbc:DocumentCurrencyCode
cac:OrderReference                    (opțional)
cac:BillingReference                  (obligatoriu pentru CreditNote)
cac:AccountingSupplierParty
cac:AccountingCustomerParty
cac:PaymentMeans
cac:PaymentTerms
cac:AllowanceCharge
cac:TaxTotal
cac:LegalMonetaryTotal
cac:InvoiceLine                       (1..n)

Pentru CreditNote, înlocuiește InvoiceTypeCode cu CreditNoteTypeCode și InvoiceLine cu CreditNoteLine. BillingReference devine obligatoriu.

Verifică dacă XML-ul tău are această eroare

Încărcăm fișierul, rulăm aceleași reguli EN16931 pe care le folosește ANAF și îți arătăm toate codurile găsite.

Validează gratuit