The Validator Worker validates tax documents (DTEs) by checking their XML schema compliance and digital signature integrity.
Overview
The Validator Worker provides comprehensive validation for tax documents:
- Schema validation: Ensures XML structure matches DTE schemas
- Signature validation: Verifies digital signature integrity
- Complete validation: Performs all validation checks
Methods
validate
Performs complete validation of a tax document.
source
DocumentBagInterface|XmlDocumentInterface|string
required
The document to validate. Can be a DocumentBag, XmlDocument instance, or XML string.
Returns: void
Throws: ValidatorException if validation fails.
use libredte\lib\Core\Service\ServiceFactory;
$factory = new ServiceFactory();
$documentComponent = $factory->make('billing.document');
$validator = $documentComponent->getValidatorWorker();
// Validate a document bag
$validator->validate($bag);
// Validate from XML string
$validator->validate($xmlString);
validateSchema
Validates the XML schema of a DTE document.
source
DocumentBagInterface|XmlDocumentInterface|string
required
The document to validate. Can be a DocumentBag, XmlDocument instance, or XML string.
Returns: void
Throws: XmlException if schema validation fails.
// Validate only the XML schema
$validator->validateSchema($xmlDocument);
validateSignature
Validates the digital signature of a DTE document.
source
DocumentBagInterface|XmlDocumentInterface|string
required
The document to validate. Can be a DocumentBag, XmlDocument instance, or XML string.
Returns: void
Throws: SignatureException if signature validation fails.
// Validate only the digital signature
$validator->validateSignature($xmlDocument);
Accessing the Validator Worker
Access the Validator Worker through the Document Component:
use libredte\lib\Core\Service\ServiceFactory;
$factory = new ServiceFactory();
$documentComponent = $factory->make('billing.document');
$validator = $documentComponent->getValidatorWorker();
Usage Example
Complete validation workflow:
use libredte\lib\Core\Service\ServiceFactory;
use Derafu\Xml\Exception\XmlException;
use Derafu\Signature\Exception\SignatureException;
use libredte\lib\Core\Package\Billing\Component\Document\Exception\ValidatorException;
$factory = new ServiceFactory();
$documentComponent = $factory->make('billing.document');
$validator = $documentComponent->getValidatorWorker();
// Load XML document
$xmlString = file_get_contents('/path/to/document.xml');
try {
// Perform complete validation
$validator->validate($xmlString);
echo "Document is valid";
} catch (ValidatorException $e) {
echo "Validation failed: " . $e->getMessage();
}
// Or validate specific aspects
try {
$validator->validateSchema($xmlString);
echo "Schema is valid";
} catch (XmlException $e) {
echo "Schema validation failed: " . $e->getMessage();
}
try {
$validator->validateSignature($xmlString);
echo "Signature is valid";
} catch (SignatureException $e) {
echo "Signature validation failed: " . $e->getMessage();
}
Strategy Pattern
The Validator Worker implements StrategiesAwareInterface, allowing different validation strategies for various document types and validation requirements.