Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
For an XML document to be valid it needs a Document Type Declaration (DTD).
In it's simplest form this looks like;
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root>
<root>
something here
</root>
QlikView 11 and 11.2 was fine reading such an XML document.
As of QlikView 12 and also in Qlik Sense this generates an error on the second row (the DTD)!
Reply from R&D through support is that it is working as expected!?!
Their solution is to remove the DTD before reading the file in QlikView.
<?xml version="1.0" encoding="UTF-8"?>
<root>
something here
</root>
But then it is no longer a valid XML document!
According to W3C an XML document must have a Document Type Declaration to be valid.
Without the DTD it might be well formed (readable with matching tags) but can never be valid.
Many XML-documents in circulation are missing the DTD and thus are well formed but not valid.
Conclusion, Qlik no longer supports valid XML!
R&D claims it to be for security reasons.
Has to be when using external DTD-file reference
but then it could read the XML document and ignore the DTD.
Claiming XML support but refusing to read any valid XML document is a contradiction.
I do agree but I think the creator of the XML file is responsible for a validation. To be sure an XML document is valid you could do a check with an external program before loading it into Qlik.
I can understand the concern with an external DTD, especially since a DTD can add data. But I would vote for ignoring the DTD with a warning for compatibility sake.
-Rob
Yes, but that's not the point.
Qlik refuses to read the document instead throws an error.
Since the file is a valid XML document Qlik should read the file.
Yes and that is the standpoint I tried to communicate to R&D.
Not sure though that my contact in support understood that.
He tried to throw the W3C standard in my face but that one backfired.
Last thing I heard they would make a fix in client but not in server!
I argued that it needs to be solved in server also for scheduled loads on server.
I agree. Any idea for a workaround yet?
How about load the file as ASCII row-wise, filter the DOCTYPE line / tag and the load it again from resident or field?
Sorry, should have mentioned.
A workaround exists by using Microsoft XML parser.
The format spec should then read;
(xmlSax, pattern [/root])
For this to work you need MSXML 3.0 or later installed.
Hi Anders,
I think on one side you should escalate this as much as possible on the qlik side.
On the other side we use the approach that Ralf described.
Load the file as txt file into qlik column. Fix the issue with a string operation.
Use Load from_field with the same old XML syntax.
We use that also to fix corrupt external XML Files.
bye Konrad
Got a call from support.
R&D has agreed it is a bug and they will fix it in a future release.
It will be fixed by adding a setting in the ini-file.
Will have to enable this setting but then both server and desktop will accept xml-documents with a DTD.
Naturally no release date communicated but hopefully in the next release.
Hi,
Has this been solved yet?