Skip to main content

ValidationEventHandler

Trait ValidationEventHandler 

Source
pub trait ValidationEventHandler {
    type Error;

    // Provided methods
    fn before_element(
        &mut self,
        _view: ElementStartView<'_>,
    ) -> Result<(), Self::Error> { ... }
    fn after_element(
        &mut self,
        _view: ElementStartView<'_>,
        _info: &SchemaInfo,
    ) -> Result<(), Self::Error> { ... }
    fn before_attribute(
        &mut self,
        _view: AttributeView<'_>,
    ) -> Result<(), Self::Error> { ... }
    fn after_attribute(
        &mut self,
        _view: AttributeView<'_>,
        _info: &SchemaInfo,
    ) -> Result<(), Self::Error> { ... }
    fn after_end_of_attributes(
        &mut self,
        _view: EndOfAttributesView<'_>,
    ) -> Result<(), Self::Error> { ... }
    fn after_end_element(
        &mut self,
        _info: &EndElementInfo,
        _depth: usize,
    ) -> Result<(), Self::Error> { ... }
    fn on_text(
        &mut self,
        _kind: TextKind,
        _text: &str,
    ) -> Result<(), Self::Error> { ... }
    fn on_comment(&mut self, _text: &str) -> Result<(), Self::Error> { ... }
    fn on_processing_instruction(
        &mut self,
        _target: &str,
        _data: &str,
    ) -> Result<(), Self::Error> { ... }
    fn on_element_start_offset(
        &mut self,
        _byte_pos: usize,
    ) -> Result<(), Self::Error> { ... }
    fn on_element_end_offset(
        &mut self,
        _byte_pos: usize,
    ) -> Result<(), Self::Error> { ... }
}
Expand description

Handler invoked at each validator-event boundary.

Every method has a default implementation that does nothing, so a handler that only cares about (say) end-of-element fires exactly that one method.

Hook ordering for one element:

  1. on_element_start_offset
  2. before_element
  3. (internal) runtime.validate_element
  4. after_element
  5. For each non-xmlns attribute, in document order:
    1. before_attribute
    2. (internal) runtime.validate_attribute
    3. after_attribute
  6. (internal) runtime.validate_end_of_attributes
  7. (internal, xsd11) runtime.take_deferred_attribute_results
  8. after_end_of_attributes
  9. Body events: on_text, on_comment, on_processing_instruction.
  10. On the closing event:
    1. (internal) runtime.validate_end_element
    2. after_end_element
    3. on_element_end_offset

Required Associated Types§

Source

type Error

Caller’s hook-error type. Reported through DriveWithError::Hook.

Provided Methods§

Source

fn before_element( &mut self, _view: ElementStartView<'_>, ) -> Result<(), Self::Error>

Source

fn after_element( &mut self, _view: ElementStartView<'_>, _info: &SchemaInfo, ) -> Result<(), Self::Error>

Source

fn before_attribute( &mut self, _view: AttributeView<'_>, ) -> Result<(), Self::Error>

Source

fn after_attribute( &mut self, _view: AttributeView<'_>, _info: &SchemaInfo, ) -> Result<(), Self::Error>

Source

fn after_end_of_attributes( &mut self, _view: EndOfAttributesView<'_>, ) -> Result<(), Self::Error>

Source

fn after_end_element( &mut self, _info: &EndElementInfo, _depth: usize, ) -> Result<(), Self::Error>

depth is the depth at which the element existed (1 = root close).

Source

fn on_text(&mut self, _kind: TextKind, _text: &str) -> Result<(), Self::Error>

Source

fn on_comment(&mut self, _text: &str) -> Result<(), Self::Error>

Source

fn on_processing_instruction( &mut self, _target: &str, _data: &str, ) -> Result<(), Self::Error>

Source

fn on_element_start_offset( &mut self, _byte_pos: usize, ) -> Result<(), Self::Error>

Buffer offset of the < for the element about to be reported to before_element. Default impl is a no-op; override only when building a span-aware DOM.

Source

fn on_element_end_offset(&mut self, _byte_pos: usize) -> Result<(), Self::Error>

Buffer offset just past the > of the closing tag. Default impl is a no-op; override only when building a span-aware DOM.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§