Overview | Package | Class | Deprecated | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## com.saxonica.validate
Class SchemaAwareConfiguration

    java.lang.Object
      net.sf.saxon.Configuration
          com.saxonica.validate.SchemaAwareConfiguration

All Implemented Interfaces:
  Serializable, SourceResolver

    public final class SchemaAwareConfiguration

extends Configuration

A subclass of Configuration that defines a schema-aware processor. This contains helper methods invoked both at compile time and at run-time to perform operations that are allowed only in a schema-aware processor; the superclass Configuration contains the dummy versions of these methods used in a non-schema-aware processor. The interface is designed so that the calling classes contain no references to classes that are available only in the schema-aware product.

Applications should avoid using this class directly, and should instead access all the necessary functionality through its superclass, `Configuration`.

See Also:
  Serialized Form

Nested Class Summary
`static class` | `SchemaAwareConfiguration.SurrogateSchema` A SurrogateSchema is a dummy schema object that is stored in the schema cache while the schema for a given namespace is being processed.

Field Summary

Fields inherited from class net.sf.saxon.Configuration
`DO_NOT_RECOVER, JAVA_APPLICATION, RECOVER_SILENTLY, RECOVER_WITH_WARNINGS, XML_SCHEMA, XML10, XML11, XPATH, XQUERY, XSLT`

Constructor Summary
`SchemaAwareConfiguration()`

Method Summary
`void` | `addSchema(PreparedSchema pschema)` Add a schema to the cache
`void` | `addSchemaSource(Source schemaSource, ErrorListener errorListener)` Load a schema, which will be available for use by all subsequent operations using this SchemaAwareConfiguration.
`void` | `addSurrogateSchema(String namespace)` Put a temporary schema marker in the cache, to indicate that a schema for a given namespace is being processed.
`void` | `checkTypeDerivationIsOK(SchemaType derived, SchemaType base, int block)` Check that a type is validly derived from another type, following the rules for the Schema Component Constraint "Is Type Derivation OK (Simple)" (3.14.6) or "Is Type Derivation OK (Complex)" (3.4.6) as appropriate.
`void` | `displayLicenseMessage()` Display a message about the license status
`Receiver` | `getAnnotationStripper(Receiver destination)` Add to a pipeline a receiver that strips all type annotations.
`SchemaDeclaration` | `getAttributeDeclaration(int fingerprint)` Get a global attribute declaration
`Receiver` | `getDocumentValidator(Receiver receiver, String systemId, int validationMode, int stripSpace, SchemaType schemaType)` Get a document-level validator to add to a Receiver pipeline
`SchemaDeclaration` | `getElementDeclaration(int fingerprint)` Get a global element declaration
`SequenceReceiver` | `getElementValidator(SequenceReceiver out, int nameCode, int locationId, SchemaType schemaType, int validation)` Get a Receiver that can be used to validate an element, and that passes the validated element on to a target receiver.
`ErrorListener` | `getErrorListener()` Get the ErrorListener to which errors are reported
`Set` | `getImportedNamespaces()` Get the set of namespaces of imported schemas
`int[]` | `getOccurrenceLimits()` Get the occurrence limits previously set using setOccurrenceLimits (or the default)
`Optimizer` | `getOptimizer()` Factory method to get an Optimizer
`String` | `getProductTitle()` Get a message used to identify this product when a transformation is run using the -t option
`PreparedSchema` | `getSchema(String namespace)` Get a schema from the cache.
`SchemaType` | `getSchemaType(int fingerprint)` Get the top-level schema type with a given fingerprint.
`SchemaURIResolver` | `getSchemaURIResolver()` Get the user-defined SchemaURIResolver for resolving URIs used in "import schema" declarations; if none has been explicitly set, returns the standard schema URI resolver.
`PreparedSchema` | `getSuperSchema()` Get the SuperSchema, containing references to all names defined in all known schemas
`VendorFunctionLibrary` | `getVendorFunctionLibrary()` Get the FunctionLibrary used to bind calls on Saxon-defined extension functions
`boolean` | `isSchemaAvailable(String targetNamespace)` Determine whether the Configuration contains a cached schema for a given target namespace
`boolean` | `isSchemaAware(int language)` Determine if the configuration is schema-aware
`boolean` | `isSealedNamespace(String namespace)` Test whether a schema namespace is sealed.
`Receiver` | `makeEmitter(String clarkName, Controller controller)` Get a configuration-defined output method.
`SchemaCompiler` | `newSchemaCompiler()` Make a SchemaCompiler which can be used to compile schema documents.
`String` | `readInlineSchema(NodeInfo root, String expected, ErrorListener errorListener)` Read an inline schema from a stylesheet
`void` | `readMultipleSchemas(PipelineConfiguration pipe, String baseURI, List schemaLocations, String expected)` Read schemas from a list of schema locations
`String` | `readSchema(PipelineConfiguration pipe, String baseURI, String schemaLocation, String expected)` Read a schema from a given schema location
`void` | `removeSchema(String namespace)` Remove the schema for a given namespace.
`Source` | `resolveSource(Source source, Configuration config)` Implement the SourceResolver interface
`void` | `sealNamespace(String namespace)` Mark a schema namespace as being sealed.
`void` | `setOccurrenceLimits(int minimum, int maximum)` Set the occurrence limits to be used when compiling a finite state automaton.
`void` | `supplyLicenseKey(BufferedReader reader)` This method allows the contents of a license key to be supplied programmatically.
`int` | `validateAttribute(int nameCode, CharSequence value, int validation)` Validate an attribute value (XSLT only)

