#41634 [Opn->Bgs]: DOM XML tags with empty value generate different xml than tags with no value
| From: | rrichards@php.net | Date: | Fri, 08 Jun 2007 15:28:22 +0000 |
| Subject: | #41634 [Opn->Bgs]: DOM XML tags with empty value generate different xml than tags with no value | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-113581@lists.php.net to get a copy of this message | ||
ID: 41634
Updated by: rrichards@php.net
Reported By: evan dot kaufman at gmail dot com
-Status: Open
+Status: Bogus
Bug Type: DOM XML related
Operating System: Mac OS X
PHP Version: 5.2.3
New Comment:
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to
report
a bug at http://bugs.php.net/how-to-report.php
createElement, by the spec, only accepts 1 argument and creates an
element node (no content - behavior you see not passing in argument).
When you pass in the second arg (which the binding allows by expanding
upon the spec, you are thereby asking for text node to be created within
the element and and thus if empty produces open and close tag.
If you don't want that then don't pass 2nd (optional) arg.
Previous Comments:
------------------------------------------------------------------------
[2007-06-08 14:20:53] evan dot kaufman at gmail dot com
Description:
------------
When a tag created with DOMDocument->createElement() is given *no*
value, its generated output (using DOMDocument->saveXML()) is a
shortened (self-closing) tag, but when it is given an *empty* value such
as a blank string or NULL, it displays as an expanded (opening and
closing) tag.
Shouldn't any empty value be treated the same? If anyone really wanted
expanded tags, they could use the already implemented LIBXML_NOEMPTYTAG
option, but there is no equivalent option to ask for shortened tags.
Reproduce code:
---------------
$doc1 = new DOMDocument();
$root1 = $doc1->createElement('root');
$doc1->appendChild($root1);
printf( "doc1: %s\n", $doc1->saveXML() );
$doc2 = new DOMDocument();
$root2 = $doc2->createElement('root', '');
$doc2->appendChild($root2);
printf( "doc2: %s\n", $doc2->saveXML() );
$doc3 = new DOMDocument();
$root3 = $doc3->createElement('root', NULL);
$doc3->appendChild($root3);
printf( "doc3: %s\n", $doc3->saveXML() );
Expected result:
----------------
doc1: <?xml version="1.0"?><root/>
doc2: <?xml version="1.0"?><root/>
doc3: <?xml version="1.0"?><root/>
Actual result:
--------------
doc1: <?xml version="1.0"?><root/>
doc2: <?xml version="1.0"?><root></root>
doc3: <?xml version="1.0"?><root></root>
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=41634&edit=1