From a936cd0db5e72671184d95d0a08b615a92102b46 Mon Sep 17 00:00:00 2001 From: Samuel Pastva Date: Mon, 2 Oct 2023 15:24:44 +0200 Subject: [PATCH] Treat empty URL as the "default" namespace. --- src/element.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/element.rs b/src/element.rs index 47c4adc..a87f3af 100644 --- a/src/element.rs +++ b/src/element.rs @@ -388,6 +388,9 @@ impl Element { /// Get namespace value given prefix, for this element. /// "xml" and "xmlns" returns its default namespace. + /// + /// This method can return an empty namespace, but only for an empty prefix assuming + /// there is no default namespace declared. pub fn namespace_for_prefix<'a>(&self, doc: &'a Document, prefix: &str) -> Option<&'a str> { match prefix { "xml" => return Some("http://www.w3.org/XML/1998/namespace"), @@ -400,7 +403,13 @@ impl Element { if let Some(value) = data.namespace_decls.get(prefix) { return Some(value); } - elem = elem.parent(doc)?; + if let Some(parent) = elem.parent(doc) { + elem = parent; + } else if prefix.is_empty() { + return Some(""); + } else { + return None; + } } }