#19562 [Opn->Csd]: xml_parse_into_struct does not follow XML 1.0 specs w.r.t. default attributes
| From: | chregu@php.net | Date: | Thu, 28 Nov 2002 13:30:35 +0000 |
| Subject: | #19562 [Opn->Csd]: xml_parse_into_struct does not follow XML 1.0 specs w.r.t. default attributes | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-26089@lists.php.net to get a copy of this message | ||
ID: 19562
Updated by: chregu@php.net
Reported By: mmicu@voyanttech.com
-Status: Open
+Status: Closed
Bug Type: XML related
Operating System: Solaris 2.8
PHP Version: 4.2.3
New Comment:
xml_parse_into_struct uses expat as xml-parser and expat is a
non-validating parser which does not care about DTDs (AFAIK)
chregu
Previous Comments:
------------------------------------------------------------------------
[2002-09-23 13:21:52] mmicu@voyanttech.com
XML 1.0 specs say that default attribute values will be parsed as if
those attributes were directly specified:
From the XML 1.0 Spec
(http://www.w3.org/TR/2000/REC-xml-20001006#attdecls)
"[Definition: If the declaration is neither #REQUIRED nor #IMPLIED,
then the AttValue value contains the declared default value; the #FIXED
keyword states that the attribute must always have the default value.
If a default value is declared, when an XML processor encounters an
omitted attribute, it is to behave as though the attribute were present
with the declared default value.]"
I have the following DTD:
<!ELEMENT J ...>
<!ATTLIST J att #FIXED 20>
and the following XML:
<J>
...
</J>
The xml_parse_into_struct function does NOT place the attribute
"att=20" into the struct. Furthermore, if I change the XML to read:
<J att=45>
...
</J>
xml_parse_into_struct WILL place the attribute "att=45" into the struct
(so non-default attributes DO work), but in actuality, this should
fail, because the #FIXED keyword specifies that the value cannot be
changed.
-MM
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=19562&edit=1