pub mod context;
#[cfg(feature = "libxml_output")]
pub mod dump;
pub(crate) mod error;
pub(crate) mod item_list;
pub mod items;
pub mod parse;
pub mod schema;
pub mod valid;
use items::XmlSchemaType;
use crate::{
libxml::{
schemas_internals::{XmlSchemaTypeType, XmlSchemaValType},
xmlschemas::XML_SCHEMA_NS,
},
tree::{NodeCommon, XmlNodePtr},
};
const UNBOUNDED: usize = 1 << 30;
pub(crate) fn is_schema(node: Option<XmlNodePtr>, r#type: &str) -> bool {
node.is_some_and(|node| {
node.name().as_deref() == Some(r#type)
&& node
.ns
.is_some_and(|ns| ns.href().as_deref() == Some(XML_SCHEMA_NS.to_str().unwrap()))
})
}
pub(crate) unsafe fn wxs_is_anytype(r#type: *mut XmlSchemaType) -> bool {
unsafe {
(*r#type).typ == XmlSchemaTypeType::XmlSchemaTypeBasic
&& (*r#type).built_in_type == XmlSchemaValType::XmlSchemasAnytype
}
}
pub(crate) unsafe fn wxs_is_simple(r#type: *mut XmlSchemaType) -> bool {
unsafe {
(*r#type).typ == XmlSchemaTypeType::XmlSchemaTypeSimple
|| ((*r#type).typ == XmlSchemaTypeType::XmlSchemaTypeBasic
&& (*r#type).built_in_type != XmlSchemaValType::XmlSchemasAnytype)
}
}
pub(crate) unsafe fn wxs_is_complex(r#type: *mut XmlSchemaType) -> bool {
unsafe {
(*r#type).typ == XmlSchemaTypeType::XmlSchemaTypeComplex
|| (*r#type).built_in_type == XmlSchemaValType::XmlSchemasAnytype
}
}
pub(crate) unsafe fn wxs_is_any_simple_type(r#type: *mut XmlSchemaType) -> bool {
unsafe {
(*r#type).typ == XmlSchemaTypeType::XmlSchemaTypeBasic
&& (*r#type).built_in_type == XmlSchemaValType::XmlSchemasAnySimpletype
}
}