php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #19562 xml_parse_into_struct does not follow XML 1.0 specs w.r.t. default attributes
Submitted: 2002-09-23 13:21 UTC Modified: 2002-11-28 07:30 UTC
From: mmicu at voyanttech dot com Assigned:
Status: Closed Package: XML related
PHP Version: 4.2.3 OS: Solaris 2.8
Private report: No CVE-ID: None
 [2002-09-23 13:21 UTC] mmicu at voyanttech dot 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

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2002-11-28 07:30 UTC] chregu@php.net
xml_parse_into_struct uses expat as xml-parser and expat is a non-validating parser which does not care about DTDs (AFAIK)

chregu
 [2004-07-26 17:55 UTC] qwer70019 at hotmail dot com
hamad
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Fri Apr 19 18:01:28 2024 UTC