diff --git a/lib/oga/xml/parser.rll b/lib/oga/xml/parser.rll index bb584ef..c9d47e4 100644 --- a/lib/oga/xml/parser.rll +++ b/lib/oga/xml/parser.rll @@ -130,15 +130,16 @@ proc_ins_follow # Elements -element_open = T_ELEM_START element_name_ns { val[1] }; - element_name_ns = T_ELEM_NAME { [nil, val[0]] } - | T_ELEM_NS T_ELEM_NAME { val} + | T_ELEM_NS T_ELEM_NAME { val } ; element_start - = element_open attributes { on_element(val[0][0], val[0][1], val[1]) } + = T_ELEM_START element_name_ns attributes + { + on_element(val[1][0], val[1][1], val[2]) + } ; element @@ -166,9 +167,16 @@ attributes_ ; attribute - = attribute_name attribute_follow + # x:foo="bar" + = T_ATTR_NS T_ATTR attribute_follow { - on_attribute(val[0][1], val[0][0], val[1]) + on_attribute(val[1], val[0], val[2]) + } + + # foo="bar" + | T_ATTR attribute_follow + { + on_attribute(val[0], nil, val[1]) } ; @@ -177,11 +185,6 @@ attribute_follow | _ { nil } ; -attribute_name - = T_ATTR { [nil, val[0]] } - | T_ATTR_NS T_ATTR - ; - # XML declarations xml_decl