+
+void fix_element_ref (data1_handle dh, data1_absyn *absyn, data1_element *e)
+{
+ for (; e; e = e->next)
+ {
+ if (!e->sub_name)
+ {
+ if (e->children)
+ fix_element_ref (dh, absyn, e->children);
+ }
+ else
+ {
+ data1_sub_elements *sub_e = absyn->sub_elements;
+ while (sub_e && strcmp (e->sub_name, sub_e->name))
+ sub_e = sub_e->next;
+ if (sub_e)
+ e->children = sub_e->elements;
+ else
+ logf (LOG_WARN, "Unresolved reference to sub-elements %s",
+ e->sub_name);
+ }
+ }
+}
+