Hello,
We are trying to create a valid UBL xml file, but the header of IFS is not right. We use
https://einvoicevalidator.com/
The IFS standard output contains urn:ifs:Invoice:1.0
<Invoice xmlns="urn:ifs:Invoice:1.0" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:cac="urn:ifs:CommonAggregateComponents:1.0" xmlns:iue="urn:ifs:ExtensionComponent:1.0" xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2">The French UBL should have this form: it only contains urn:oasis:
<Invoice
xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2">
So how can we change this value in UBL 2.1 generation
The error message:
Element '{urn:ifs:Invoice:1.0}Invoice': No matching global declaration available for the validation root.
means that the XML validator cannot find a matching global element declaration for the <Invoice> root element in the specified namespace urn:ifs:Invoice:1.0 within the XSD schema(s) used for validation.
Explanation and context
- The XML root element is declared with the namespace
urn:ifs:Invoice:1.0, like this:<Invoice xmlns="urn:ifs:Invoice:1.0" ... > - But the validator attempts to validate the "Invoice" element according to a schema that defines
"Invoice"in another namespace (commonly, in UBL 2.1, the expected Invoice namespace isurn:oasis:names:specification:ubl:schema:xsd:Invoice-2). - Since your XML uses a custom or different namespace (
urn:ifs:Invoice:1.0), the validator can't find the XSD schema that declares an<Invoice>element in that namespace. - Therefore, it reports no matching global declaration available for the root element.
What might cause this?
- Namespace mismatch: Your XML uses a custom or proprietary namespace (
urn:ifs:Invoice:1.0) instead of the standard UBL 2.1 namespace for Invoice documents. - Missing or wrong schema: The schema file(s) you use for validation do not include declarations for
"urn:ifs:Invoice:1.0"namespace or the corresponding Invoice element. - Incorrect schema references: You might be validating with the UBL 2.1 schemas but your XML file uses a different namespace and therefore does not match.
How to fix or investigate further?
- Confirm the standard to use:
If your invoice XML is intended to be UBL 2.1, the root element should use the namespace:xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" - Use the correct schemas:
Make sure you validate your XML against the schema(s) matching the namespace you declare. - If you use a custom or IFS namespace (like
urn:ifs:Invoice:1.0):
You need the corresponding XSD schemas that define the elements for that namespace. - Check schema association in your validator:
The schema locations or XML schema hints must point to the correct XSD documents that define Invoice inurn:ifs:Invoice:1.0.
Summary
- The error means the validator does not recognize the custom namespace
urn:ifs:Invoice:1.0for the<Invoice>root element. - Use the correct namespace and schemas matching your XML, or provide the custom IFS schemas if using a proprietary format.
- For UBL 2.1 invoicing, the namespace should be
urn:oasis:names:specification:ubl:schema:xsd:Invoice-2.
We manually modified the XML File by replacing the above and the result :
Étapes de validation :
Structure XML:✓ Valide
Schéma XSD UBL 2.1:✓ Valide
But we still have errors for the content:
Mention légale #PMT# manquante (conditions de paiement)
BR-FR-05
Mention légale #PMD# manquante (pénalités de retard)
BR-FR-05
Mention légale #AAB# manquante (escompte)
BR-FR-05