Methods inherited from class net.sf.saxon.Configuration
`addSchemaSource, areAllNodesUntyped, buildDocument, findExternalObjectModel, getClass, getClassLoader, getCollationURIResolver, getCollectionURIResolver, getConfiguration, getConfigurationProperty, getConversionContext, getDebugger, getDocumentNumberAllocator, getExtensionBinder, getExtensionFunctionFactory, getExternalObjectModels, getHostLanguage, getImplicitTimezone, getInstance, getLocale, getMessageEmitterClass, getModuleURIResolver, getNameChecker, getNamePool, getOutputURIResolver, getPlatform, getRecoveryPolicy, getSchemaValidationMode, getSerializerFactory, getSourceParser, getSourceParserClass, getSourceResolver, getStandardModuleURIResolver, getStripsWhiteSpace, getStyleParser, getStyleParserClass, getSystemURIResolver, getTraceListener, getTreeModel, getTypeHierarchy, getURIResolver, getXMLVersion, isAllowExternalFunctions, isCompileWithTracing, isLazyConstructionMode, isLineNumbering, isMultiThreading, isRetainDTDAttributeTypes, isStripsAllWhiteSpace, isTiming, isTraceExternalFunctions, isValidation, isValidationWarnings, isVersionWarning, isXIncludeAware, makeCollator, makeParser, makePipelineConfiguration, makeSchemaAwareConfiguration, makeSlotManager, makeTraceListener, makeURIResolver, registerExternalObjectModel, reportFatalError, reuseSourceParser, reuseStyleParser, setAllNodesUntyped, setAllowExternalFunctions, setClassLoader, setCollationURIResolver, setCollectionURIResolver, setCompileWithTracing, setConfigurationProperty, setDebugger, setErrorListener, setExtensionBinder, setExtensionFunctionFactory, setHostLanguage, setImplicitTimezone, setLazyConstructionMode, setLineNumbering, setMessageEmitterClass, setModuleURIResolver, setModuleURIResolver, setMultiThreading, setNamePool, setOutputURIResolver, setRecoveryPolicy, setRetainDTDAttributeTypes, setSchemaURIResolver, setSchemaValidationMode, setSerializerFactory, setSourceParserClass, setSourceResolver, setStripsAllWhiteSpace, setStripsWhiteSpace, setStyleParserClass, setTiming, setTraceExternalFunctions, setTraceListener, setTreeModel, setURIResolver, setValidation, setValidationWarnings, setVersionWarning, setXIncludeAware, setXMLVersion`

