com.saxonica.validate

## Class XSIAttributeHandler

- java.lang.Object
- - net.sf.saxon.event.SequenceReceiver
  - - net.sf.saxon.event.ProxyReceiver
    - - com.saxonica.validate.ValidatingFilter
      - - com.saxonica.validate.XSIAttributeHandler

- All Implemented Interfaces:
    Result, Receiver

      public class XSIAttributeHandler
      extends ValidatingFilter

  This class processes attributes such as xsi:schemaLocation and xsi:type. To achieve this, it needs to be preceded in the pipeline by a StartTagBuffer, which buffers all attributes and namespaces, because the xsi:type and schemaLocation need to be processed before the start element event. Apart from the StartTagBuffer, this is the first class in the validation pipeline.

  The main work of this class can be done in the startElement event, because the StartTagBuffer ensures that by this time, all the namespaces and attributes for the element are known and accessible.

- - ### Field Summary

    - ### Fields inherited from class com.saxonica.validate.ValidatingFilter

      `locallyInvalid`

    - ### 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 and Description
    `XSIAttributeHandler(ValidationStack out)` Create a handler for xsi: attributes

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `attribute(NodeName nameCode, SimpleType typeCode, CharSequence value, int locationId, int properties)` Notify an attribute.
    `void` | `endDocument()` Notify the end of a document node
    `void` | `setPipelineConfiguration(PipelineConfiguration pipe)` Set the pipeline configuration
    `void` | `startElement(NodeName nameCode, SchemaType typeCode, int locationId, int properties)` Notify the start of an element

    - ### Methods inherited from class com.saxonica.validate.ValidatingFilter

      `append, getConstraintChecker, getStartTagBuffer, getValidationContext, reportIfInvalid, reportValidationError, setConstraintChecker, setStartTagBuffer, setValidationContext, usesTypeAnnotations`

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

      `characters, close, comment, endElement, getNamePool, getUnderlyingReceiver, namespace, open, processingInstruction, setSystemId, setUnderlyingReceiver, setUnparsedEntity, startContent, startDocument`

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

      `append, getConfiguration, getPipelineConfiguration, getSystemId`

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

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

- - ### Constructor Detail

    - #### XSIAttributeHandler

          public XSIAttributeHandler(ValidationStack out)

      Create a handler for xsi: attributes
      Parameters:
        `out` - the next filter in the pipeline

  - ### Method Detail

    - #### setPipelineConfiguration

          public void setPipelineConfiguration(PipelineConfiguration pipe)

      Description copied from interface: `Receiver`
      Set the pipeline configuration
      Specified by:
        `setPipelineConfiguration` in interface `Receiver`
      Overrides:
        `setPipelineConfiguration` in class `ProxyReceiver`
      Parameters:
        `pipe` - the pipeline configuration

    - #### startElement

          public void startElement(NodeName nameCode,
                          SchemaType typeCode,
                          int locationId,
                          int properties)
                            throws XPathException

      Notify the start of an element
      Specified by:
        `startElement` in interface `Receiver`
      Overrides:
        `startElement` in class `ProxyReceiver`
      Parameters:
        `nameCode` - integer code identifying the name of the element within the name pool.
        `typeCode` - integer code identifying the element's type within the name pool.
        `properties` - for future use. Should be set to zero.
        `locationId` - an integer which can be interpreted using a `LocationProvider` to return information such as line number and system ID. If no location information is available, the value zero is supplied.
      Throws:
        `XPathException` - if an error occurs

    - #### attribute

          public void attribute(NodeName nameCode,
                       SimpleType typeCode,
                       CharSequence value,
                       int locationId,
                       int properties)
                         throws XPathException

      Notify an attribute. Attributes are notified after the startElement event, and before any children. Namespaces and attributes may be intermingled.
      Specified by:
        `attribute` in interface `Receiver`
      Overrides:
        `attribute` in class `ProxyReceiver`
      Parameters:
        `nameCode` - The name of the attribute, as held in the name pool
        `typeCode` - The type of the attribute, as held in the name pool
        `properties` - Bit significant value. The following bits are defined:
        DISABLE_ESCAPING
      Disable escaping for this attribute
        NO_SPECIAL_CHARACTERS
      Attribute value contains no special characters
        `value` - the string value of the attribute
        `locationId` - an integer which can be interpreted using a `LocationProvider` to return information such as line number and system ID. If no location information is available, the value zero is supplied.
      Throws:
        `IllegalStateException:` - attempt to output an attribute when there is no open element start tag
        `XPathException` - if an error occurs

    - #### endDocument

          public void endDocument()
                           throws XPathException

      Description copied from class: `ProxyReceiver`
      Notify the end of a document node
      Specified by:
        `endDocument` in interface `Receiver`
      Overrides:
        `endDocument` in class `ProxyReceiver`
      Throws:
        `XPathException` - if an error occurs

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