Technique

Erreur namespace CII Factur-X : URI obsolète ou mélange UBL/CII — préfixes vs URI

2 min de lecture Par FacturX API

Les préfixes XML sont des placeholders (W3C). Ce qui compte est l'URI : CrossIndustryInvoice:100, ReusableAggregateBusinessInformationEntity:100, etc. Ne pas mélanger UBL (cbc/cac) et CII.

En bref

  • En XML, les préfixes (rsm:, ram:) ne sont que des placeholders liés à des URI — c’est la recommandation W3C.
  • Les préfixes rsm/ram/udt/qdt sont recommandés pour la lisibilité, mais cii: ou factx: peuvent être valides s’ils sont liés aux bonnes URI.
  • Ce qui est faux : URI obsolète (:99, :200), URI mal orthographiée, ou mélange de vocabulaires UBL (cbc:, cac:) et CII.
  • Les URI canoniques pour Factur-X 1.0+ se terminent par :100.
  • Réparable automatiquement par /repair (normalisation des URI standards).

Ce que l’erreur veut dire

Factur-X est une instance du standard CII (Cross-Industry Invoice, UN/CEFACT). La recommandation W3C (Namespaces in XML) est explicite : le préfixe est un placeholder ; ce qui compte, c’est l’association entre le préfixe utilisé et la bonne namespace URI. Un élément foo:CrossIndustryInvoice peut être parfaitement valide si foo est lié à urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100. Les problèmes réels sont : (a) URI incorrecte (obsolète ou mal orthographiée), (b) mélange UBL/CII dans le même document.

Quand cette erreur arrive

Survient quand : (a) URI obsolète (:99 ou :200 au lieu de :100) ; (b) framework qui ré-écrit les namespaces et change les URI ; (c) utilisation accidentelle d’UBL (cbc:, cac:) au lieu de CII ; (d) mauvaise orthographe de l’URI CII.

Exemple XML qui déclenche l’erreur (mauvaise URI + mélange UBL)

<rsm:CrossIndustryInvoice
  xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:99"  <!-- ❌ :99 obsolète -->
  xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"  <!-- ❌ UBL -->
  >
  ...
</rsm:CrossIndustryInvoice>

Exemple XML corrigé (URI standards)

<rsm:CrossIndustryInvoice
  xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100"
  xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"
  xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
  xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:100">
  ...
</rsm:CrossIndustryInvoice>

Correction manuelle

Copier-coller le bloc de namespaces ci-dessus sur l’élément racine <rsm:CrossIndustryInvoice>. Vérifier que chaque URI se termine par :100. Les préfixes standards (rsm, ram, udt, qdt) sont RECOMMANDÉS pour la lisibilité et l’outillage, mais pas imposés par la norme — c’est l’URI qui valide, pas le préfixe. Ne JAMAIS mélanger UBL (cbc:, cac:) et CII dans le même document.

Réparable automatiquement par /repair ?

Oui — l’endpoint /repair corrige automatiquement cette erreur dans la majorité des cas.

Et maintenant ?

Réparer mon Factur-X →

curl -X POST https://api.facturxapi.com/api/v1/repair \
  -H "Authorization: Bearer VOTRE_CLE" \
  -F "[email protected]"

Voir aussi

#en16931 #schematron #factur-x #erreurs #validation