rrichards Thu May 27 07:15:45 2004 EDT Added files: /php-src/ext/dom/tests dom_create_element.phpt
Modified files: /php-src/ext/dom document.c element.c entityreference.c php_dom.c processinginstruction.c Log: namespace/tagname validation fixes (Adam Trachtenberg) added new test
http://cvs.php.net/diff.php/php-src/ext/dom/document.c?r1=1.52&r2=1.53&ty=u Index: php-src/ext/dom/document.c diff -u php-src/ext/dom/document.c:1.52 php-src/ext/dom/document.c:1.53 --- php-src/ext/dom/document.c:1.52 Sun May 16 06:30:16 2004 +++ php-src/ext/dom/document.c Thu May 27 07:15:44 2004 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: document.c,v 1.52 2004/05/16 10:30:16 rrichards Exp $ */ +/* $Id: document.c,v 1.53 2004/05/27 11:15:44 rrichards Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -759,8 +759,8 @@ DOM_GET_OBJ(docp, id, xmlDocPtr, intern); - if (name_len == 0) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Element name is required"); + if (xmlValidateName((xmlChar *) name, 0) != 0) { + php_dom_throw_error(INVALID_CHARACTER_ERR, dom_get_strict_error(intern->document) TSRMLS_CC); RETURN_FALSE; } @@ -908,6 +908,11 @@ DOM_GET_OBJ(docp, id, xmlDocPtr, intern); + if (xmlValidateName((xmlChar *) name, 0) != 0) { + php_dom_throw_error(INVALID_CHARACTER_ERR, dom_get_strict_error(intern->document) TSRMLS_CC); + RETURN_FALSE; + } + node = xmlNewPI((xmlChar *) name, (xmlChar *) value); if (!node) { RETURN_FALSE; @@ -939,8 +944,8 @@ DOM_GET_OBJ(docp, id, xmlDocPtr, intern); - if (name_len == 0) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Attribute name is required"); + if (xmlValidateName((xmlChar *) name, 0) != 0) { + php_dom_throw_error(INVALID_CHARACTER_ERR, dom_get_strict_error(intern->document) TSRMLS_CC); RETURN_FALSE; } @@ -974,6 +979,11 @@ DOM_GET_OBJ(docp, id, xmlDocPtr, intern); + if (xmlValidateName((xmlChar *) name, 0) != 0) { + php_dom_throw_error(INVALID_CHARACTER_ERR, dom_get_strict_error(intern->document) TSRMLS_CC); + RETURN_FALSE; + } + node = xmlNewReference(docp, name); if (!node) { RETURN_FALSE; @@ -1073,23 +1083,22 @@ return; } - if (name_len == 0) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Element Name is required"); - RETURN_FALSE; - } - DOM_GET_OBJ(docp, id, xmlDocPtr, intern); errorcode = dom_check_qname(name, &localname, &prefix, uri_len, name_len); if (errorcode == 0) { - nodep = xmlNewDocNode (docp, NULL, localname, NULL); - if (nodep != NULL && uri != NULL) { - nsptr = xmlSearchNsByHref (nodep->doc, nodep, uri); - if (nsptr == NULL) { - nsptr = dom_get_ns(nodep, uri, &errorcode, prefix); + if (xmlValidateName((xmlChar *) localname, 0) == 0) { + nodep = xmlNewDocNode (docp, NULL, localname, NULL); + if (nodep != NULL && uri != NULL) { + nsptr = xmlSearchNsByHref (nodep->doc, nodep, uri); + if (nsptr == NULL) { + nsptr = dom_get_ns(nodep, uri, &errorcode, prefix); + } + xmlSetNs(nodep, nsptr); } - xmlSetNs(nodep, nsptr); + } else { + errorcode = INVALID_CHARACTER_ERR; } } @@ -1138,24 +1147,23 @@ return; } - if (name_len == 0) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Qualified Name is required"); - RETURN_FALSE; - } - DOM_GET_OBJ(docp, id, xmlDocPtr, intern); root = xmlDocGetRootElement(docp); if (root != NULL) { errorcode = dom_check_qname(name, &localname, &prefix, uri_len, name_len); if (errorcode == 0) { - nodep = (xmlNodePtr) xmlNewDocProp(docp, localname, NULL); - if (nodep != NULL && uri_len > 0) { - nsptr = xmlSearchNsByHref (nodep->doc, root, uri); - if (nsptr == NULL) { - nsptr = dom_get_ns(root, uri, &errorcode, prefix); + if (xmlValidateName((xmlChar *) localname, 0) == 0) { + nodep = (xmlNodePtr) xmlNewDocProp(docp, localname, NULL); + if (nodep != NULL && uri_len > 0) { + nsptr = xmlSearchNsByHref (nodep->doc, root, uri); + if (nsptr == NULL) { + nsptr = dom_get_ns(root, uri, &errorcode, prefix); + } + xmlSetNs(nodep, nsptr); } - xmlSetNs(nodep, nsptr); + } else { + errorcode = INVALID_CHARACTER_ERR; } } } else { http://cvs.php.net/diff.php/php-src/ext/dom/element.c?r1=1.28&r2=1.29&ty=u Index: php-src/ext/dom/element.c diff -u php-src/ext/dom/element.c:1.28 php-src/ext/dom/element.c:1.29 --- php-src/ext/dom/element.c:1.28 Sun May 16 06:30:16 2004 +++ php-src/ext/dom/element.c Thu May 27 07:15:44 2004 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: element.c,v 1.28 2004/05/16 10:30:16 rrichards Exp $ */ +/* $Id: element.c,v 1.29 2004/05/27 11:15:44 rrichards Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -58,7 +58,7 @@ {NULL, NULL, NULL} }; -/* {{{ proto void DomElement::__construct(string name, [string value]); */ +/* {{{ proto void DomElement::__construct(string name, [string value], [string uri]); */ PHP_METHOD(domelement, __construct) { @@ -106,6 +106,14 @@ RETURN_FALSE; } } else { + /* If you don't pass a namespace uri, then you can't set a prefix */ + localname = xmlSplitQName2(name, (xmlChar **) &prefix); + if (prefix != NULL) { + xmlFree(localname); + xmlFree(prefix); + php_dom_throw_error(NAMESPACE_ERR, 1 TSRMLS_CC); + RETURN_FALSE; + } nodep = xmlNewNode(NULL, (xmlChar *) name); } http://cvs.php.net/diff.php/php-src/ext/dom/entityreference.c?r1=1.9&r2=1.10&ty=u Index: php-src/ext/dom/entityreference.c diff -u php-src/ext/dom/entityreference.c:1.9 php-src/ext/dom/entityreference.c:1.10 --- php-src/ext/dom/entityreference.c:1.9 Sun May 16 06:30:16 2004 +++ php-src/ext/dom/entityreference.c Thu May 27 07:15:45 2004 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: entityreference.c,v 1.9 2004/05/16 10:30:16 rrichards Exp $ */ +/* $Id: entityreference.c,v 1.10 2004/05/27 11:15:45 rrichards Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -48,7 +48,7 @@ xmlNodePtr oldnode = NULL; dom_object *intern; char *name; - int name_len; + int name_len, name_valid; php_set_error_handling(EH_THROW, dom_domexception_class_entry TSRMLS_CC); if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &id, dom_entityreference_class_entry, &name, &name_len) == FAILURE) { @@ -57,7 +57,9 @@ } php_std_error_handling(); - if (name_len == 0) { + + name_valid = xmlValidateName((xmlChar *) name, 0); + if (name_valid != 0) { php_dom_throw_error(INVALID_CHARACTER_ERR, 1 TSRMLS_CC); RETURN_FALSE; } http://cvs.php.net/diff.php/php-src/ext/dom/php_dom.c?r1=1.58&r2=1.59&ty=u Index: php-src/ext/dom/php_dom.c diff -u php-src/ext/dom/php_dom.c:1.58 php-src/ext/dom/php_dom.c:1.59 --- php-src/ext/dom/php_dom.c:1.58 Sun May 16 06:30:16 2004 +++ php-src/ext/dom/php_dom.c Thu May 27 07:15:45 2004 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_dom.c,v 1.58 2004/05/16 10:30:16 rrichards Exp $ */ +/* $Id: php_dom.c,v 1.59 2004/05/27 11:15:45 rrichards Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -1229,34 +1229,62 @@ } /* }}} end dom_set_old_ns */ -int dom_check_qname(char *qname, char **localname, char **prefix, int uri_len, int name_len) { - int errorcode = 0; +/* +http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core.html#ID-DocCrElNS - if (name_len > 0) { - *localname = xmlSplitQName2(qname, (xmlChar **) prefix); - if (*localname == NULL) { - *localname = xmlStrdup(qname); - if (*prefix == NULL && uri_len == 0) { - return errorcode; - } - } - if (uri_len == 0 || *localname == NULL || (xmlStrchr(*localname, (xmlChar) ':') != NULL)) { - errorcode = NAMESPACE_ERR; +NAMESPACE_ERR: Raised if + +1. the qualifiedName is a malformed qualified name +2. the qualifiedName has a prefix and the namespaceURI is null +*/ + +/* {{{ int dom_check_qname(char *qname, char **localname, char **prefix, int uri_len, int name_len) */ +int dom_check_qname(char *qname, char **localname, char **prefix, int uri_len, int name_len) { + if (name_len == 0) { + return NAMESPACE_ERR; + } + + *localname = xmlSplitQName2(qname, (xmlChar **) prefix); + if (*localname == NULL) { + *localname = xmlStrdup(qname); + if (*prefix == NULL && uri_len == 0) { + return 0; } - } else { - errorcode = NAMESPACE_ERR; } - return errorcode; + /* 1 */ + if (xmlValidateQName((xmlChar *) qname, 0) != 0) { + return NAMESPACE_ERR; + } + + /* 2 */ + if (*prefix != NULL && uri_len == 0) { + return NAMESPACE_ERR; + } + + return 0; } + +/* +http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core.html#ID-DocCrElNS + +NAMESPACE_ERR: Raised if + +3. the qualifiedName has a prefix that is "xml" and the namespaceURI is different from "http://www.w3.org/XML/1998/namespace" [XML Namespaces] +4. the qualifiedName or its prefix is "xmlns" and the namespaceURI is different from "http://www.w3.org/2000/xmlns/" +5. the namespaceURI is "http://www.w3.org/2000/xmlns/" and neither the qualifiedName nor its prefix is "xmlns". +*/ + /* {{{ xmlNsPtr dom_get_ns(xmlNodePtr nodep, char *uri, int *errorcode, char *prefix) */ xmlNsPtr dom_get_ns(xmlNodePtr nodep, char *uri, int *errorcode, char *prefix) { xmlNsPtr nsptr = NULL; *errorcode = 0; - if (! (prefix && !strcmp (prefix, "xml") && strcmp(uri, XML_XML_NAMESPACE))) { + if (! ((prefix && !strcmp (prefix, "xml" ) && strcmp(uri, XML_XML_NAMESPACE)) || + (prefix && !strcmp (prefix, "xmlns") && strcmp(uri, DOM_XMLNS_NAMESPACE)) || + (prefix && !strcmp(uri, DOM_XMLNS_NAMESPACE) && strcmp (prefix, "xmlns")))) { nsptr = xmlNewNs(nodep, uri, prefix); } http://cvs.php.net/diff.php/php-src/ext/dom/processinginstruction.c?r1=1.13&r2=1.14&ty=u Index: php-src/ext/dom/processinginstruction.c diff -u php-src/ext/dom/processinginstruction.c:1.13 php-src/ext/dom/processinginstruction.c:1.14 --- php-src/ext/dom/processinginstruction.c:1.13 Sun May 16 06:30:16 2004 +++ php-src/ext/dom/processinginstruction.c Thu May 27 07:15:45 2004 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: processinginstruction.c,v 1.13 2004/05/16 10:30:16 rrichards Exp $ */ +/* $Id: processinginstruction.c,v 1.14 2004/05/27 11:15:45 rrichards Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -48,7 +48,7 @@ xmlNodePtr nodep = NULL, oldnode = NULL; dom_object *intern; char *name, *value = NULL; - int name_len, value_len; + int name_len, value_len, name_valid; php_set_error_handling(EH_THROW, dom_domexception_class_entry TSRMLS_CC); if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os|s", &id, dom_processinginstruction_class_entry, &name, &name_len, &value, &value_len) == FAILURE) { @@ -57,7 +57,9 @@ } php_std_error_handling(); - if (name_len == 0) { + + name_valid = xmlValidateName((xmlChar *) name, 0); + if (name_valid != 0) { php_dom_throw_error(INVALID_CHARACTER_ERR, 1 TSRMLS_CC); RETURN_FALSE; } http://cvs.php.net/co.php/php-src/ext/dom/tests/dom_create_element.phpt?r=1.1&p=1 Index: php-src/ext/dom/tests/dom_create_element.phpt +++ php-src/ext/dom/tests/dom_create_element.phpt --TEST-- Test 1: Creating Elements with and without Namespaces --SKIPIF-- <?php require_once('skipif.inc'); ?> --FILE-- <?php print " 1 DOMDocument::createElement('valid')\n"; try { $dom = new domDocument; $dom->createElement('valid'); print "valid\n"; } catch (Exception $e) { print $e->getMessage() . "\n"; } print " 2 DOMDocument::createElement('-invalid')\n"; try { $dom = new domDocument; $dom->createElement('-invalid'); print "valid\n"; } catch (Exception $e) { print $e->getMessage() . "\n"; } print " 3 DOMDocument::createElement(' ')\n"; try { $dom = new domDocument; $dom->createElement(' '); print "valid\n"; } catch (Exception $e) { print $e->getMessage() . "\n"; } print " 4 DOMDocument::createElement('prefix:valid')\n"; try { $dom = new domDocument; $dom->createElement('prefix:valid'); print "valid\n"; } catch (Exception $e) { print $e->getMessage() . "\n"; } print " 5 DOMDocument::createElementNS('http://valid.com', 'valid')\n"; try { $dom = new domDocument; $dom->createElementNS('http://valid.com', 'valid'); print "valid\n"; } catch (Exception $e) { print $e->getMessage() . "\n"; } print " 6 DOMDocument::createElementNS('http://valid.com', 'prefix:valid')\n"; try { $dom = new domDocument; $dom->createElementNS('http://valid.com', 'prefix:valid'); print "valid\n"; } catch (Exception $e) { print $e->getMessage() . "\n"; } print " 7 DOMDocument::createElementNS('http://valid.com', '-invalid')\n"; try { $dom = new domDocument; $dom->createElementNS('http://valid.com', '-invalid'); print "valid\n"; } catch (Exception $e) { print $e->getMessage() . "\n"; } print " 8 DOMDocument::createElementNS('http://valid.com', 'prefix:-invalid')\n"; try { $dom = new domDocument; $dom->createElementNS('http://valid.com', 'prefix:-invalid'); print "valid\n"; } catch (Exception $e) { print $e->getMessage() . "\n"; } print " 9 DOMDocument::createElementNS('', 'prefix:invalid')\n"; try { $dom = new domDocument; $dom->createElementNS('', 'prefix:invalid'); print "valid\n"; } catch (Exception $e) { print $e->getMessage() . "\n"; } print "10 DOMDocument::createElementNS('http://valid.com', 'prefix:valid:invalid')\n"; try { $dom = new domDocument; $dom->createElementNS('http://valid.com', 'prefix:valid:invalid'); print "valid\n"; } catch (Exception $e) { print $e->getMessage() . "\n"; } print "11 DOMDocument::createElementNS('http://valid.com', '-prefix:valid')\n"; try { $dom = new domDocument; $dom->createElementNS('http://valid.com', '-prefix:valid'); print "valid\n"; } catch (Exception $e) { print $e->getMessage() . "\n"; } print "12 DOMDocument::createElementNS('-', 'prefix:valid')\n"; try { $dom = new domDocument; $dom->createElementNS('-', 'prefix:valid'); print "valid\n"; } catch (Exception $e) { print $e->getMessage() . "\n"; } print "13 DOMElement::__construct('valid')\n"; try { $element = new DomElement('valid'); print "valid\n"; } catch (Exception $e) { print $e->getMessage() . "\n"; } print "14 DOMElement::__construct('-invalid')\n"; try { $element = new DomElement('-invalid'); print "valid\n"; } catch (Exception $e) { print $e->getMessage() . "\n"; } print "15 DOMElement::__construct(' ')\n"; try { $element = new DomElement(' '); print "valid\n"; } catch (Exception $e) { print $e->getMessage() . "\n"; } print "16 DOMElement::__construct('prefix:valid')\n"; try { $element = new DomElement('prefix:valid'); print "valid\n"; } catch (Exception $e) { print $e->getMessage() . "\n"; } print "17 DOMElement::__construct('valid', '', 'http://valid.com')\n"; try { $element = new DomElement('valid', '', 'http://valid.com'); print "valid\n"; } catch (Exception $e) { print $e->getMessage() . "\n"; } print "18 DOMElement::__construct('prefix:valid', '', 'http://valid.com')\n"; try { $element = new DomElement('prefix:valid', '', 'http://valid.com'); print "valid\n"; } catch (Exception $e) { print $e->getMessage() . "\n"; } print "19 DOMElement::__construct('-invalid', '', 'http://valid.com')\n"; try { $element = new DomElement('-invalid', '', 'http://valid.com'); print "valid\n"; } catch (Exception $e) { print $e->getMessage() . "\n"; } print "20 DOMElement::__construct('prefix:-invalid', '', 'http://valid.com')\n"; try { $element = new DomElement('prefix:-invalid', '', 'http://valid.com'); print "valid\n"; } catch (Exception $e) { print $e->getMessage() . "\n"; } print "21 DOMElement::__construct('prefix:invalid', '', '')\n"; try { $element = new DomElement('prefix:invalid', '', ''); print "valid\n"; } catch (Exception $e) { print $e->getMessage() . "\n"; } print "22 DOMElement::__construct('prefix:valid:invalid', '', 'http://valid.com')\n"; try { $element = new DomElement('prefix:valid:invalid', '', 'http://valid.com'); print "valid\n"; } catch (Exception $e) { print $e->getMessage() . "\n"; } print "23 DOMElement::__construct('-prefix:valid', '', 'http://valid.com')\n"; try { $element = new DomElement('-prefix:valid', '', 'http://valid.com'); print "valid\n"; } catch (Exception $e) { print $e->getMessage() . "\n"; } print "24 DOMElement::__construct('prefix:valid', '', '-')\n"; try { $element = new DomElement('prefix:valid', '', '-'); print "valid\n"; } catch (Exception $e) { print $e->getMessage() . "\n"; } /* the qualifiedName has a prefix and the namespaceURI is null */ print "25 DOMDocument::createElementNS('', 'prefix:valid')\n"; try { $dom = new domDocument; $dom->createElementNS('', 'prefix:valid'); print "valid\n"; } catch (Exception $e) { print $e->getMessage() . "\n"; } /* the qualifiedName has a prefix that is "xml" and the namespaceURI is different from "http://www.w3.org/XML/1998/namespace" [XML Namespaces] */ print "26 DOMDocument::createElementNS('http://wrong.namespaceURI.com', 'xml:valid')\n"; try { $dom = new domDocument; $dom->createElementNS('http://wrong.namespaceURI.com', 'xml:valid'); print "valid\n"; } catch (Exception $e) { print $e->getMessage() . "\n"; } print "27 DOMElement::__construct('xml:valid', '', 'http://wrong.namespaceURI.com')\n"; try { $element = new DomElement('xml:valid', '', 'http://wrong.namespaceURI.com'); print "valid\n"; } catch (Exception $e) { print $e->getMessage() . "\n"; } /* This is okay because we reuse the xml namespace from the document */ print "28 DOMDocument::createElementNS('http://www.w3.org/XML/1998/namespace', 'xml:valid')\n"; try { $dom = new domDocument; $dom->createElementNS('http://www.w3.org/XML/1998/namespace', 'xml:valid'); print "valid\n"; } catch (Exception $e) { print $e->getMessage() . "\n"; } /* This isn't because the xml namespace isn't there and we can't create it */ print "29 DOMElement::__construct('xml:valid', '', 'http://www.w3.org/XML/1998/namespace')\n"; try { $element = new DomElement('xml:valid', '', 'http://www.w3.org/XML/1998/namespace'); print "valid\n"; } catch (Exception $e) { print $e->getMessage() . "\n"; } /* the qualifiedName or its prefix is "xmlns" and the namespaceURI is different from "http://www.w3.org/2000/xmlns/" */ print "30 DOMDocument::createElementNS('http://wrong.namespaceURI.com', 'xmlns:valid')\n"; try { $dom = new domDocument; $dom->createElementNS('http://wrong.namespaceURI.com', 'xmlns:valid'); print "valid\n"; } catch (Exception $e) { print $e->getMessage() . "\n"; } print "31 DOMElement::__construct('xmlns:valid', '', 'http://wrong.namespaceURI.com')\n"; try { $element = new DomElement('xmlns:valid', '', 'http://wrong.namespaceURI.com'); print "valid\n"; } catch (Exception $e) { print $e->getMessage() . "\n"; } print "32 DOMDocument::createElementNS('http://www.w3.org/2000/xmlns/', 'xmlns:valid')\n"; try { $dom = new domDocument; $dom->createElementNS('http://www.w3.org/2000/xmlns/', 'xmlns:valid'); print "valid\n"; } catch (Exception $e) { print $e->getMessage() . "\n"; } print "33 DOMElement::__construct('xmlns:valid', '', 'http://www.w3.org/2000/xmlns/')\n"; try { $element = new DomElement('xmlns:valid', '', 'http://www.w3.org/2000/xmlns/'); print "valid\n"; } catch (Exception $e) { print $e->getMessage() . "\n"; } /* the namespaceURI is "http://www.w3.org/2000/xmlns/" and neither the qualifiedName nor its prefix is "xmlns". */ print "34 DOMDocument::createElementNS('http://www.w3.org/2000/xmlns/', 'wrongprefix:valid')\n"; try { $dom = new domDocument; $dom->createElementNS('http://www.w3.org/2000/xmlns/', 'wrongprefix:valid'); print "valid\n"; } catch (Exception $e) { print $e->getMessage() . "\n"; } print "35 DOMElement::__construct('wrongprefix:valid', '', 'http://www.w3.org/2000/xmlns/')\n"; try { $element = new DomElement('wrongprefix:valid', '', 'http://www.w3.org/2000/xmlns/'); print "valid\n"; } catch (Exception $e) { print $e->getMessage() . "\n"; } ?> --EXPECT-- 1 DOMDocument::createElement('valid') valid 2 DOMDocument::createElement('-invalid') Invalid Character Error 3 DOMDocument::createElement(' ') Invalid Character Error 4 DOMDocument::createElement('prefix:valid') valid 5 DOMDocument::createElementNS('http://valid.com', 'valid') valid 6 DOMDocument::createElementNS('http://valid.com', 'prefix:valid') valid 7 DOMDocument::createElementNS('http://valid.com', '-invalid') Namespace Error 8 DOMDocument::createElementNS('http://valid.com', 'prefix:-invalid') Namespace Error 9 DOMDocument::createElementNS('', 'prefix:invalid') Namespace Error 10 DOMDocument::createElementNS('http://valid.com', 'prefix:valid:invalid') Namespace Error 11 DOMDocument::createElementNS('http://valid.com', '-prefix:valid') Namespace Error 12 DOMDocument::createElementNS('-', 'prefix:valid') valid 13 DOMElement::__construct('valid') valid 14 DOMElement::__construct('-invalid') Invalid Character Error 15 DOMElement::__construct(' ') Invalid Character Error 16 DOMElement::__construct('prefix:valid') Namespace Error 17 DOMElement::__construct('valid', '', 'http://valid.com') valid 18 DOMElement::__construct('prefix:valid', '', 'http://valid.com') valid 19 DOMElement::__construct('-invalid', '', 'http://valid.com') Invalid Character Error 20 DOMElement::__construct('prefix:-invalid', '', 'http://valid.com') Namespace Error 21 DOMElement::__construct('prefix:invalid', '', '') Namespace Error 22 DOMElement::__construct('prefix:valid:invalid', '', 'http://valid.com') Namespace Error 23 DOMElement::__construct('-prefix:valid', '', 'http://valid.com') Invalid Character Error 24 DOMElement::__construct('prefix:valid', '', '-') valid 25 DOMDocument::createElementNS('', 'prefix:valid') Namespace Error 26 DOMDocument::createElementNS('http://wrong.namespaceURI.com', 'xml:valid') Namespace Error 27 DOMElement::__construct('xml:valid', '', 'http://wrong.namespaceURI.com') Namespace Error 28 DOMDocument::createElementNS('http://www.w3.org/XML/1998/namespace', 'xml:valid') valid 29 DOMElement::__construct('xml:valid', '', 'http://www.w3.org/XML/1998/namespace') Namespace Error 30 DOMDocument::createElementNS('http://wrong.namespaceURI.com', 'xmlns:valid') Namespace Error 31 DOMElement::__construct('xmlns:valid', '', 'http://wrong.namespaceURI.com') Namespace Error 32 DOMDocument::createElementNS('http://www.w3.org/2000/xmlns/', 'xmlns:valid') valid 33 DOMElement::__construct('xmlns:valid', '', 'http://www.w3.org/2000/xmlns/') valid 34 DOMDocument::createElementNS('http://www.w3.org/2000/xmlns/', 'wrongprefix:valid') Namespace Error 35 DOMElement::__construct('wrongprefix:valid', '', 'http://www.w3.org/2000/xmlns/') Namespace Error
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php