external-entity-resolver

function

Library: Markup utilities (OMMARKUPUTILITIES)
Import : ommarkuputilities.xmd

Returns: markup sink for the entity references to be resolved


Declaration
export dynamic markup sink function
   external-entity-resolver   via value entity-resolver     resolver
                            stack value parsed-entity-stack entity-stack optional
    


Purpose

The markup sink function external-entity-resolver resolves all external entity reference events written to it, and feeds their resolved values to the parser. This function is dynamic and can be overridden. It will throw resolution-failure if it cannot resolve an entity.

The optional entity-stack argument can be supplied to the function in order to keep track of the chain of entities that are currently being read and parsed. This can be useful for error reporting.

Example

The following example uses split-external-text-entities to direct all entity references to external-entity-resolver and all other markup events to the function worker.

  import "ommarkuputilities.xmd" unprefixed
  
  define markup sink function
     worker
  as
     using output as #main-output
     do markup-parse #current-input
        output "%c"
     done
  
  process
     do xml-parse document scan #main-input
        using output as split-external-text-entities (external-entity-resolver via new entity-resolver {},
                                                      worker)
           output #content
     done