@@ -28,6 +28,29 @@ class template_not_found_error : public fast_dynamic_error {
2828 }
2929};
3030
31+ #ifndef NDEBUG
32+
33+ void print_node (const XMLElement *element, int indent)
34+ {
35+ for (int i = 0 ; i < indent; ++i)
36+ std::cout << " " ;
37+ std::cout << " node " << element->Name () ;
38+ const XMLAttribute *attr = element->FirstAttribute ();
39+ while (attr) {
40+ std::cout << " " << attr->Name () << " =" << attr->Value ();
41+ attr = attr->Next ();
42+ }
43+ std::cout << " \n " ;
44+
45+ const XMLElement *elem = element->FirstChildElement ();
46+ while (elem){
47+ print_node (elem, indent+4 );
48+ elem = elem->NextSiblingElement ();
49+ }
50+ }
51+
52+ #endif
53+
3154const char *field_builder::name () const { return name_; }
3255
3356std::size_t field_builder::num_instructions () const {
@@ -525,7 +548,11 @@ struct tag_value;
525548typedef boost::error_info<tag_value, std::string> value_info;
526549
527550void field_builder::visit (const enum_field_instruction *inst, void *) {
528- field_op fop (inst, content_element_, alloc ());
551+
552+ const XMLElement *element = &this ->element_ ;
553+ if (!field_op::find_field_op_element (*element))
554+ element = content_element_;
555+ field_op fop (inst, element, alloc ());
529556
530557 const char **enum_element_names = inst->elements ();
531558 uint64_t num_elements = inst->num_elements ();
0 commit comments