summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/html/html_element.c73
-rw-r--r--src/html/html_element.h24
2 files changed, 93 insertions, 4 deletions
diff --git a/src/html/html_element.c b/src/html/html_element.c
index ce0ba8f..d436898 100644
--- a/src/html/html_element.c
+++ b/src/html/html_element.c
@@ -142,6 +142,79 @@ SIMPLE_GET_SET(lang,lang)
SIMPLE_GET_SET(dir,dir)
SIMPLE_GET_SET(class_name,class)
+dom_exception _dom_html_element_get_attribute(
+ struct dom_element *element,
+ dom_string *name, dom_string **value)
+{
+ dom_exception exc;
+ dom_string *lower_case_name;
+
+ exc = dom_string_tolower(name, true, &lower_case_name);
+ if (exc != DOM_NO_ERR) {
+ return exc;
+ }
+
+ exc = _dom_element_get_attribute(element, lower_case_name, value);
+ dom_string_unref(lower_case_name);
+
+ return exc;
+}
+
+dom_exception _dom_html_element_set_attribute(
+ struct dom_element *element,
+ dom_string *name, dom_string *value)
+{
+ dom_exception exc;
+ dom_string *lower_case_name;
+
+ exc = dom_string_tolower(name, true, &lower_case_name);
+ if (exc != DOM_NO_ERR) {
+ return exc;
+ }
+
+ exc = _dom_element_set_attribute(element, lower_case_name, value);
+ dom_string_unref(lower_case_name);
+
+ return exc;
+}
+
+dom_exception _dom_html_element_remove_attribute(
+ struct dom_element *element,
+ dom_string *name)
+{
+ dom_exception exc;
+ dom_string *lower_case_name;
+
+ exc = dom_string_tolower(name, true, &lower_case_name);
+ if (exc != DOM_NO_ERR) {
+ return exc;
+ }
+
+ exc = _dom_element_remove_attribute(element, lower_case_name);
+ dom_string_unref(lower_case_name);
+
+ return exc;
+}
+
+dom_exception _dom_html_element_has_attribute(
+ struct dom_element *element,
+ dom_string *name, bool *result)
+{
+ dom_exception exc;
+ dom_string *lower_case_name;
+
+ exc = dom_string_tolower(name, true, &lower_case_name);
+ if (exc != DOM_NO_ERR) {
+ return exc;
+ }
+
+ exc = _dom_element_has_attribute(element, lower_case_name, result);
+ dom_string_unref(lower_case_name);
+
+ return exc;
+}
+
+
/**
* Retrieve a list of descendant elements of an element which match a given
* tag name (caselessly)
diff --git a/src/html/html_element.h b/src/html/html_element.h
index 86c696b..e742a1a 100644
--- a/src/html/html_element.h
+++ b/src/html/html_element.h
@@ -34,6 +34,22 @@ dom_exception _dom_html_element_initialise(struct dom_html_document *doc,
void _dom_html_element_finalise(struct dom_html_element *ele);
/* Virtual functions */
+dom_exception _dom_html_element_get_attribute(
+ struct dom_element *element,
+ dom_string *name, dom_string **value);
+
+dom_exception _dom_html_element_set_attribute(
+ struct dom_element *element,
+ dom_string *name, dom_string *value);
+
+dom_exception _dom_html_element_remove_attribute(
+ struct dom_element *element,
+ dom_string *name);
+
+dom_exception _dom_html_element_has_attribute(
+ struct dom_element *element,
+ dom_string *name, bool *result);
+
dom_exception _dom_html_element_get_elements_by_tag_name(
struct dom_element *element, dom_string *name,
struct dom_nodelist **result);
@@ -50,9 +66,9 @@ dom_exception _dom_html_element_copy(dom_node_internal *old,
#define DOM_ELEMENT_VTABLE_HTML_ELEMENT \
_dom_element_get_tag_name, \
- _dom_element_get_attribute, \
- _dom_element_set_attribute, \
- _dom_element_remove_attribute, \
+ _dom_html_element_get_attribute, \
+ _dom_html_element_set_attribute, \
+ _dom_html_element_remove_attribute, \
_dom_element_get_attribute_node, \
_dom_element_set_attribute_node, \
_dom_element_remove_attribute_node, \
@@ -63,7 +79,7 @@ dom_exception _dom_html_element_copy(dom_node_internal *old,
_dom_element_get_attribute_node_ns, \
_dom_element_set_attribute_node_ns, \
_dom_html_element_get_elements_by_tag_name_ns, \
- _dom_element_has_attribute, \
+ _dom_html_element_has_attribute, \
_dom_element_has_attribute_ns, \
_dom_element_get_schema_type_info, \
_dom_element_set_id_attribute, \