From c6d7cdcc1860235739078291e2f411f002478db4 Mon Sep 17 00:00:00 2001
From: crowlkats <crowlkats@toaxl.com>
Date: Mon, 16 Dec 2024 23:41:16 +0100
Subject: [PATCH] fix(html): recursively update ns_qualifiers when resolving a
 reference

---
 src/html/mod.rs | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)

diff --git a/src/html/mod.rs b/src/html/mod.rs
index 5b5b2a4c..df9f40ac 100644
--- a/src/html/mod.rs
+++ b/src/html/mod.rs
@@ -527,8 +527,24 @@ impl GenerateCtx {
             parent.ns_qualifiers.len() + node.ns_qualifiers.len(),
           );
           ns_qualifiers.extend(parent.sub_qualifier());
-          ns_qualifiers.extend(node.ns_qualifiers.iter().cloned());
-          node.ns_qualifiers = ns_qualifiers.into();
+
+          fn handle_node(
+            node: &mut DocNodeWithContext,
+            ns_qualifiers: Vec<String>,
+          ) {
+            if let Some(children) = &mut node.namespace_children {
+              for node in children {
+                handle_node(node, ns_qualifiers.clone());
+              }
+            }
+
+            let mut new_ns_qualifiers = ns_qualifiers;
+            new_ns_qualifiers.extend(node.ns_qualifiers.iter().cloned());
+            node.ns_qualifiers = new_ns_qualifiers.into();
+          }
+
+          handle_node(&mut node, ns_qualifiers);
+
           Cow::Owned(node)
         } else {
           node