net.sf.saxon.s9api

## Class SchemaValidator

- java.lang.Object
- - net.sf.saxon.s9api.SchemaValidator

- All Implemented Interfaces:
    Destination

      public class SchemaValidator
      extends Object
      implements Destination

  A `SchemaValidator` is an object that is used for validating instance documents against a schema. The schema consists of the collection of schema components that are available within the schema cache maintained by the SchemaManager, together with any additional schema components located during the course of validation by means of an xsl:schemaLocation or xsi:noNamespaceSchemaLocation attribute within the instance document.

  If validation fails, an exception is thrown. If validation succeeds, the validated document can optionally be written to a specified destination. This will be a copy of the original document, augmented with default values for absent elements and attributes, and carrying type annotations derived from the schema processing. Expansion of defaults can be suppressed by means of the method `setExpandAttributeDefaults(boolean)`.

  A `SchemaValidator` is serially resuable but not thread-safe. That is, it should normally be used in the thread where it is created, but it can be used more than once, to validate multiple input documents.

  A `SchemaValidator` is a `Destination`, which allows it to receive the output of a query or transformation to be validated.

  Saxon does not deliver the full PSVI as described in the XML schema specifications, only the subset of the PSVI properties featured in the XDM data model.

- - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `SchemaValidator(Configuration config)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `close()` Close the destination, allowing resources to be released.
    `protected ValidationParams` | `convertParams(GlobalParameterSet suppliedParams, Collection<GlobalParam> declaredParams)`
    `Destination` | `getDestination()` Get the Destination that will receive the validated document.
    `QName` | `getDocumentElementName()` Get the name of the required top-level element of the document to be validated.
    `protected SchemaType` | `getDocumentElementType()` Get the schema type against which the document element is to be validated
    `QName` | `getDocumentElementTypeName()` Get the name of the required type of the top-level element of the document to be validated.
    `ErrorListener` | `getErrorListener()` Get the ErrorListener being used while validating instance documents
    `XdmValue` | `getParameter(QName name)` Get the value that has been set for a schema parameter (a parameter defined in the schema using the `saxon:param` extension)
    `Receiver` | `getReceiver(Configuration config)` Return a Receiver.
    `boolean` | `isExpandAttributeDefaults()` Ask whether attribute defaults defined in a schema are to be expanded or not (by default, fixed and default attribute values are expanded, that is, they are inserted into the document during validation as if they were present in the instance being validated)
    `boolean` | `isLax()` Ask whether validation is to be in lax mode.
    `boolean` | `isUseXsiSchemaLocation()` Ask whether the schema processor is to take account of any xsi:schemaLocation and xsi:noNamespaceSchemaLocation attributes encountered while validating an instance document
    `void` | `setDestination(Destination destination)` Set the Destination to receive the validated document.
    `void` | `setDocumentElementName(QName name)` Set the name of the required top-level element of the document to be validated (that is, the name of the outermost element of the document).
    `void` | `setDocumentElementTypeName(QName name)` Set the name of the required type of the top-level element of the document to be validated.
    `void` | `setErrorListener(ErrorListener listener)` Set the ErrorListener to be used while validating instance documents.
    `void` | `setExpandAttributeDefaults(boolean expand)` Set whether attribute defaults defined in a schema are to be expanded or not (by default, fixed and default attribute values are expanded, that is, they are inserted into the document during validation as if they were present in the instance being validated)
    `void` | `setLax(boolean lax)` The validation mode may be either strict or lax.
    `void` | `setParameter(QName name, XdmValue value)` Set the value of a schema parameter (a parameter defined in the schema using the `saxon:param` extension)
    `void` | `setUseXsiSchemaLocation(boolean recognize)` Say whether the schema processor is to take account of any xsi:schemaLocation and xsi:noNamespaceSchemaLocation attributes encountered while validating an instance document
    `void` | `validate(Source source)` Validate an instance document supplied as a Source object

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

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

- - ### Constructor Detail

    - #### SchemaValidator

          protected SchemaValidator(Configuration config)

  - ### Method Detail

    - #### setLax

          public void setLax(boolean lax)

      The validation mode may be either strict or lax. The default is strict; this method may be called to indicate that lax validation is required. With strict validation, validation fails if no element declaration can be located for the outermost element. With lax validation, the absence of an element declaration results in the content being considered valid.
      Parameters:
        `lax` - true if validation is to be lax, false if it is to be strict

    - #### isLax

          public boolean isLax()

      Ask whether validation is to be in lax mode.
      Returns:
        true if validation is to be in lax mode, false if it is to be in strict mode.

    - #### setErrorListener

          public void setErrorListener(ErrorListener listener)

      Set the ErrorListener to be used while validating instance documents.
      Parameters:
        `listener` - The error listener to be used. This is notified of all errors detected during the validation episode.

    - #### getErrorListener

          public ErrorListener getErrorListener()

      Get the ErrorListener being used while validating instance documents
      Returns:
        listener The error listener in use. This is notified of all errors detected during the validation episode. Returns null if no user-supplied ErrorListener has been set.

    - #### setUseXsiSchemaLocation

          public void setUseXsiSchemaLocation(boolean recognize)

      Say whether the schema processor is to take account of any xsi:schemaLocation and xsi:noNamespaceSchemaLocation attributes encountered while validating an instance document
      Parameters:
        `recognize` - true if these two attributes are to be recognized; false if they are to be ignored. Default is true.

    - #### isUseXsiSchemaLocation

          public boolean isUseXsiSchemaLocation()

      Ask whether the schema processor is to take account of any xsi:schemaLocation and xsi:noNamespaceSchemaLocation attributes encountered while validating an instance document
      Returns:
        true if these two attributes are to be recognized; false if they are to be ignored. Default is true.

    - #### setDestination

          public void setDestination(Destination destination)

      Set the Destination to receive the validated document. If no destination is supplied, the validated document is discarded.
      Parameters:
        `destination` - the destination to receive the validated document

    - #### getDestination

          public Destination getDestination()

      Get the Destination that will receive the validated document. Return null if no destination has been set.
      Returns:
        the destination to receive the validated document, or null if none has been supplied

    - #### setDocumentElementName

          public void setDocumentElementName(QName name)

      Set the name of the required top-level element of the document to be validated (that is, the name of the outermost element of the document). If no value is supplied, there is no constraint on the required element name
      Parameters:
        `name` - the name of the document element, as a QName; or null to remove a previously-specified value.

    - #### getDocumentElementName

          public QName getDocumentElementName()

      Get the name of the required top-level element of the document to be validated.
      Returns:
        the name of the required document element, or null if no value has been set.

    - #### setDocumentElementTypeName

          public void setDocumentElementTypeName(QName name)
                                          throws SaxonApiException

      Set the name of the required type of the top-level element of the document to be validated. If no value is supplied, there is no constraint on the required type
      Parameters:
        `name` - the name of the type of the document element, as a QName; or null to remove a previously-specified value. This must be the name of a type in the schema (typically but not necessarily a complex type).
      Throws:
        `SaxonApiException` - if there is no known type with this name

    - #### getDocumentElementTypeName

          public QName getDocumentElementTypeName()

      Get the name of the required type of the top-level element of the document to be validated.
      Returns:
        the name of the required type of the document element, or null if no value has been set.

    - #### getDocumentElementType

          protected SchemaType getDocumentElementType()

      Get the schema type against which the document element is to be validated
      Returns:
        the schema type

    - #### setExpandAttributeDefaults

          public void setExpandAttributeDefaults(boolean expand)

      Set whether attribute defaults defined in a schema are to be expanded or not (by default, fixed and default attribute values are expanded, that is, they are inserted into the document during validation as if they were present in the instance being validated)
      Parameters:
        `expand` - true if defaults are to be expanded, false if not

    - #### isExpandAttributeDefaults

          public boolean isExpandAttributeDefaults()

      Ask whether attribute defaults defined in a schema are to be expanded or not (by default, fixed and default attribute values are expanded, that is, they are inserted into the document during validation as if they were present in the instance being validated)
      Returns:
        true if defaults are to be expanded, false if not

    - #### setParameter

          public void setParameter(QName name,
                          XdmValue value)

      Set the value of a schema parameter (a parameter defined in the schema using the `saxon:param` extension)
      Parameters:
        `name` - the name of the schema parameter, as a QName
        `value` - the value of the schema parameter, or null to clear a previously set value
      Since:
        9.5

    - #### getParameter

          public XdmValue getParameter(QName name)

      Get the value that has been set for a schema parameter (a parameter defined in the schema using the `saxon:param` extension)
      Parameters:
        `name` - the parameter whose name is required
      Returns:
        the value that has been set for the parameter, or null if no value has been set
      Since:
        9.5

    - #### validate

          public void validate(Source source)
                        throws SaxonApiException

      Validate an instance document supplied as a Source object
      Parameters:
        `source` - the instance document to be validated. The call getSystemId() applied to this source object must return the base URI used for dereferencing any xsi:schemaLocation or xsi:noNamespaceSchemaLocation attributes
      Throws:
        `SaxonApiException` - if the source document is found to be invalid

    - #### convertParams

          protected ValidationParams convertParams(GlobalParameterSet suppliedParams,
                                       Collection<GlobalParam> declaredParams)
                                            throws XPathException

      Throws:
        `XPathException`

    - #### getReceiver

          public Receiver getReceiver(Configuration config)
                               throws SaxonApiException

      Description copied from interface: `Destination`
      Return a Receiver. Saxon calls this method to obtain a Receiver, to which it then sends a sequence of events representing the content of an XML document. The method is intended primarily for internal use, and may give poor diagnostics if used incorrectly.
      Specified by:
        `getReceiver` in interface `Destination`
      Parameters:
        `config` - The Saxon configuration. This is supplied so that the destination can use information from the configuration (for example, a reference to the name pool) to construct or configure the returned Receiver.
      Returns:
        the Receiver to which events are to be sent. It is the caller's responsibility to initialize this Receiver with a `PipelineConfiguration` before calling its `open()` method. The caller is also responsible for ensuring that the sequence of events sent to the Receiver represents a well-formed document: in particular the event stream must include namespace events corresponding exactly to the namespace declarations that are required. If the calling code cannot guarantee this, it should insert a `NamespaceReducer` into the pipeline in front of the returned Receiver.
      Throws:
        `SaxonApiException` - if the Receiver cannot be created

    - #### close

          public void close()
                     throws SaxonApiException

      Close the destination, allowing resources to be released. Saxon calls this method when it has finished writing to the destination.
      Specified by:
        `close` in interface `Destination`
      Throws:
        `SaxonApiException` - if any failure occurs

Copyright (c) 2004-2013 Saxonica Limited. All rights reserved.