Skip to content

Commit 07da98f

Browse files
Upgrade roxmltree
1 parent 23c3629 commit 07da98f

File tree

9 files changed

+42
-26
lines changed

9 files changed

+42
-26
lines changed

Cargo.lock

Lines changed: 2 additions & 11 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

wsdl-parser-cli/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,6 @@ path = "src/main.rs"
1717
[dependencies]
1818
anyhow = "1"
1919
clap = { version = "4", features = ["derive"] }
20-
roxmltree = { version = "0.14", features = ["std"] }
20+
roxmltree = { version = "0.19", features = ["std"] }
2121
wsdl-parser = { path = "../wsdl-parser" }
2222
xsd-parser = { path = "../xsd-parser" }

wsdl-parser/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ license = "MIT OR Apache-2.0"
1212

1313
[dependencies]
1414
Inflector = "0.11"
15-
roxmltree = "0.14"
15+
roxmltree = "0.19"
1616

1717
[dev-dependencies]
1818
syn = { version = "2", features = ["full", "extra-traits"] }

wsdl-parser/src/parser/definitions.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ pub struct Definitions<'a> {
4848
impl<'a> Definitions<'a> {
4949
pub fn target_namespace(&self) -> Option<&'a Namespace<'_>> {
5050
match self.node().attribute(attribute::TARGET_NAMESPACE) {
51-
Some(tn) => self.node().namespaces().iter().find(|a| a.uri() == tn),
51+
Some(tn) => self.node().namespaces().find(|a| a.uri() == tn),
5252
None => None,
5353
}
5454
}

xsd-parser/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ license = "MIT OR Apache-2.0"
1212

1313
[dependencies]
1414
Inflector = "0.11"
15-
roxmltree = "0.14"
15+
roxmltree = "0.19"
1616

1717
[dev-dependencies]
1818
num-bigint = "0.4"

xsd-parser/src/generator/default.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,8 +156,10 @@ mod test {
156156
)
157157
.unwrap()
158158
.root_element()
159-
.namespaces()[0]
160-
.clone(),
159+
.namespaces()
160+
.next()
161+
.cloned()
162+
.unwrap(),
161163
);
162164
assert_eq!(default_format_type("tt:Type", &ns), "Type");
163165
assert_eq!(default_format_type("tt:TyName", &ns), "TyName");

xsd-parser/src/generator/utils.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -217,8 +217,10 @@ mod test {
217217
)
218218
.unwrap()
219219
.root_element()
220-
.namespaces()[0]
221-
.clone(),
220+
.namespaces()
221+
.next()
222+
.cloned()
223+
.unwrap(),
222224
);
223225

224226
let match_type = |name| match_built_in_type(name, &xsd_ns);

xsd-parser/src/parser/schema.rs

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,18 @@ use crate::parser::{
88
};
99

1010
pub fn parse_schema<'input>(schema: &Node<'_, 'input>) -> RsFile<'input> {
11+
let mut xsd_namespaces = schema
12+
.namespaces()
13+
.filter(|namespace| namespace.uri() == "http://www.w3.org/2001/XMLSchema");
14+
1115
RsFile {
1216
name: "".into(),
1317
namespace: None,
1418
target_ns: target_namespace(schema).cloned(),
15-
xsd_ns: schema
16-
.namespaces()
17-
.iter()
18-
.rev()
19-
.find(|a| a.uri() == "http://www.w3.org/2001/XMLSchema")
19+
xsd_ns: xsd_namespaces
20+
.clone()
21+
.find(|namespace| namespace.name().is_some())
22+
.or_else(|| xsd_namespaces.next())
2023
.cloned(),
2124
types: schema
2225
.children()
@@ -39,6 +42,24 @@ pub fn parse_schema<'input>(schema: &Node<'_, 'input>) -> RsFile<'input> {
3942
mod test {
4043
use crate::parser::schema::parse_schema;
4144

45+
#[test]
46+
fn test_single_xsd_ns() {
47+
let doc = roxmltree::Document::parse(
48+
r#"
49+
<xs:schema
50+
xmlns:tt="http://www.onvif.org/ver10/schema"
51+
xmlns:xs="http://www.w3.org/2001/XMLSchema"
52+
targetNamespace="http://www.onvif.org/ver10/schema"
53+
>
54+
</xs:schema>
55+
"#,
56+
)
57+
.unwrap();
58+
59+
let res = parse_schema(&doc.root_element());
60+
assert_eq!(res.xsd_ns.unwrap().name().unwrap(), "xs");
61+
}
62+
4263
#[test]
4364
fn test_multiple_xsd_ns() {
4465
let doc = roxmltree::Document::parse(
@@ -56,6 +77,6 @@ mod test {
5677
.unwrap();
5778

5879
let res = parse_schema(&doc.root_element());
59-
assert_eq!(res.xsd_ns.unwrap().name().unwrap(), "xsd");
80+
assert_eq!(res.xsd_ns.unwrap().name().unwrap(), "xs");
6081
}
6182
}

xsd-parser/src/parser/utils.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use crate::parser::{
1111

1212
pub fn target_namespace<'a, 'input>(node: &Node<'a, 'input>) -> Option<&'a Namespace<'input>> {
1313
match node.attribute(attribute::TARGET_NAMESPACE) {
14-
Some(tn) => node.namespaces().iter().find(|a| a.uri() == tn),
14+
Some(tn) => node.namespaces().find(|a| a.uri() == tn),
1515
None => None,
1616
}
1717
}

0 commit comments

Comments
 (0)