XML nie jest poprawnie sformatowany: co poprawić
Co oznacza ten komunikat
Plik nie jest poprawnym dokumentem XML, więc nie da się go odczytać jako faktury. Najczęściej brakuje znacznika zamykającego, znaczniki są zamknięte w złej kolejności albo w nazwie firmy jest znak & zapisany wprost. Walidator zatrzymuje się na tym kroku, więc innych błędów w pliku nie zobaczysz, dopóki tego nie poprawisz.
Dlaczego tak jest
Faktura ustrukturyzowana to plik XML, a XML ma ścisłe zasady zapisu, opisane w specyfikacji W3C. Każdy otwarty znacznik musi zostać zamknięty, znaczniki nie mogą na siebie zachodzić, cały plik ma jeden element główny (Faktura), a znaki < i & w tekście zapisuje się jako < i &. Plik, który łamie którąś z tych zasad, odrzuci każdy program czytający XML, nie tylko KSeF.
Skąd się bierze najczęściej
- Znak
&w nazwie firmy lub opisie towaru, na przykład „Kowalski & Syn”. - Brak znacznika zamykającego po ręcznej edycji pliku.
- Literówka w nazwie znacznika zamykającego. Wielkość liter ma znaczenie:
<Nazwa>nie zamyka się przez</nazwa>. - Pusta linia lub spacja przed deklaracją
<?xml ...?>na początku pliku. - Niewidoczne znaki sterujące wklejone z PDF lub Worda.
- Plik ucięty przy eksporcie albo inny plik (na przykład PDF) z rozszerzeniem
.xml.
Kodowanie znaków zwykle daje inny objaw: zniekształcone polskie litery albo osobny komunikat o kodowaniu innym niż UTF-8, którego wymaga broszura. Te reguły opisaliśmy w artykule o ścisłej walidacji XML w KSeF.
Jak to naprawić
- Otwórz plik w edytorze, który koloruje XML (na przykład VS Code). Nasz komunikat nie wskazuje wiersza, więc szukaj miejsca, w którym kolorowanie się urywa albo przestaje pasować do znaczników.
- Sprawdź też kilka wierszy wyżej: błąd bywa tam, gdzie zaczyna się niezamknięty znacznik.
- Popraw zapis i wrzuć plik ponownie.
<!-- ❌ Znak & zapisany wprost -->
<Nazwa>Kowalski & Syn sp. z o.o.</Nazwa>
<!-- ✅ Znak & jako & -->
<Nazwa>Kowalski & Syn sp. z o.o.</Nazwa>
<!-- ❌ Brak znacznika zamykającego P_7 -->
<FaWiersz>
<NrWierszaFa>1</NrWierszaFa>
<P_7>Sesja zdjęciowa
<P_8A>szt.</P_8A>
</FaWiersz>
<!-- ✅ P_7 zamknięte -->
<FaWiersz>
<NrWierszaFa>1</NrWierszaFa>
<P_7>Sesja zdjęciowa</P_7>
<P_8A>szt.</P_8A>
</FaWiersz>
<!-- ❌ Znaczniki zamknięte w złej kolejności -->
<Adres><KodKraju>PL</Adres></KodKraju>
<!-- ✅ Najpierw zamyka się znacznik otwarty jako ostatni -->
<Adres><KodKraju>PL</KodKraju></Adres>Jeśli plik wygenerował program do faktur, nie poprawiaj go ręcznie przy każdej fakturze. Zgłoś błąd dostawcy programu albo popraw dane źródłowe, na przykład nazwę kontrahenta.
Co dalej
Gdy plik da się już odczytać, walidator sprawdzi go ze schematem FA(3). Najczęstsze błędy na tym etapie opisaliśmy w najczęstszych błędach walidacji FA(3). Po poprawce sprawdź fakturę ponownie.
Sprawdź swoją fakturę
Wrzuć plik XML, a pokażemy, co trzeba poprawić. Twój plik nie opuszcza przeglądarki.
Otwórz walidator