Skip to content

Validation

Validate XML invoices against XSD schemas and Schematron business rules. Loaded via require "zugpferd/validation" (not included by default).

SchematronValidator

Validates XML against EN 16931 and XRechnung business rules using Saxon HE. Requires Java and the Saxon JARs from bin/setup-schemas.

ruby
require "zugpferd/validation"

validator = Zugpferd::Validation::SchematronValidator.new(
  schemas_path: "vendor/schemas"
)

validate(xml_string, rule_set:) → Array<Result>

Validates XML against a single Schematron rule set.

Parameters:

ParameterTypeDescription
xml_stringStringXML to validate
rule_setSymbol:cen_ubl, :cen_cii, :xrechnung_ubl, or :xrechnung_cii

Returns: Array<Result> — validation errors (empty if valid)

Raises: TransformError if Saxon fails, ArgumentError if XSLT or JAR files are missing

validate_all(xml_string, rule_sets:) → Array<Result>

Validates XML against multiple rule sets and merges the results.

Parameters:

ParameterTypeDescription
xml_stringStringXML to validate
rule_setsArray<Symbol>Rule sets to apply

Returns: Array<Result> — merged validation errors

Result Struct

FieldTypeDescription
idStringBusiness rule ID (e.g. "BR-CO-25", "BR-DE-2")
locationStringXPath location of the error
textStringHuman-readable error description
flagStringSeverity: "fatal" or "warning"

Rule Sets

KeyDescription
:cen_ublEN 16931 rules for UBL
:cen_ciiEN 16931 rules for CII
:xrechnung_ublXRechnung CIUS rules for UBL
:xrechnung_ciiXRechnung CIUS rules for CII

Exceptions

SchematronValidator::TransformError — raised when Saxon fails to execute the XSLT transformation (e.g. Java not installed, malformed XML).

SchemaValidator

Validates XML against XSD schemas using Nokogiri. Does not require Java.

ruby
require "zugpferd/validation"

validator = Zugpferd::Validation::SchemaValidator.new(
  schemas_path: "vendor/schemas"
)

validate(xml_string, schema_key:) → Array<String>

Validates XML against an XSD schema.

Parameters:

ParameterTypeDescription
xml_stringStringXML to validate
schema_keySymbol:ubl_invoice, :ubl_credit_note, or :cii

Returns: Array<String> — error messages (empty if valid)

Schema Keys

KeyXSD
:ubl_invoiceUBL-Invoice-2.1.xsd
:ubl_credit_noteUBL-CreditNote-2.1.xsd
:ciiCrossIndustryInvoice_100pD16B.xsd

Dependencies

ValidatorRequiresInstalled via
SchemaValidatorNokogiri (bundled)gem install zugpferd
SchematronValidatorJava + Saxon HE 12.5bin/setup-schemas

Both validators need the schema files from vendor/schemas/, downloaded via bin/setup-schemas.