Zum Inhalt springen

Ironfang Finance - Regelreferenz

PEPPOL-EN16931-R008: Leere Elemente aus dem Dokument entfernen

Ein Element hat weder Text noch Kindelemente. Peppol erlaubt keine leeren Elemente: Lassen Sie jedes optionale Element weg, für das Sie keinen Wert haben.

Peppol BIS BillingFehler: Das Dokument ist ungültigKernfelderXML-Eingabe

Auf dieser Seite

Die kurze Antwort

PEPPOL-EN16931-R008 schlägt einmal für jedes Element fehl, das keine Kindelemente und keinen Text außer Leerraum hat. Die Fundstelle ist der Pfad des leeren Elements. Ist der Wert optional und haben Sie ihn nicht, entfernen Sie das Element; ist er Pflicht, geben Sie den Wert an.

Im aufgezeichneten Beispiel ist die optionale Buchungsreferenz des Käufers, cbc:AccountingCost, als öffnendes und schließendes Tag ohne Inhalt dazwischen geschrieben. Ein optionales Element ohne Wert sollte einfach fehlen.

Was die Regel prüft

Die Regel hat keine eigene Bedingung. Sie wählt jedes Element aus, in beliebiger Tiefe und mit beliebigem Namen, das keine Kindelemente hat und dessen Text nach dem Entfernen von Leerraum leer ist, und meldet jedes davon.

All dies wurde im Versuch gemeldet: ein öffnendes und schließendes Tag ohne Inhalt dazwischen, ein selbstschließendes Tag, ein Element nur mit Leerzeichen, Tabulatoren oder Zeilenumbrüchen und ein Element, das nur einen XML-Kommentar enthält.

Attribute zählen nicht als Inhalt. Ein Element mit einem Attribut und ohne Text ist trotzdem leer.

Auch Aggregate zählen. Ein cac:PaymentTerms ohne Kindelemente wird an diesem Element gemeldet. Ein übergeordnetes Element, dessen Kindelemente alle leer sind, wird selbst nicht gemeldet, aber jedes leere Kindelement, sodass ein cac:Contact mit drei leeren Feldern drei Befunde ergibt.

Ein geschütztes Leerzeichen ( ) gilt nicht als Leerraum, daher wird ein Element, das nur dieses Zeichen enthält, nicht gemeldet. Das ist ein Wert aus einem unsichtbaren Zeichen, keine Korrektur.

BegriffBedeutungUBL-Element
-Jedes Element im Dokument, in beliebiger Tiefe//*
BT-19Buchungsreferenz des Käufers (das Element im aufgezeichneten Beispiel)cbc:AccountingCost

Wie es in einer Integration dazu kommt

Mögliche Ursachen, abgeleitet aus der Form der Regel und nicht aus gemessener Nutzung:

  • Der Serialisierer schreibt jedes zugeordnete Feld und macht aus null oder leeren Zeichenketten leere Elemente, statt sie zu überspringen.
  • Eine Vorlage enthält feste optionale Elemente wie cbc:Note, cbc:AccountingCost oder die Kontaktfelder, und sie bleiben leer, wenn die Quelle nichts liefert.
  • Werte werden erst nach der Entscheidung, das Element auszugeben, gekürzt, sodass ein Feld, das nur Leerzeichen enthält, zu einem leeren Element wird.
  • Ein umschließendes Element wie cac:Contact oder cac:PaymentTerms wird immer ausgegeben und seine Kindelemente nur bedingt, sodass eine leere Hülle übrig bleibt.

So korrigieren Sie das Dokument

  1. Ermitteln Sie das Element über die Fundstelle in jedem Befund. Es gibt einen Befund je leerem Element, die Liste ist also vollständig.
  2. Geben Sie ein optionales Element ohne Wert nicht aus. Lassen Sie den Serialisierer null, leere und nur aus Leerraum bestehende Werte grundsätzlich überspringen, nicht Feld für Feld.
  3. Prüfen Sie nach dem Entfernen leerer Kindelemente das übergeordnete Element. Hat es nun keine Kindelemente mehr, entfernen Sie es ebenfalls, sonst wird es zum nächsten gemeldeten leeren Element.
  4. Bei einem Element, das eine andere Regel verlangt, korrigieren Sie die Quelldaten, damit ein echter Wert vorhanden ist. Füllen Sie es nicht mit einem Platzhalter wie einem Strich oder N/A, es sei denn, genau das steht in den Geschäftsdaten.

