diff --git a/package.json b/package.json index 449fd8dc..d3c565b3 100644 --- a/package.json +++ b/package.json @@ -15,11 +15,11 @@ }, "license": "MIT", "dependencies": { - "@abaplint/cli": "^2.113.210", + "@abaplint/cli": "^2.113.220", "@abaplint/database-pg": "^2.11.78", "@abaplint/database-sqlite": "^2.11.78", - "@abaplint/runtime": "^2.11.93", - "@abaplint/transpiler-cli": "^2.11.93", + "@abaplint/runtime": "^2.11.96", + "@abaplint/transpiler-cli": "^2.11.96", "0x": "^6.0.0" } } diff --git a/src/ixml/cl_ixml.clas.locals_imp.abap b/src/ixml/cl_ixml.clas.locals_imp.abap index 03923e4a..c392abad 100644 --- a/src/ixml/cl_ixml.clas.locals_imp.abap +++ b/src/ixml/cl_ixml.clas.locals_imp.abap @@ -482,7 +482,7 @@ CLASS lcl_node IMPLEMENTATION. ENDMETHOD. METHOD if_ixml_element~set_attribute_node_ns. - ASSERT 1 = 'todo'. + mi_attributes->set_named_item_ns( new_attr ). ENDMETHOD. METHOD if_ixml_element~set_attribute. @@ -784,7 +784,9 @@ CLASS lcl_document IMPLEMENTATION. ENDMETHOD. METHOD if_ixml_document~create_attribute_ns. - ASSERT 1 = 'todo'. + CREATE OBJECT rval TYPE lcl_node. + rval->if_ixml_node~set_name( name ). + rval->if_ixml_node~set_namespace_prefix( prefix ). ENDMETHOD. METHOD if_ixml_document~create_element_ns. diff --git a/src/ixml/cl_ixml.clas.testclasses.abap b/src/ixml/cl_ixml.clas.testclasses.abap index 295600cd..96f70049 100644 --- a/src/ixml/cl_ixml.clas.testclasses.abap +++ b/src/ixml/cl_ixml.clas.testclasses.abap @@ -49,6 +49,7 @@ CLASS ltcl_xml DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FINAL. METHODS pretty4 FOR TESTING RAISING cx_static_check. METHODS pretty5 FOR TESTING RAISING cx_static_check. METHODS add_stuff FOR TESTING RAISING cx_static_check. + METHODS create_attribute_ns FOR TESTING RAISING cx_static_check. DATA mi_ixml TYPE REF TO if_ixml. DATA mi_document TYPE REF TO if_ixml_document. @@ -1152,4 +1153,36 @@ CLASS ltcl_xml IMPLEMENTATION. ENDMETHOD. + METHOD create_attribute_ns. + DATA li_element TYPE REF TO if_ixml_element. + DATA li_top TYPE REF TO if_ixml_element. + DATA lv_xml TYPE string. + DATA li_attr TYPE REF TO if_ixml_attribute. + + li_top = mi_document->create_element_ns( + prefix = 'asx' + name = 'abap' ). + mi_document->append_child( li_top ). + + li_element = mi_document->create_element( 'HELLO' ). + + li_attr = mi_document->create_attribute_ns( 'version' ). + li_attr->if_ixml_node~set_value( '1.0' ). + li_element->set_attribute_node_ns( li_attr ). + + li_attr = mi_document->create_attribute_ns( + name = 'asx' + prefix = 'xmlns' ). + li_attr->if_ixml_node~set_value( 'http://abapgit.org' ). + li_element->set_attribute_node_ns( li_attr ). + + li_top->append_child( li_element ). + + lv_xml = render( ). + + cl_abap_unit_assert=>assert_char_cp( + act = lv_xml + exp = '**' ). + ENDMETHOD. + ENDCLASS. \ No newline at end of file diff --git a/src/ixml/if_ixml_attribute.intf.abap b/src/ixml/if_ixml_attribute.intf.abap index dc7aceaa..f9896d74 100644 --- a/src/ixml/if_ixml_attribute.intf.abap +++ b/src/ixml/if_ixml_attribute.intf.abap @@ -1,6 +1,8 @@ INTERFACE if_ixml_attribute PUBLIC. INTERFACES if_ixml_node. - METHODS get_value RETURNING VALUE(val) TYPE string. - METHODS set_value IMPORTING value TYPE string. - METHODS get_name RETURNING VALUE(val) TYPE string. + + ALIASES get_value FOR if_ixml_node~get_value. + ALIASES set_value FOR if_ixml_node~set_value. + ALIASES get_name FOR if_ixml_node~get_name. + ALIASES set_name FOR if_ixml_node~set_name. ENDINTERFACE. \ No newline at end of file diff --git a/src/ixml/if_ixml_document.intf.abap b/src/ixml/if_ixml_document.intf.abap index 25fe4817..5632d8f5 100644 --- a/src/ixml/if_ixml_document.intf.abap +++ b/src/ixml/if_ixml_document.intf.abap @@ -24,10 +24,10 @@ INTERFACE if_ixml_document PUBLIC. VALUE(child) TYPE REF TO if_ixml_node, create_attribute_ns IMPORTING - name TYPE string - prefix TYPE string OPTIONAL + name TYPE string + prefix TYPE string OPTIONAL RETURNING - VALUE(element) TYPE REF TO if_ixml_attribute, + VALUE(rval) TYPE REF TO if_ixml_attribute, create_element_ns IMPORTING name TYPE string diff --git a/src/ixml/if_ixml_element.intf.abap b/src/ixml/if_ixml_element.intf.abap index 384d20d0..0fa8e6b9 100644 --- a/src/ixml/if_ixml_element.intf.abap +++ b/src/ixml/if_ixml_element.intf.abap @@ -80,7 +80,7 @@ INTERFACE if_ixml_element PUBLIC. ostream TYPE REF TO if_ixml_ostream, set_attribute_node_ns IMPORTING - attr TYPE any, + new_attr TYPE REF TO if_ixml_attribute, set_attribute IMPORTING name TYPE string