Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions xsd-parser/src/pipeline/parser/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -837,6 +837,7 @@ impl SchemasBuilder {
p.extend_from_slice(ext);

let prefix = NamespacePrefix(Cow::Owned(p));
info.prefix = Some(prefix.clone());
self.schemas.known_prefixes.insert(prefix, *id);
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<Foo xmlns="Foo">
<Inner1 xmlns="Bar">
<A>Bar String</A>
</Inner1>
<Inner2 xmlns="Baz">
<B>Baz String</B>
</Inner2>
<Foo xmlns="Foo" xmlns:bar_6="Bar" xmlns:baz_7="Baz">
<bar_6:Inner1>
<bar_6:A>Bar String</bar_6:A>
</bar_6:Inner1>
<baz_7:Inner2>
<baz_7:B>Baz String</baz_7:B>
</baz_7:Inner2>
</Foo>
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<Foo xmlns="Foo">
<Inner1 xmlns="Bar">
<A>Bar String</A>
</Inner1>
<Inner2 xmlns="Baz">
<B>Baz String</B>
</Inner2>
<Foo xmlns="Foo" xmlns:bar_6="Bar" xmlns:baz_7="Baz">
<bar_6:Inner1>
<bar_6:A>Bar String</bar_6:A>
</bar_6:Inner1>
<baz_7:Inner2>
<baz_7:B>Baz String</baz_7:B>
</baz_7:Inner2>
</Foo>
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<Foo xmlns="Foo">
<Inner1 xmlns="Bar">
<A>Bar String</A>
</Inner1>
<Inner2 xmlns="Baz">
<B>Baz String</B>
</Inner2>
<bar_6:Inner1 xmlns:bar_6="Bar">
<bar_6:A>Bar String</bar_6:A>
</bar_6:Inner1>
<baz_7:Inner2 xmlns:baz_7="Baz">
<baz_7:B>Baz String</baz_7:B>
</baz_7:Inner2>
</Foo>
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,14 @@ use xsd_parser_types::{
pub const PREFIX_XS: NamespacePrefix = NamespacePrefix::new_const(b"xs");
pub const PREFIX_XML: NamespacePrefix = NamespacePrefix::new_const(b"xml");
pub const PREFIX_XSI: NamespacePrefix = NamespacePrefix::new_const(b"xsi");
pub const PREFIX_BAR_6: NamespacePrefix = NamespacePrefix::new_const(b"bar_6");
pub const PREFIX_BAZ_7: NamespacePrefix = NamespacePrefix::new_const(b"baz_7");
pub const NS_XS: Namespace = Namespace::new_const(b"http://www.w3.org/2001/XMLSchema");
pub const NS_XML: Namespace = Namespace::new_const(b"http://www.w3.org/XML/1998/namespace");
pub const NS_XSI: Namespace = Namespace::new_const(b"http://www.w3.org/2001/XMLSchema-instance");
pub const NS_UNNAMED_5: Namespace = Namespace::new_const(b"Foo");
pub const NS_UNNAMED_6: Namespace = Namespace::new_const(b"Bar");
pub const NS_UNNAMED_7: Namespace = Namespace::new_const(b"Baz");
pub const NS_BAR_6: Namespace = Namespace::new_const(b"Bar");
pub const NS_BAZ_7: Namespace = Namespace::new_const(b"Baz");
pub type Foo = FooType;
#[derive(Debug)]
pub struct FooType {
Expand Down Expand Up @@ -52,6 +54,7 @@ impl WithDeserializer for Inner1Type {
}
impl CollectNamespaces for Inner1Type {
fn collect_namespaces(&self, helper: &mut SerializeHelper, bytes: &mut BytesStart<'_>) {
helper.write_xmlns(bytes, Some(&PREFIX_BAR_6), &NS_BAR_6);
self.a.collect_namespaces(helper, bytes);
}
}
Expand All @@ -65,7 +68,7 @@ impl WithSerializer for Inner1Type {
Ok(quick_xml_serialize::Inner1TypeSerializer {
value: self,
state: Box::new(quick_xml_serialize::Inner1TypeSerializerState::Init__),
name: name.unwrap_or("Inner1"),
name: name.unwrap_or("bar_6:Inner1"),
is_root,
})
}
Expand All @@ -79,6 +82,7 @@ impl WithDeserializer for Inner2Type {
}
impl CollectNamespaces for Inner2Type {
fn collect_namespaces(&self, helper: &mut SerializeHelper, bytes: &mut BytesStart<'_>) {
helper.write_xmlns(bytes, Some(&PREFIX_BAZ_7), &NS_BAZ_7);
self.b.collect_namespaces(helper, bytes);
}
}
Expand All @@ -92,7 +96,7 @@ impl WithSerializer for Inner2Type {
Ok(quick_xml_serialize::Inner2TypeSerializer {
value: self,
state: Box::new(quick_xml_serialize::Inner2TypeSerializerState::Init__),
name: name.unwrap_or("Inner2"),
name: name.unwrap_or("baz_7:Inner2"),
is_root,
})
}
Expand Down Expand Up @@ -305,7 +309,7 @@ pub mod quick_xml_deserialize {
(S::Inner1(None), event @ (Event::Start(_) | Event::Empty(_))) => {
let output = helper.init_start_tag_deserializer(
event,
Some(&super::NS_UNNAMED_6),
Some(&super::NS_BAR_6),
b"Inner1",
false,
)?;
Expand All @@ -322,7 +326,7 @@ pub mod quick_xml_deserialize {
(S::Inner2(None), event @ (Event::Start(_) | Event::Empty(_))) => {
let output = helper.init_start_tag_deserializer(
event,
Some(&super::NS_UNNAMED_7),
Some(&super::NS_BAZ_7),
b"Inner2",
false,
)?;
Expand Down Expand Up @@ -497,7 +501,7 @@ pub mod quick_xml_deserialize {
(S::A(None), event @ (Event::Start(_) | Event::Empty(_))) => {
let output = helper.init_start_tag_deserializer(
event,
Some(&super::NS_UNNAMED_6),
Some(&super::NS_BAR_6),
b"A",
false,
)?;
Expand Down Expand Up @@ -671,7 +675,7 @@ pub mod quick_xml_deserialize {
(S::B(None), event @ (Event::Start(_) | Event::Empty(_))) => {
let output = helper.init_start_tag_deserializer(
event,
Some(&super::NS_UNNAMED_7),
Some(&super::NS_BAZ_7),
b"B",
false,
)?;
Expand Down Expand Up @@ -744,7 +748,7 @@ pub mod quick_xml_serialize {
FooTypeSerializerState::Init__ => {
*self.state = FooTypeSerializerState::Inner1(WithSerializer::serializer(
&self.value.inner_1,
Some("Inner1"),
Some("bar_6:Inner1"),
false,
)?);
let mut bytes = BytesStart::new(self.name);
Expand All @@ -761,7 +765,7 @@ pub mod quick_xml_serialize {
*self.state =
FooTypeSerializerState::Inner2(WithSerializer::serializer(
&self.value.inner_2,
Some("Inner2"),
Some("baz_7:Inner2"),
false,
)?)
}
Expand Down Expand Up @@ -818,12 +822,11 @@ pub mod quick_xml_serialize {
Inner1TypeSerializerState::Init__ => {
*self.state = Inner1TypeSerializerState::A(WithSerializer::serializer(
&self.value.a,
Some("A"),
Some("bar_6:A"),
false,
)?);
let mut bytes = BytesStart::new(self.name);
helper.begin_ns_scope();
helper.write_xmlns_for_tag(&mut bytes, self.name, &super::NS_UNNAMED_6);
if self.is_root {
CollectNamespaces::collect_namespaces(self.value, helper, &mut bytes);
}
Expand Down Expand Up @@ -881,12 +884,11 @@ pub mod quick_xml_serialize {
Inner2TypeSerializerState::Init__ => {
*self.state = Inner2TypeSerializerState::B(WithSerializer::serializer(
&self.value.b,
Some("B"),
Some("baz_7:B"),
false,
)?);
let mut bytes = BytesStart::new(self.name);
helper.begin_ns_scope();
helper.write_xmlns_for_tag(&mut bytes, self.name, &super::NS_UNNAMED_7);
if self.is_root {
CollectNamespaces::collect_namespaces(self.value, helper, &mut bytes);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,14 @@ use xsd_parser_types::{
pub const PREFIX_XS: NamespacePrefix = NamespacePrefix::new_const(b"xs");
pub const PREFIX_XML: NamespacePrefix = NamespacePrefix::new_const(b"xml");
pub const PREFIX_XSI: NamespacePrefix = NamespacePrefix::new_const(b"xsi");
pub const PREFIX_BAR_6: NamespacePrefix = NamespacePrefix::new_const(b"bar_6");
pub const PREFIX_BAZ_7: NamespacePrefix = NamespacePrefix::new_const(b"baz_7");
pub const NS_XS: Namespace = Namespace::new_const(b"http://www.w3.org/2001/XMLSchema");
pub const NS_XML: Namespace = Namespace::new_const(b"http://www.w3.org/XML/1998/namespace");
pub const NS_XSI: Namespace = Namespace::new_const(b"http://www.w3.org/2001/XMLSchema-instance");
pub const NS_UNNAMED_5: Namespace = Namespace::new_const(b"Foo");
pub const NS_UNNAMED_6: Namespace = Namespace::new_const(b"Bar");
pub const NS_UNNAMED_7: Namespace = Namespace::new_const(b"Baz");
pub const NS_BAR_6: Namespace = Namespace::new_const(b"Bar");
pub const NS_BAZ_7: Namespace = Namespace::new_const(b"Baz");
pub type Foo = FooType;
#[derive(Debug)]
pub struct FooType {
Expand Down Expand Up @@ -52,7 +54,7 @@ impl WithSerializer for Inner1Type {
Ok(quick_xml_serialize::Inner1TypeSerializer {
value: self,
state: Box::new(quick_xml_serialize::Inner1TypeSerializerState::Init__),
name: name.unwrap_or("Inner1"),
name: name.unwrap_or("bar_6:Inner1"),
is_root,
})
}
Expand All @@ -74,7 +76,7 @@ impl WithSerializer for Inner2Type {
Ok(quick_xml_serialize::Inner2TypeSerializer {
value: self,
state: Box::new(quick_xml_serialize::Inner2TypeSerializerState::Init__),
name: name.unwrap_or("Inner2"),
name: name.unwrap_or("baz_7:Inner2"),
is_root,
})
}
Expand Down Expand Up @@ -287,7 +289,7 @@ pub mod quick_xml_deserialize {
(S::Inner1(None), event @ (Event::Start(_) | Event::Empty(_))) => {
let output = helper.init_start_tag_deserializer(
event,
Some(&super::NS_UNNAMED_6),
Some(&super::NS_BAR_6),
b"Inner1",
false,
)?;
Expand All @@ -304,7 +306,7 @@ pub mod quick_xml_deserialize {
(S::Inner2(None), event @ (Event::Start(_) | Event::Empty(_))) => {
let output = helper.init_start_tag_deserializer(
event,
Some(&super::NS_UNNAMED_7),
Some(&super::NS_BAZ_7),
b"Inner2",
false,
)?;
Expand Down Expand Up @@ -479,7 +481,7 @@ pub mod quick_xml_deserialize {
(S::A(None), event @ (Event::Start(_) | Event::Empty(_))) => {
let output = helper.init_start_tag_deserializer(
event,
Some(&super::NS_UNNAMED_6),
Some(&super::NS_BAR_6),
b"A",
false,
)?;
Expand Down Expand Up @@ -653,7 +655,7 @@ pub mod quick_xml_deserialize {
(S::B(None), event @ (Event::Start(_) | Event::Empty(_))) => {
let output = helper.init_start_tag_deserializer(
event,
Some(&super::NS_UNNAMED_7),
Some(&super::NS_BAZ_7),
b"B",
false,
)?;
Expand Down Expand Up @@ -725,12 +727,24 @@ pub mod quick_xml_serialize {
FooTypeSerializerState::Init__ => {
*self.state = FooTypeSerializerState::Inner1(WithSerializer::serializer(
&self.value.inner_1,
Some("Inner1"),
Some("bar_6:Inner1"),
false,
)?);
let mut bytes = BytesStart::new(self.name);
helper.begin_ns_scope();
helper.write_xmlns_for_tag(&mut bytes, self.name, &super::NS_UNNAMED_5);
if self.is_root {
helper.write_xmlns(
&mut bytes,
Some(&super::PREFIX_BAR_6),
&super::NS_BAR_6,
);
helper.write_xmlns(
&mut bytes,
Some(&super::PREFIX_BAZ_7),
&super::NS_BAZ_7,
);
}
return Ok(Some(Event::Start(bytes)));
}
FooTypeSerializerState::Inner1(x) => match x.next(helper).transpose()? {
Expand All @@ -739,7 +753,7 @@ pub mod quick_xml_serialize {
*self.state =
FooTypeSerializerState::Inner2(WithSerializer::serializer(
&self.value.inner_2,
Some("Inner2"),
Some("baz_7:Inner2"),
false,
)?)
}
Expand Down Expand Up @@ -796,12 +810,18 @@ pub mod quick_xml_serialize {
Inner1TypeSerializerState::Init__ => {
*self.state = Inner1TypeSerializerState::A(WithSerializer::serializer(
&self.value.a,
Some("A"),
Some("bar_6:A"),
false,
)?);
let mut bytes = BytesStart::new(self.name);
helper.begin_ns_scope();
helper.write_xmlns_for_tag(&mut bytes, self.name, &super::NS_UNNAMED_6);
if self.is_root {
helper.write_xmlns(
&mut bytes,
Some(&super::PREFIX_BAR_6),
&super::NS_BAR_6,
);
}
return Ok(Some(Event::Start(bytes)));
}
Inner1TypeSerializerState::A(x) => match x.next(helper).transpose()? {
Expand Down Expand Up @@ -856,12 +876,18 @@ pub mod quick_xml_serialize {
Inner2TypeSerializerState::Init__ => {
*self.state = Inner2TypeSerializerState::B(WithSerializer::serializer(
&self.value.b,
Some("B"),
Some("baz_7:B"),
false,
)?);
let mut bytes = BytesStart::new(self.name);
helper.begin_ns_scope();
helper.write_xmlns_for_tag(&mut bytes, self.name, &super::NS_UNNAMED_7);
if self.is_root {
helper.write_xmlns(
&mut bytes,
Some(&super::PREFIX_BAZ_7),
&super::NS_BAZ_7,
);
}
return Ok(Some(Event::Start(bytes)));
}
Inner2TypeSerializerState::B(x) => match x.next(helper).transpose()? {
Expand Down
Loading
Loading