pub struct ReferenceResolver<'a> { /* private fields */ }Expand description
Reference resolver for QName → component ID resolution
This struct holds a reference to the schema set and provides methods to resolve different types of QName references.
Implementations§
Source§impl<'a> ReferenceResolver<'a>
impl<'a> ReferenceResolver<'a>
Sourcepub fn new(schema_set: &'a SchemaSet) -> Self
pub fn new(schema_set: &'a SchemaSet) -> Self
Create a new reference resolver for the given schema set
Sourcepub fn resolve_type_ref(
&self,
qname: &QNameRef,
source: Option<&SourceRef>,
) -> SchemaResult<TypeKey>
pub fn resolve_type_ref( &self, qname: &QNameRef, source: Option<&SourceRef>, ) -> SchemaResult<TypeKey>
Resolve a type reference (QName → TypeKey)
Checks built-in types first, then user-defined types. The namespace should already be resolved during parsing via NamespaceContextSnapshot.
Sourcepub fn try_resolve_type_ref(
&self,
qname: &QNameRef,
source: Option<&SourceRef>,
) -> SchemaResult<Option<TypeKey>>
pub fn try_resolve_type_ref( &self, qname: &QNameRef, source: Option<&SourceRef>, ) -> SchemaResult<Option<TypeKey>>
Lookup-only variant of [resolve_type_ref]: returns Ok(None) when
the QName resolves to no component, while still propagating
namespace-visibility errors as Err. Used by callers that want to
defer a missing-component miss instead of failing compilation.
Sourcepub fn try_resolve_element_ref(
&self,
qname: &QNameRef,
source: Option<&SourceRef>,
) -> SchemaResult<Option<ElementKey>>
pub fn try_resolve_element_ref( &self, qname: &QNameRef, source: Option<&SourceRef>, ) -> SchemaResult<Option<ElementKey>>
Lookup-only variant of [resolve_element_ref]: returns Ok(None) for
the “not found” case, while still propagating visibility errors.
Sourcepub fn resolve_type_ref_result(
&self,
type_ref: &TypeRefResult,
source: Option<&SourceRef>,
) -> SchemaResult<Option<TypeKey>>
pub fn resolve_type_ref_result( &self, type_ref: &TypeRefResult, source: Option<&SourceRef>, ) -> SchemaResult<Option<TypeKey>>
Resolve a TypeRefResult to a TypeKey
Handles both QName references and inline types. For inline types, the type must already be allocated in the arena.
Sourcepub fn resolve_element_ref(
&self,
qname: &QNameRef,
source: Option<&SourceRef>,
) -> SchemaResult<ElementKey>
pub fn resolve_element_ref( &self, qname: &QNameRef, source: Option<&SourceRef>, ) -> SchemaResult<ElementKey>
Resolve an element reference (QName → ElementKey)
Sourcepub fn resolve_attribute_ref(
&self,
qname: &QNameRef,
source: Option<&SourceRef>,
) -> SchemaResult<AttributeKey>
pub fn resolve_attribute_ref( &self, qname: &QNameRef, source: Option<&SourceRef>, ) -> SchemaResult<AttributeKey>
Resolve an attribute reference (QName → AttributeKey)
Sourcepub fn resolve_group_ref(
&self,
qname: &QNameRef,
source: Option<&SourceRef>,
) -> SchemaResult<ModelGroupKey>
pub fn resolve_group_ref( &self, qname: &QNameRef, source: Option<&SourceRef>, ) -> SchemaResult<ModelGroupKey>
Resolve a model group reference (QName → ModelGroupKey)
Sourcepub fn resolve_attribute_group_ref(
&self,
qname: &QNameRef,
source: Option<&SourceRef>,
) -> SchemaResult<AttributeGroupKey>
pub fn resolve_attribute_group_ref( &self, qname: &QNameRef, source: Option<&SourceRef>, ) -> SchemaResult<AttributeGroupKey>
Resolve an attribute group reference (QName → AttributeGroupKey)
Sourcepub fn resolve_notation_ref(
&self,
qname: &QNameRef,
source: Option<&SourceRef>,
) -> SchemaResult<NotationKey>
pub fn resolve_notation_ref( &self, qname: &QNameRef, source: Option<&SourceRef>, ) -> SchemaResult<NotationKey>
Resolve a notation reference (QName → NotationKey)