## 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:
  javax.xml.transform.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 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
`XSIAttributeHandler(StartTagBuffer buffer, ValidationStack out)` Create a handler for xsi: attributes

Method Summary
`void` `attribute(int nameCode, int typeCode, java.lang.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(int nameCode, int typeCode, int locationId, int properties)` Notify the start of an element

Methods inherited from class com.saxonica.validate.ValidatingFilter
`getErrorCode, isInvalid, reportIfInvalid, reportValidationError, setErrorCode, setInvalid`

Methods inherited from class net.sf.saxon.event.ProxyReceiver
`append, characters, close, comment, endElement, getConfiguration, getDocumentLocator, getNamePool, getUnderlyingReceiver, namespace, open, processingInstruction, setSystemId, setUnderlyingReceiver, setUnparsedEntity, startContent, startDocument`

Methods inherited from class net.sf.saxon.event.SequenceReceiver
`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(StartTagBuffer buffer,
                               ValidationStack out)

  Create a handler for xsi: attributes

  Parameters:
    `buffer` - the preceding filter in the pipeline, which provides namespace resolution services
    `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(int nameCode,
                             int 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`

### attribute

    public void attribute(int nameCode,
                          int typeCode,
                          java.lang.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`

### 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`

Copyright (c) Saxonica Limited. All rights reserved.