class combine :Combines several resolver objects. If a concrete entity with an?mode:combination_mode -> resolver list ->
resolver
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 identifierclone
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).