Package com.saxonica.ee.schema

## Class SchemaModelLoader

- java.lang.Object
- - net.sf.saxon.event.SequenceReceiver
  - - net.sf.saxon.event.ProxyReceiver
    - - com.saxonica.ee.schema.SchemaModelLoader

- All Implemented Interfaces:
    `javax.xml.transform.Result`, `Receiver`

      public class SchemaModelLoader
      extends ProxyReceiver

  This class allows a compiled schema model in SCM format to be loaded into memory. At present the data is accepted without validation.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `class` | `SchemaModelLoader.AlternativeTypeHandler` | Handle an alternative type for an element declaration
    `class` | `SchemaModelLoader.IdentityConstraintHandler` | Handle an identity constraint (key, keyref, unique)
    `class` | `SchemaModelLoader.SelectorHandler` | Handle a selector or field within an identity constraint (key, keyref, unique)
    `class` | `SchemaModelLoader.SubstitutionGroupAffiliationHandler` | Handle a substitution group affiliation

  - ### Field Summary

    - ### Fields inherited from class net.sf.saxon.event.ProxyReceiver

      `nextReceiver`

    - ### Fields inherited from class net.sf.saxon.event.SequenceReceiver

      `pipelineConfiguration, previousAtomic, systemId`

    - ### Fields inherited from interface javax.xml.transform.Result

      `PI_DISABLE_OUTPUT_ESCAPING, PI_ENABLE_OUTPUT_ESCAPING`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `SchemaModelLoader​(Configuration config)` | Create a schema model loader

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `characters​(java.lang.CharSequence chars, Location locationId, int properties)` | Character data
    `void` | `endElement()` | End of element
    `PreparedSchema` | `load​(javax.xml.transform.Source source)` | Load a schema from a serialized component model
    `int` | `parseFinalOrBlock​(java.lang.String attrName, java.lang.String finalValue, int allowed)` | Parse a list of blocked or final derivations.
    `void` | `startElement​(NodeName elemName, SchemaType type, AttributeMap attributes, NamespaceMap namespaces, Location location, int properties)` | Notify the start of an element

    - ### Methods inherited from class net.sf.saxon.event.ProxyReceiver

      `append, close, comment, endDocument, getNamePool, getNextReceiver, open, processingInstruction, setPipelineConfiguration, setSystemId, setUnderlyingReceiver, setUnparsedEntity, startDocument, usesTypeAnnotations`

    - ### Methods inherited from class net.sf.saxon.event.SequenceReceiver

      `append, decompose, flatten, getConfiguration, getErrorCodeForDecomposingFunctionItems, getPipelineConfiguration, getSystemId, handlesAppend`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### SchemaModelLoader

          public SchemaModelLoader​(Configuration config)

      Create a schema model loader
      Parameters:
        `config` - the Saxon configuration. This must be a schema-aware configuration. This SchemaModelLoader creates a PreparedSchema but does not directly load it into the Configuration cache; that is the job of the caller.
      Throws:
        `java.lang.IllegalArgumentException` - if the configuration is not schema-aware

  - ### Method Detail

    - #### load

          public PreparedSchema load​(javax.xml.transform.Source source)
                              throws XPathException

      Load a schema from a serialized component model
      Parameters:
        `source` - the XML source of the serialized component model
      Returns:
        the corresponding PreparedSchema containing the deserialized schema components
      Throws:
        `XPathException` - if an error occurs

    - #### startElement

          public void startElement​(NodeName elemName,
                                   SchemaType type,
                                   AttributeMap attributes,
                                   NamespaceMap namespaces,
                                   Location location,
                                   int properties)
                            throws XPathException

      Notify the start of an element
      Specified by:
        `startElement` in interface `Receiver`
      Overrides:
        `startElement` in class `ProxyReceiver`
      Parameters:
        `elemName` - the name of the element.
        `type` - the type annotation of the element.
        `attributes` - the attributes of this element
        `namespaces` - the in-scope namespaces of this element: generally this is all the in-scope namespaces, without relying on inheriting namespaces from parent elements
        `location` - an object providing information about the module, line, and column where the node originated
        `properties` - bit-significant properties of the element node. If there are no relevant properties, zero is supplied. The definitions of the bits are in class `ReceiverOption`
      Throws:
        `XPathException` - if an error occurs

    - #### characters

          public void characters​(java.lang.CharSequence chars,
                                 Location locationId,
                                 int properties)
                          throws XPathException

      Character data
      Specified by:
        `characters` in interface `Receiver`
      Overrides:
        `characters` in class `ProxyReceiver`
      Parameters:
        `chars` - The characters
        `locationId` - provides information such as line number and system ID.
        `properties` - Bit significant value. The following bits are defined:
        DISABLE_ESCAPING
          Disable escaping for this text node
        USE_CDATA
          Output as a CDATA section
      Throws:
        `XPathException` - if an error occurs

    - #### endElement

          public void endElement()
                          throws XPathException

      End of element
      Specified by:
        `endElement` in interface `Receiver`
      Overrides:
        `endElement` in class `ProxyReceiver`
      Throws:
        `XPathException` - if an error occurs

    - #### parseFinalOrBlock

          public int parseFinalOrBlock​(java.lang.String attrName,
                                       java.lang.String finalValue,
                                       int allowed)
                                throws SchemaException

      Parse a list of blocked or final derivations. Used to process the block, final, blockDefault, and finalDefault attributes.
      Parameters:
        `attrName` - the attribute name (block or final)
        `finalValue` - A list of values to be parsed, as a string, for example "extension restriction"
        `allowed` - The permitted values, as a bit-significant integer. For example the value (DERIVE_BY_EXTENSION | DERIVE_BY_RESTRICTION) allows the values "extension" and "restriction" to appear.
      Returns:
        The final/blocked values, as a bit-significant integer
      Throws:
        `SchemaException` - if a failure occurs