# Class Pxp_reader.combine

    class combine : ?mode:combination_mode -> resolver list -> resolver

Combines several resolver objects. If a concrete entity with an `ext_id` is to be opened, the combined resolver tries the contained resolvers in turn until a resolver accepts opening the entity (i.e. until a resolver does not raise `Not_competent` on `open_rid`).

If the entity to open has several names, e.g. a public name and a system name, these names are tried in parallel by default. For backward compatibility, the `mode` argument allows one to specify a different order:

- `Public_before_system`: Try first to open as public identifier, and if that fails, fall back to the system identifier
- `System_before_public`: Try first to open as system identifier, and if that fails, fall back to the public identifier

Clones: If the `clone` method is invoked on the combined resolver while it is closed, the effect is that all contained resolvers are cloned and the combination is repeated on the clones. If the `clone` method is invoked while the resolver is open, only the active sub resolver is cloned (i.e. the resolver that accepted the ID in the first place).