Methods inherited from class java.lang.Object
`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### SchemaAwareConfiguration

    public SchemaAwareConfiguration()

Method Detail

### supplyLicenseKey

    public void supplyLicenseKey(BufferedReader reader)

  This method allows the contents of a license key to be supplied programmatically. This must be a license file as issued to authorized OEM distributors of Saxon-SA.

  Parameters:
    `reader` - A reader that will be used to read the contents of the license file (for example, a StringReader)
  Throws:
    `IllegalArgumentException` - if the key supplied is not a valid OEM license key

### getProductTitle

    public String getProductTitle()

  Get a message used to identify this product when a transformation is run using the -t option

  Overrides:
    `getProductTitle` in class `Configuration`
  Returns:
    A string containing both the product name and the product version

### isSchemaAware

    public final boolean isSchemaAware(int language)

  Determine if the configuration is schema-aware

  Overrides:
    `isSchemaAware` in class `Configuration`
  Parameters:
    `language` -

### displayLicenseMessage

    public void displayLicenseMessage()

  Display a message about the license status

  Overrides:
    `displayLicenseMessage` in class `Configuration`

### getErrorListener

    public ErrorListener getErrorListener()

  Get the ErrorListener to which errors are reported

  Overrides:
    `getErrorListener` in class `Configuration`
  Returns:
    either the user-supplied error listener, or a system-provided error listener

### newSchemaCompiler

    public SchemaCompiler newSchemaCompiler()

  Make a SchemaCompiler which can be used to compile schema documents. The initial settings of the SchemaCompiler are a snapshot of the settings in the SchemaAwareConfiguration. Other methods in SchemaAwareConfiguration provided for the purpose of compiling schemas are retained for compatibility reasons.

  Returns:
    a new SchemaCompiler object
  Since:
    8.9

### setOccurrenceLimits

    public void setOccurrenceLimits(int minimum,
                                    int maximum)

  Set the occurrence limits to be used when compiling a finite state automaton.

  Parameters:
    `minimum` - The highest value of minOccurs that will be strictly enforced. If the actual value of minOccurs in a schema is higher than this value, it will be treated as if this value had been specified. The default is 100.
    `maximum` - The highest value of maxOccurs that will be strictly enforced. If the actual value of maxOccurs in a schema is higher than this value, it will be treated as if "unbounded" had been specified. The default is 250.

### getOccurrenceLimits

    public int[] getOccurrenceLimits()

  Get the occurrence limits previously set using setOccurrenceLimits (or the default)

  Returns:
    an array of two integers, the minimum occurrence limit and the maximum occurrence limit

### getSchemaURIResolver

    public SchemaURIResolver getSchemaURIResolver()

  Get the user-defined SchemaURIResolver for resolving URIs used in "import schema" declarations; if none has been explicitly set, returns the standard schema URI resolver.

  Overrides:
    `getSchemaURIResolver` in class `Configuration`

### readSchema

    public String readSchema(PipelineConfiguration pipe,
                             String baseURI,
                             String schemaLocation,
                             String expected)
                      throws SchemaException

  Read a schema from a given schema location

  Overrides:
    `readSchema` in class `Configuration`
  Parameters:
    `pipe` -
    `baseURI` - the base URI for resolving relative URIs
    `schemaLocation` - the location "hint" where to find the schema document. Must not be null.
    `expected` - the target namespace expected; null if there is no expectation
  Returns:
    the actual target namespace of the schema
  Throws:
    `SchemaException`

### readMultipleSchemas

    public void readMultipleSchemas(PipelineConfiguration pipe,
                                    String baseURI,
                                    List schemaLocations,
                                    String expected)
                             throws SchemaException

  Read schemas from a list of schema locations

  Overrides:
    `readMultipleSchemas` in class `Configuration`
  Parameters:
    `pipe` -
    `baseURI` - the base URI for resolving relative URIs
    `schemaLocations` - the list of location "hints" where to find the schema document. Must not be null.
    `expected` - the target namespace expected in each of the schema documents; null if there is no expectation
  Throws:
    `SchemaException`

### readInlineSchema

    public String readInlineSchema(NodeInfo root,
                                   String expected,
                                   ErrorListener errorListener)
                            throws SchemaException

  Read an inline schema from a stylesheet

  Overrides:
    `readInlineSchema` in class `Configuration`
  Parameters:
    `root` - the xs:schema element in the stylesheet
    `expected` - the target namespace expected; "" if there is no expectation
    `errorListener` - The destination for error messages. May be null, in which case the errorListener registered with this Configuration is used.
  Returns:
    the actual target namespace of the schema
  Throws:
    `SchemaException`

### addSchemaSource

    public void addSchemaSource(Source schemaSource,
                                ErrorListener errorListener)
                         throws SchemaException

  Load a schema, which will be available for use by all subsequent operations using this SchemaAwareConfiguration.

  Overrides:
    `addSchemaSource` in class `Configuration`
  Parameters:
    `schemaSource` - the JAXP Source object identifying the schema document to be loaded
    `errorListener` - the ErrorListener to be notified of any errors in the schema.
  Throws:
    `SchemaException` - if the schema cannot be read or parsed or if it is invalid

### addSchema

    public void addSchema(PreparedSchema pschema)
                   throws SchemaException

  Add a schema to the cache

  Parameters:
    `pschema` - The schema
  Throws:
    `SchemaException`

### addSurrogateSchema

    public void addSurrogateSchema(String namespace)

  Put a temporary schema marker in the cache, to indicate that a schema for a given namespace is being processed. Used to detect circularities

### getSchema

    public PreparedSchema getSchema(String namespace)

  Get a schema from the cache. Return null if not found.

### isSchemaAvailable

    public boolean isSchemaAvailable(String targetNamespace)

  Determine whether the Configuration contains a cached schema for a given target namespace

  Overrides:
    `isSchemaAvailable` in class `Configuration`
  Parameters:
    `targetNamespace` - the target namespace of the schema being sought (supply "" for the unnamed namespace)
  Returns:
    true if the schema for this namespace is available, false if not.

### removeSchema

    public void removeSchema(String namespace)

  Remove the schema for a given namespace. This is done if it is found to be invalid

### getImportedNamespaces

    public Set getImportedNamespaces()

  Get the set of namespaces of imported schemas

  Overrides:
    `getImportedNamespaces` in class `Configuration`

### getSuperSchema

    public PreparedSchema getSuperSchema()

  Get the SuperSchema, containing references to all names defined in all known schemas

### sealNamespace

    public void sealNamespace(String namespace)

  Mark a schema namespace as being sealed. This is done when components from this namespace are first used for validating a source document or compiling a source document or query. Once a namespace has been sealed, it is not permitted to change the schema components in that namespace by redefining them, deriving new types by extension, or adding to their substitution groups.

  Overrides:
    `sealNamespace` in class `Configuration`
  Parameters:
    `namespace` - the namespace URI of the components to be sealed

### isSealedNamespace

    public boolean isSealedNamespace(String namespace)

  Test whether a schema namespace is sealed. Once a namespace has been sealed, it is not permitted to change the schema components in that namespace by redefining them, deriving new types by extension, or adding to their substitution groups.

  Parameters:
    `namespace` - the namespace URI of the components to be tested
  Returns:
    true if this namespace has been sealed, otherwise false

### getElementDeclaration

    public SchemaDeclaration getElementDeclaration(int fingerprint)

  Get a global element declaration

  Overrides:
    `getElementDeclaration` in class `Configuration`
  Returns:
    the element declaration whose name matches the given fingerprint, or null if no element declaration with this name has been registered.

### getAttributeDeclaration

    public SchemaDeclaration getAttributeDeclaration(int fingerprint)

  Get a global attribute declaration

  Overrides:
    `getAttributeDeclaration` in class `Configuration`
  Returns:
    the attribute declaration whose name matches the given fingerprint, or null if no element declaration with this name has been registered.

### getSchemaType

    public SchemaType getSchemaType(int fingerprint)

  Get the top-level schema type with a given fingerprint.

  Overrides:
    `getSchemaType` in class `Configuration`
  Parameters:
    `fingerprint` - the fingerprint of the schema type
  Returns:
    the schema type , or null if there is none with this name.

### checkTypeDerivationIsOK

    public void checkTypeDerivationIsOK(SchemaType derived,
                                        SchemaType base,
                                        int block)
                                 throws SchemaException

  Check that a type is validly derived from another type, following the rules for the Schema Component Constraint "Is Type Derivation OK (Simple)" (3.14.6) or "Is Type Derivation OK (Complex)" (3.4.6) as appropriate.

  Overrides:
    `checkTypeDerivationIsOK` in class `Configuration`
  Parameters:
    `derived` - the derived type
    `base` - the base type; the algorithm tests whether derivation from this type is permitted
    `block` - the derivations that are blocked by the relevant element declaration
  Throws:
    `SchemaException` - if the derivation is not allowed

### getDocumentValidator

    public Receiver getDocumentValidator(Receiver receiver,
                                         String systemId,
                                         int validationMode,
                                         int stripSpace,
                                         SchemaType schemaType)

  Get a document-level validator to add to a Receiver pipeline

  Overrides:
    `getDocumentValidator` in class `Configuration`
  Parameters:
    `receiver` - The receiver to which events should be sent after validation
    `systemId` - the base URI of the document being validated
    `validationMode` - for example Validation.STRICT or Validation.STRIP. The integer may also have the bit Validation.VALIDATE_OUTPUT set, indicating that the stream being validated is to be treated as a final output stream (which means multiple errors can be reported)
    `stripSpace` - if set to Whitespace.IGNORABLE, causes whitespace in element-only content to be stripped after validation. Default is taken from the Configuration settings.
    `schemaType` - The type against which the outermost element of the document must be validated (null if there is no constraint)
  Returns:
    A Receiver to which events can be sent for validation

### getElementValidator

    public SequenceReceiver getElementValidator(SequenceReceiver out,
                                                int nameCode,
                                                int locationId,
                                                SchemaType schemaType,
                                                int validation)
                                         throws XPathException

  Get a Receiver that can be used to validate an element, and that passes the validated element on to a target receiver. If validation is not supported, the returned receiver will be the target receiver.

  Overrides:
    `getElementValidator` in class `Configuration`
  Parameters:
    `out` - the target receiver to receive the validated element
    `nameCode` - the nameCode of the element to be validated. This should be set to -1 if validation against a specific type is required (in which case schemaType must not be null). Otherwise, the namecode must correspond to the name of an element declaration in a loaded schema
    `locationId` - identifies the location of the element within its source document (or, if preferred, the location of the instruction requesting validation)
    `schemaType` - the schema type (typically a complex type) against which the element is to be validated. Supply null if there are no constraints, that is, if validation is to start from the element declaration.
    `validation` - The validation mode, for example Validation.STRICT or Validation.LAX
  Returns:
    The newly created receiver, which performs the validation and passes the validated elements on to the target receiver.
  Throws:
    `XPathException`

### validateAttribute

    public int validateAttribute(int nameCode,
                                 CharSequence value,
                                 int validation)
                          throws ValidationException

  Validate an attribute value (XSLT only)

  Overrides:
    `validateAttribute` in class `Configuration`
  Parameters:
    `nameCode` - the name of the attribute
    `value` - the value of the attribute as a string
    `validation` - STRICT or LAX
  Returns:
    an int, containing the type annotation to apply to the attribute node
  Throws:
    `ValidationException` - if the value is invalid

### getAnnotationStripper

    public Receiver getAnnotationStripper(Receiver destination)

  Add to a pipeline a receiver that strips all type annotations. This has a null implementation in the Saxon-B product, because type annotations can never arise.

  Overrides:
    `getAnnotationStripper` in class `Configuration`

### getVendorFunctionLibrary

    public VendorFunctionLibrary getVendorFunctionLibrary()

  Get the FunctionLibrary used to bind calls on Saxon-defined extension functions

  Overrides:
    `getVendorFunctionLibrary` in class `Configuration`

### getOptimizer

    public Optimizer getOptimizer()

  Factory method to get an Optimizer

  Overrides:
    `getOptimizer` in class `Configuration`

### resolveSource

    public Source resolveSource(Source source,
                                Configuration config)
                         throws XPathException

  Implement the SourceResolver interface

  Specified by:
    `resolveSource` in interface `SourceResolver`
  Overrides:
    `resolveSource` in class `Configuration`
  Parameters:
    `source` - A source object, typically the source supplied as the first argument to `Transformer.transform(javax.xml.transform.Source, javax.xml.transform.Result)` or similar methods.
    `config` - The Configuration. This provides the SourceResolver with access to configuration information; it also allows the SourceResolver to invoke the resolveSource() method on the Configuration object as a fallback implementation.
  Returns:
    a source object that Saxon knows how to process. This must be an instance of one of the classes StreamSource, SAXSource, DOMSource, `AugmentedSource`, `NodeInfo`, or `PullSource`. Return null if the Source object is not recognized
  Throws:
    `XPathException` - if the Source object is recognized but cannot be processed

### makeEmitter

    public Receiver makeEmitter(String clarkName,
                                Controller controller)
                         throws XPathException

  Get a configuration-defined output method.

  Overrides:
    `makeEmitter` in class `Configuration`
  Returns:
    a Receiver that implements the method, or null if the method URI is not recognized
  Throws:
    `XPathException`

Overview | Package | Class | Deprecated | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright (C) Michael H. Kay. All rights reserved.