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:
on_element_start_offsetbefore_element- (internal)
runtime.validate_element after_element- For each non-xmlns attribute, in document order:
before_attribute- (internal)
runtime.validate_attribute after_attribute
- (internal)
runtime.validate_end_of_attributes - (internal, xsd11)
runtime.take_deferred_attribute_results after_end_of_attributes- Body events:
on_text,on_comment,on_processing_instruction. - On the closing event:
- (internal)
runtime.validate_end_element after_end_elementon_element_end_offset
- (internal)
Required Associated Types§
Sourcetype Error
type Error
Caller’s hook-error type. Reported through
DriveWithError::Hook.
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>
Sourcefn after_end_element(
&mut self,
_info: &EndElementInfo,
_depth: usize,
) -> Result<(), Self::Error>
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).
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>
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".