Skip to content

Validation

Parsing is intentionally tolerant. Validation is explicit.

$result = $parser->validate();

foreach ($result['errors'] as $error) {
    printf("ERROR %s: %s\n", $error['code'], $error['message']);
}

foreach ($result['warnings'] as $warning) {
    printf("WARN %s: %s\n", $warning['code'], $warning['message']);
}

Diagnostics cover package references, IDs, page hierarchy, ordering, internal exe-node: links, iDevice runtime availability, iDevice state decoding and expected v4 package files.

Schema validation

Schema validation is optional and uses only a caller-supplied trusted local XSD/DTD.

use Exelearning\Validation\SchemaValidator;

$xsd = $parser->validateSchema('/trusted/ode.xsd');
$dtd = $parser->validateSchema(
    '/trusted/content.dtd',
    SchemaValidator::TYPE_DTD
);

Network loading remains disabled. Do not treat a DTD embedded in an untrusted package as a trusted schema.