bitandblack/idml-validator

Validates IDML files by the official schema from Adobe.

dev-master 2020-02-26 10:46 UTC

This package is auto-updated.

Last update: 2020-03-26 11:00:31 UTC


README

PHP from Packagist Codacy Badge Total Downloads License composer.lock

IDML Validator

Validates IDML files by the official schema from Adobe.

Please note that this library is still under development. That's also the reason why it don't has a version number yet.

Installation

This library is made for the use with Composer. Add it to your project by running $ composer require bitandblack/idml-validator.

Usage

The IDML Validator is mainly meant to be used by CLI. Nevertheless it can also be integrated in a PHP project.

Execute a validation via CLI

Run $ php vendor/bin/idml-validator validate /path/to/file.idml to validate your IDML file.

This will print something like:

Found 3 errors:
┌──────┬───────────────────────── designmap.xml ────────────────────────────────┐
│ Line │ Message                                                                │
├──────┼────────────────────────────────────────────────────────────────────────┤
│ 3    │ Element 'Document', attribute 'DOMVersion': [facet 'enumeration'] The  │
│      │ value '14.0' is not an element of the set {'8.0'}.                     │
├──────┼────────────────────────────────────────────────────────────────────────┤
│ 3    │ Element 'Document', attribute 'DOMVersion': '14.0' is not a valid valu │
│      │ e of the local atomic type.                                            │
├──────┼────────────────────────────────────────────────────────────────────────┤
│ 23   │ Element 'EndnoteOption': This element is not expected. Expected is one │
│      │ of ( TextVariable, {http://ns.adobe.com/AdobeInDesign/idml/1.0/packagi │
│      │ ng}Tags, Layer, {http://ns.adobe.com/AdobeInDesign/idml/1.0/packaging} │
│      │ MasterSpread, {http://ns.adobe.com/AdobeInDesign/idml/1.0/packaging}Sp │
│      │ read, Section, DocumentUser, CrossReferenceFormat, Index, {http://ns.a │
│      │ dobe.com/AdobeInDesign/idml/1.0/packaging}BackingStory ).              │
└──────┴────────────────────────────────────────────────────────────────────────┘

Custom

For an integrated use of the validator, take the Validation class, give it a file and a schema:

<?php

use IDML\Validator\File;
use IDML\Validator\Schema;
use IDML\Validator\Validation;

$validation = new Validation(
    new File('/path/to/file.idml'),
    new Schema()
);

$validation->validate();
$errors = $validation->getErrors();

One problem

A huge problem is that Adobe hasn't updated the schema since InDesign CS6. So every newer function will end in an error, even when it's official possible. We're talking to Adobe and waiting for an answer at the moment. So be careful about the errors and don't mind when you believe a function is possible but throws an error.

Help

If you have any questions feel free to contact us under idml-validator@bitandblack.com.