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.
| Begriff | Bedeutung | UBL-Element |
|---|---|---|
| - | Jedes Element im Dokument, in beliebiger Tiefe | //* |
| BT-19 | Buchungsreferenz 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:AccountingCostoder 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:Contactodercac:PaymentTermswird immer ausgegeben und seine Kindelemente nur bedingt, sodass eine leere Hülle übrig bleibt.
So korrigieren Sie das Dokument
- Ermitteln Sie das Element über die Fundstelle in jedem Befund. Es gibt einen Befund je leerem Element, die Liste ist also vollständig.
- 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.
- 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.
- 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.
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
- Die fehlerhafte Rechnung meldet PEPPOL-EN16931-R008. Das korrigierte Dokument besteht jeden Prüfschritt ohne Befunde.Fehlerhaftes XML herunterladenKorrigiertes XML herunterladen
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
InvoiceundCreditNoteund für jedes Element im Dokument, auch innerhalb voncac:InvoiceLineodercac: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:CustomizationIDetwa meldet zusätzlichBR-01undPEPPOL-EN16931-R004. - Ein leeres Element ist kein Weg um eine Anwesenheitsregel herum. Eine leere
cbc:BuyerReferencegenügtPEPPOL-EN16931-R003, das nur nach dem Element sucht, wird aber hier gemeldet.
Verwandte Regeln
- PEPPOL-EN16931-R003 verlangt eine Käuferreferenz oder Bestellreferenz, die nicht als leeres Element geliefert werden darf
- BR-01 wird zusammen mit dieser Regel gemeldet, wenn die Spezifikationskennung leer ist
- PEPPOL-EN16931-R004 wird ebenfalls gemeldet, wenn die Spezifikationskennung leer ist
- FW-XML-001 behandelt den anderen Fall, in dem das XML selbst nicht geparst werden kann
- Alle Regeln der Referenz ansehen
- Hintergrund (auf Englisch): How Peppol invoice validation actually works
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.

