From: Rob Richards Date: Fri, 22 Sep 2006 10:13:27 +0000 (+0000) Subject: mark functionality unicode safe X-Git-Tag: RELEASE_1_0_0RC1~1589 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b2a44a9cc67213bc4611a151909942ff49c00a50;p=php mark functionality unicode safe add test --- diff --git a/ext/dom/element.c b/ext/dom/element.c index c0cde57010..02a53d7def 100644 --- a/ext/dom/element.c +++ b/ext/dom/element.c @@ -58,7 +58,7 @@ zend_function_entry php_dom_element_class_functions[] = { {NULL, NULL, NULL} }; -/* {{{ proto void DOMElement::__construct(string name, [string value], [string uri]); */ +/* {{{ proto void DOMElement::__construct(string name, [string value], [string uri]) U */ PHP_METHOD(domelement, __construct) { @@ -207,7 +207,7 @@ static xmlAttrPtr dom_get_dom1_attribute(xmlNodePtr elem, xmlChar *name) { return xmlHasNsProp(elem, name, NULL); } -/* {{{ proto string dom_element_get_attribute(string name); +/* {{{ proto string dom_element_get_attribute(string name) U URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-666EE0F9 Since: */ @@ -245,7 +245,7 @@ PHP_FUNCTION(dom_element_get_attribute) /* }}} end dom_element_get_attribute */ -/* {{{ proto void dom_element_set_attribute(string name, string value); +/* {{{ proto void dom_element_set_attribute(string name, string value) U URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-F68F082 Since: */ @@ -290,7 +290,7 @@ PHP_FUNCTION(dom_element_set_attribute) /* }}} end dom_element_set_attribute */ -/* {{{ proto void dom_element_remove_attribute(string name); +/* {{{ proto void dom_element_remove_attribute(string name) U URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-6D6AC0F9 Since: */ @@ -334,7 +334,7 @@ PHP_FUNCTION(dom_element_remove_attribute) /* }}} end dom_element_remove_attribute */ -/* {{{ proto DOMAttr dom_element_get_attribute_node(string name); +/* {{{ proto DOMAttr dom_element_get_attribute_node(string name) U URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-217A91B8 Since: */ @@ -363,7 +363,7 @@ PHP_FUNCTION(dom_element_get_attribute_node) /* }}} end dom_element_get_attribute_node */ -/* {{{ proto DOMAttr dom_element_set_attribute_node(DOMAttr newAttr); +/* {{{ proto DOMAttr dom_element_set_attribute_node(DOMAttr newAttr) U URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-887236154 Since: */ @@ -426,7 +426,7 @@ PHP_FUNCTION(dom_element_set_attribute_node) /* }}} end dom_element_set_attribute_node */ -/* {{{ proto DOMAttr dom_element_remove_attribute_node(DOMAttr oldAttr); +/* {{{ proto DOMAttr dom_element_remove_attribute_node(DOMAttr oldAttr) U URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-D589198 Since: */ @@ -464,7 +464,7 @@ PHP_FUNCTION(dom_element_remove_attribute_node) /* }}} end dom_element_remove_attribute_node */ -/* {{{ proto DOMNodeList dom_element_get_elements_by_tag_name(string name); +/* {{{ proto DOMNodeList dom_element_get_elements_by_tag_name(string name) U URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1938918D Since: */ @@ -491,7 +491,7 @@ PHP_FUNCTION(dom_element_get_elements_by_tag_name) /* }}} end dom_element_get_elements_by_tag_name */ -/* {{{ proto string dom_element_get_attribute_ns(string namespaceURI, string localName); +/* {{{ proto string dom_element_get_attribute_ns(string namespaceURI, string localName) U URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElGetAttrNS Since: DOM Level 2 */ @@ -568,7 +568,7 @@ static xmlNsPtr _dom_new_reconNs(xmlDocPtr doc, xmlNodePtr tree, xmlNsPtr ns) { return(def); } -/* {{{ proto void dom_element_set_attribute_ns(string namespaceURI, string qualifiedName, string value); +/* {{{ proto void dom_element_set_attribute_ns(string namespaceURI, string qualifiedName, string value) U URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetAttrNS Since: DOM Level 2 */ @@ -679,7 +679,7 @@ PHP_FUNCTION(dom_element_set_attribute_ns) /* }}} end dom_element_set_attribute_ns */ -/* {{{ proto void dom_element_remove_attribute_ns(string namespaceURI, string localName); +/* {{{ proto void dom_element_remove_attribute_ns(string namespaceURI, string localName) U URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElRemAtNS Since: DOM Level 2 */ @@ -737,7 +737,7 @@ PHP_FUNCTION(dom_element_remove_attribute_ns) /* }}} end dom_element_remove_attribute_ns */ -/* {{{ proto DOMAttr dom_element_get_attribute_node_ns(string namespaceURI, string localName); +/* {{{ proto DOMAttr dom_element_get_attribute_node_ns(string namespaceURI, string localName) U URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElGetAtNodeNS Since: DOM Level 2 */ @@ -768,7 +768,7 @@ PHP_FUNCTION(dom_element_get_attribute_node_ns) /* }}} end dom_element_get_attribute_node_ns */ -/* {{{ proto DOMAttr dom_element_set_attribute_node_ns(DOMAttr newAttr); +/* {{{ proto DOMAttr dom_element_set_attribute_node_ns(DOMAttr newAttr) U URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetAtNodeNS Since: DOM Level 2 */ @@ -839,7 +839,7 @@ PHP_FUNCTION(dom_element_set_attribute_node_ns) -/* {{{ proto DOMNodeList dom_element_get_elements_by_tag_name_ns(string namespaceURI, string localName); +/* {{{ proto DOMNodeList dom_element_get_elements_by_tag_name_ns(string namespaceURI, string localName) U URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-A6C90942 Since: DOM Level 2 */ @@ -868,7 +868,7 @@ PHP_FUNCTION(dom_element_get_elements_by_tag_name_ns) /* }}} end dom_element_get_elements_by_tag_name_ns */ -/* {{{ proto boolean dom_element_has_attribute(string name); +/* {{{ proto boolean dom_element_has_attribute(string name) U URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElHasAttr Since: DOM Level 2 */ @@ -897,7 +897,7 @@ PHP_FUNCTION(dom_element_has_attribute) /* }}} end dom_element_has_attribute */ -/* {{{ proto boolean dom_element_has_attribute_ns(string namespaceURI, string localName); +/* {{{ proto boolean dom_element_has_attribute_ns(string namespaceURI, string localName) U URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElHasAttrNS Since: DOM Level 2 */ @@ -953,7 +953,7 @@ static void php_set_attribute_id(xmlAttrPtr attrp, zend_bool is_id) } } -/* {{{ proto void dom_element_set_id_attribute(string name, boolean isId); +/* {{{ proto void dom_element_set_id_attribute(string name, boolean isId) U URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttr Since: DOM Level 3 */ @@ -990,7 +990,7 @@ PHP_FUNCTION(dom_element_set_id_attribute) /* }}} end dom_element_set_id_attribute */ -/* {{{ proto void dom_element_set_id_attribute_ns(string namespaceURI, string localName, boolean isId); +/* {{{ proto void dom_element_set_id_attribute_ns(string namespaceURI, string localName, boolean isId) U URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttrNS Since: DOM Level 3 */ @@ -1027,7 +1027,7 @@ PHP_FUNCTION(dom_element_set_id_attribute_ns) /* }}} end dom_element_set_id_attribute_ns */ -/* {{{ proto void dom_element_set_id_attribute_node(attr idAttr, boolean isId); +/* {{{ proto void dom_element_set_id_attribute_node(attr idAttr, boolean isId) U URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttrNode Since: DOM Level 3 */ diff --git a/ext/dom/nodelist.c b/ext/dom/nodelist.c index 268879bc16..686ef50663 100644 --- a/ext/dom/nodelist.c +++ b/ext/dom/nodelist.c @@ -93,7 +93,7 @@ int dom_nodelist_length_read(dom_object *obj, zval **retval TSRMLS_DC) /* }}} */ -/* {{{ proto DOMNode dom_nodelist_item(int index); +/* {{{ proto DOMNode dom_nodelist_item(int index) U URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-844377136 Since: */ diff --git a/ext/dom/php_dom.c b/ext/dom/php_dom.c index 8242a1fd25..efe659f617 100644 --- a/ext/dom/php_dom.c +++ b/ext/dom/php_dom.c @@ -414,7 +414,7 @@ void *php_dom_export_node(zval *object TSRMLS_DC) return nodep; } -/* {{{ proto somNode dom_import_simplexml(sxeobject node) +/* {{{ proto somNode dom_import_simplexml(sxeobject node) U Get a simplexml_element object from dom to allow for processing */ PHP_FUNCTION(dom_import_simplexml) { diff --git a/ext/dom/tests/domelement.phpt b/ext/dom/tests/domelement.phpt new file mode 100644 index 0000000000..bc69af602c --- /dev/null +++ b/ext/dom/tests/domelement.phpt @@ -0,0 +1,114 @@ +--TEST-- +Elements: DOMElement functionality +--SKIPIF-- + +--FILE-- +loadXML($xmlstr); +if(!$dom) { + echo "Error while parsing the document\n"; + exit; +} + +$node = $dom->documentElement; +echo "Tag Name: ".$node->tagName."\n"; + + +$node->setAttribute('num', '1'); +echo "Chapter: ".$node->getAttribute('num')."\n"; +echo 'Attribute num exists?: '.($node->hasAttribute('num')?'Yes':'No')."\n"; +$node->removeAttribute('num'); +echo "Chapter: ".$node->getAttribute('num')."\n"; +echo 'Attribute num exists?: '.($node->hasAttribute('num')?'Yes':'No')."\n"; + +echo "Language: ".$node->getAttribute('language')."\n"; +$lang = $node->getAttributeNode('language'); +$lang->nodeValue = 'en-US'; +$node->setAttributeNode($lang); +echo "Language: ".$node->getAttribute('language')."\n"; +$node->removeAttributeNode($lang); +echo "Language: ".$node->getAttribute('language')."\n"; + +echo "\n-- xml:lang --\n"; +$node->setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:lang', 'en'); +echo "Language: ".$node->getAttributeNS('http://www.w3.org/XML/1998/namespace', 'lang')."\n"; +echo 'Attribute xml:lang exists?: '.($node->hasAttributeNS('http://www.w3.org/XML/1998/namespace', 'lang')?'Yes':'No')."\n"; + +$node->removeAttributeNS('http://www.w3.org/XML/1998/namespace', 'lang'); +echo "Language: ".$node->getAttributeNS('http://www.w3.org/XML/1998/namespace', 'lang')."\n"; +echo 'Attribute xml:lang exists?: '.($node->hasAttributeNS('http://www.w3.org/XML/1998/namespace', 'lang')?'Yes':'No')."\n"; + +$lang = $dom->createAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:lang'); +$lang->nodeValue = 'en-GB'; +$node->setAttributeNodeNS($lang); +unset($lang); +echo "Language: ".$node->getAttributeNS('http://www.w3.org/XML/1998/namespace', 'lang')."\n"; +$lang = $node->getAttributeNodeNS('http://www.w3.org/XML/1998/namespace', 'lang'); +echo "Language: ".$lang->value."\n"; + +echo "\n-- Elements --\n"; +$rows = $node->getElementsByTagName('row'); +echo "Row Count: ".$rows->length."\n"; + +$element_ns = new DOMElement('newns:myelement', 'default content', 'urn::dummyns'); +$node->appendChild($element_ns); +$element_ns = new DOMElement('newns2:myelement', 'second default content', 'urn::dummyns'); +$node->appendChild($element_ns); + +$myelements = $node->getElementsByTagNameNS('urn::dummyns', 'myelement'); +$mylen = $myelements->length; +echo "myelements Count: ".$mylen."\n"; + +echo "\n-- IDs --\n"; +$node->setAttribute('idatt', 'n1'); +$node->setIdAttribute('idatt', TRUE); + +for ($x = 0; $x < $mylen; $x++) { + $current = $myelements->item($x); + $current->setAttributeNS('urn::dummyns', 'newns:idatt', 'n'.($x+2))."\n"; + $current->setIdAttributeNS('urn::dummyns', 'idatt', TRUE); +} + +echo 'Element Name: '.(($elem = $dom->getElementByID('n1'))?$elem->localName:'Not Found')."\n"; +$idatt = $node->getAttributeNode('idatt'); +$node->setIdAttributeNode($idatt, FALSE); +echo 'Element Name: '.(($elem = $dom->getElementByID('n1'))?$elem->localName:'Not Found')."\n"; + +echo 'Element Name: '.(($elem = $dom->getElementByID('n3'))?$elem->nodeName:'Not Found')."\n"; +for ($x = 0; $x < $mylen; $x++) { + $node = $myelements->item($x); + $node->setIdAttributeNS('urn::dummyns', 'idatt', FALSE); +} +echo 'Element Name: '.(($elem = $dom->getElementByID('n3'))?$elem->nodeName:'Not Found')."\n"; +?> +--EXPECT-- + +Tag Name: chapter +Chapter: 1 +Attribute num exists?: Yes +Chapter: +Attribute num exists?: No +Language: en +Language: en-US +Language: + +-- xml:lang -- +Language: en +Attribute xml:lang exists?: Yes +Language: +Attribute xml:lang exists?: No +Language: en-GB +Language: en-GB + +-- Elements -- +Row Count: 3 +myelements Count: 2 + +-- IDs -- +Element Name: chapter +Element Name: Not Found +Element Name: newns2:myelement +Element Name: Not Found