On Dec26, 2013, at 21:30 , Florian Pflug <fgp@phlo.org> wrote:
> On Dec23, 2013, at 18:39 , Peter Eisentraut <peter_e@gmx.net> wrote:
>> On 12/19/13, 6:40 PM, Florian Pflug wrote:
>>> The following example fails for XMLOPTION set to DOCUMENT as well as for XMLOPTION set to CONTENT.
>>>
>>> select xmlconcat(
>>> xmlparse(document '<!DOCTYPE test [<!ELEMENT test EMPTY>]><test/>'),
>>> xmlparse(content '<test/>')
>>> )::text::xml;
>>
>> The SQL standard specifies that DTDs are dropped by xmlconcat. It's
>> just not implemented.
>
> OK, cool, I'll try to figure out how to do that with libxml
Hm, I've read through the (draft) SQL/XML 2003 standard, and it seems that
it mandates more processing of DTDs than we currently do. In particular, it
says that attribute default values and custom entities are to be expanded
by xmlparse(). Without doing that, stripping the DTD can change the meaning
of an XML document, or make it not well-formed (in the case of custom
entity definitions). So I think that we unless we implement that, I we have
to raise an error, not silently strip the DTD.
best regards,
Florian Pflug