In XML DTD's - When defining an element , we use #PCDATA to say that this element can contain any parseable text. When defining an attribute , we use CDATA to say that its value can be any character data.
CDATA as is used in XML is something which is not parsed by the XML parser (Multi character escape sequence). Consistently, when we use CDATA for defining an attribute ; the parser should not parse it. But , it does!
Then , Why Could not PCDATA have been used in place of CDATA for defining attributes?
Update - This has been kept this way to be backward compatible with SGML. What's the reasoning behind such naming in SGML ?
A CDATA section, like you would use in an element, is different from the CDATA attribute type.
The parsing that you are most likely observing (like entity references being resolved) is from attribute-value normalization.