Skip to main content

xsd_schema/parser/
mod.rs

1//! XSD document parsing
2//!
3//! This module contains the XSD parser implementation using quick-xml
4//! with location tracking for accurate error reporting.
5//!
6//! ## Module Structure
7//!
8//! - `location` - Source location tracking (spans, line/column mapping)
9//! - `reader` - Tracked XML reader wrapping quick-xml
10//! - `attrs` - Attribute parsing and validation
11//! - `frames` - Parser state machine frames
12//! - `parse` - Main parser event loop
13//! - `structure` - Structural validation rules
14//! - `resolver` - Schema resolution (include/import/redefine)
15
16pub mod assemble;
17pub mod attrs;
18pub mod frames;
19pub mod location;
20pub mod parse;
21pub mod reader;
22pub mod resolver;
23pub mod structure;
24
25// Re-exports from location
26pub use location::{SourceLocation, SourceMap, SourceRef, SourceRetention, SourceSpan};
27
28// Re-exports from reader
29pub use reader::{split_qname, ReaderConfig, TrackedEvent, TrackedReader};
30
31// Re-exports from attrs
32pub use attrs::{
33    categorize_attributes, parse_attributes, parse_boolean, parse_form, parse_occurs,
34    parse_process_contents, parse_use, AttributeMap, ParsedAttribute,
35};
36
37// Re-exports from parse
38//
39// Note: `parse_schema` and `parse_schema_with_config` are low-level APIs that only perform
40// Phase 1 (parsing + assembly). For typical use cases, prefer:
41// - `crate::load_and_process_schema` for single schemas with full processing
42// - `crate::parse_schema_only` + `crate::process_loaded_schemas` for multiple schemas
43pub use parse::{parse_schema, parse_schema_with_config, ParserConfig};
44
45// Re-exports from assemble
46pub use assemble::{assemble_schema, parse_form_choice};
47
48// Re-exports from structure
49pub use structure::{
50    validate_attribute_group_structure, validate_attribute_structure,
51    validate_complex_type_structure, validate_element_structure, validate_extension_structure,
52    validate_group_structure, validate_import_structure, validate_include_structure,
53    validate_key_unique_structure, validate_keyref_structure, validate_list_structure,
54    validate_notation_structure, validate_redefine_structure, validate_restriction_structure,
55    validate_simple_type_structure, validate_union_structure, validate_xsd_version_attribute,
56    validate_xsd_version_element, ValidationContext,
57};
58
59// Re-exports from resolver
60pub use resolver::{
61    fixup_composition_edges,
62    resolve_all_directives,
63    CatalogEntry,
64    EmbeddedLoader,
65    FileSystemLoader,
66    LoaderChain,
67    ResolutionResult,
68    ResolverConfig,
69    SchemaCatalog,
70    // Loader trait and implementations
71    SchemaLoader,
72    SchemaResolver,
73};