Skip to main content

xsd_schema/parser/
frames.rs

1//! Parser frames for XSD element processing
2//!
3//! Each XSD element type has a corresponding frame that:
4//! - Validates allowed child elements
5//! - Collects and validates attributes
6//! - Builds schema components
7//! - Handles phase transitions
8//!
9//! The parser uses a stack of frames to track nested elements.
10
11use crate::error::{SchemaError, SchemaResult};
12use crate::ids::{NameId, TypeKey};
13use crate::namespace::context::NamespaceContextSnapshot;
14use crate::namespace::{is_ncname, NameTable};
15use crate::parser::attrs::{parse_boolean, parse_form, parse_occurs, parse_use, AttributeMap};
16use crate::parser::location::SourceRef;
17use crate::schema::annotation::{
18    merge_foreign_attributes, Annotation, AnnotationItem, AppInfoElement, DocumentationElement,
19    ForeignAttribute, XmlFragment,
20};
21use crate::schema::model::DerivationSet;
22use crate::types::facets::{ExplicitTimezone, FacetSet};
23
24include!("frames/xsd_names.rs");
25include!("frames/core.rs");
26include!("frames/schema.rs");
27include!("frames/types.rs");
28include!("frames/elements.rs");
29#[cfg(feature = "xsd11")]
30include!("frames/xsd11.rs");
31include!("frames/notation.rs");
32#[cfg(feature = "xsd11")]
33include!("frames/open_content.rs");
34include!("frames/groups.rs");
35include!("frames/wildcards.rs");
36include!("frames/annotations.rs");
37include!("frames/facets.rs");
38include!("frames/identity.rs");
39include!("frames/directives.rs");
40include!("frames/skip.rs");
41include!("frames/helpers.rs");
42include!("frames/factory.rs");
43include!("frames/tests.rs");