added ksef schema validator

This commit is contained in:
Ralph Soika 2025-11-18 22:15:16 +01:00
parent c232841ed3
commit 53b5f69329
6 changed files with 7673 additions and 1 deletions

View file

@ -172,3 +172,24 @@ The implementation uses `PluginException` for error handling with two error type
- [Upload Invoice](https://ksef-test.mf.gov.pl/docs/v2/index.html#tag/Wysylka-interaktywna/paths/~1api~1v2~1sessions~1online~1%7BreferenceNumber%7D~1invoices/post)
- [Facture Details](https://github.com/CIRFMF/ksef-docs/blob/main/sesja-interaktywna.md#2-wys%C5%82anie-faktury)
- [XML Invoice Example](https://github.com/CIRFMF/ksef-docs/blob/main/faktury/weryfikacja-faktury.md)
# Validate XML
To validate XML results use xmllint. To install run:
```bash
$ sudo apt install libxml2-utils
```
With the bash script `src/test/resources/ksef/validate_xml.sh` you can test a xml file:
```bash
$ ./validate_xml.sh example-invoice-01.xml
```
or to manual test a xml run:
```bash
$ xmllint --noout --schema 'schemat-FA(3)-v1-0E.xsd' example-invoice-01.xml
example-invoice-01.xml validates
```

File diff suppressed because one or more lines are too long

View file

@ -45,7 +45,7 @@
</Podmiot2>
<Fa>
<KodWaluty>PLN</KodWaluty>
<P_1>#invoicing_date#</P_1>
<P_1>2025-07-17</P_1>
<P_1M>Lidzbark</P_1M>
<P_2>FA/GRQMB-#invoice_number#/05/2025</P_2>
<P_6>2025-07-11</P_6>

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,39 @@
#!/bin/bash
# ---------------------------------------------
# validate_xml.sh
# Prüft eine XML-Datei gegen die lokale KSeF XSD
# Nutzung: ./validate_xml.sh example-invoice-01.xml
# ---------------------------------------------
# Prüfen, ob Parameter übergeben wurde
if [ $# -ne 1 ]; then
echo "Usage: $0 <xml-file>"
exit 1
fi
XML_FILE="$1"
XSD_FILE="schemat-FA(3)-v1-0E.xsd"
# Prüfen, ob die XML-Datei existiert
if [ ! -f "$XML_FILE" ]; then
echo "Error: XML file '$XML_FILE' not found."
exit 1
fi
# Prüfen, ob die XSD-Datei existiert
if [ ! -f "$XSD_FILE" ]; then
echo "Error: XSD file '$XSD_FILE' not found."
exit 1
fi
# Validation durchführen
xmllint --noout --schema "$XSD_FILE" "$XML_FILE"
# Return-Code prüfen
if [ $? -eq 0 ]; then
echo "✅ XML '$XML_FILE' is valid!"
else
echo "❌ XML '$XML_FILE' is INVALID!"
exit 2
fi