Korrigierte Rechnung prüfen

Vorher und nachher

Dies sind Ausschnitte, keine vollständigen Dokumente. Die vollständigen synthetischen Dokumente, aus denen sie stammen, sind unten verlinkt.

Ausschnitt der fehlerhaften Rechnung: Die Buchungsreferenz des Käufers ist vorhanden, aber leer

<cbc:DocumentCurrencyCode>GBP</cbc:DocumentCurrencyCode>
<cbc:AccountingCost></cbc:AccountingCost>
<cbc:BuyerReference>BUYER-REF-001</cbc:BuyerReference>

Ausschnitt der korrigierten Rechnung: Das Element trägt einen Wert. Das Element ganz wegzulassen besteht ebenfalls

<cbc:DocumentCurrencyCode>GBP</cbc:DocumentCurrencyCode>
<cbc:AccountingCost>COST-123</cbc:AccountingCost>
<cbc:BuyerReference>BUYER-REF-001</cbc:BuyerReference>

Nur cbc:AccountingCost unterscheidet sich: leer im fehlerhaften Dokument, COST-123 im korrigierten. Das fehlerhafte Dokument meldet nur PEPPOL-EN16931-R008. Das UBL-Schema akzeptiert ein leeres Textelement, und EN 16931 hat keine Regel für dieses optionale Feld, daher bestehen die Prüfschritte XSD und EN 16931 beide.

Was der Validator gemeldet hat

Aufgezeichnet mit phive 12.1.0 / phive-rules-peppol 4.5.6 / Saxon-HE 12.10, der Engine hinter dem kostenlosen Validator, mit synthetischen Daten. Ein aufgezeichnetes Ergebnis ist ein Regressionsnachweis für diese Dokumente, keine Zertifizierung.

Wo die Regel gilt

  • Gilt gleichermaßen für UBL Invoice und CreditNote und für jedes Element im Dokument, auch innerhalb von cac:InvoiceLine oder cac:CreditNoteLine.
  • Manche leeren Elemente kommen nicht so weit. Ein leerer Betrag oder ein leeres Datum etwa scheitert zuerst am XSD-Prüfschritt; die Prüfschritte EN 16931 und Peppol werden dann übersprungen, daher wird diese Regel für sie nicht gemeldet.
  • Ist ein Pflichtelement leer, kommt diese Regel zusammen mit der Regel, die den Wert verlangt. Eine leere cbc:CustomizationID etwa meldet zusätzlich BR-01 und PEPPOL-EN16931-R004.
  • Ein leeres Element ist kein Weg um eine Anwesenheitsregel herum. Eine leere cbc:BuyerReference genügt PEPPOL-EN16931-R003, das nur nach dem Element sucht, wird aber hier gemeldet.

Umfang und Quelle

Geschrieben für Peppol BIS Billing 3.0.21 (May 2026), EN 16931 1.3.16, angewendet auf Invoice- und CreditNote-Dokumente in UBL 2.1. Andere Profile, Syntaxen und Releases können diese Kennung anders definieren. Version des Hinweiskatalogs 2026-09-24.1: Quelle geprüft am 2026-09-24, Erklärung zuletzt aktualisiert am 2026-09-20.

Die offizielle Definition von PEPPOL-EN16931-R008 (auf Englisch) enthält den normativen Wortlaut und den Test. Diese Seite ist unsere Erklärung dazu, keine Kopie.

Die Erklärung ändert das Urteil der Engine nicht. Dass Sie diesen Befund beheben, heißt nicht, dass das Dokument jeden Prüfschritt besteht. Die Validierung bescheinigt keine rechtliche oder steuerliche Konformität und überträgt kein Dokument über Peppol.