XMLTV Format is technically not valid

First-time posting in this community! Recently ran into an issue attempting to use CDVR's EPG in a third-party program, and it seems to be due to how the API returns the XML. The below output is confirmed using the "xmltv" package available on APT/RPM repos:

tv_validate_file ./sample.xml
Timezone is +0100
The file is not valid according to the xmltv dtd:
 ./sample.xml:3: validity error : Element tv content does not follow the DTD, expecting (channel* , programme*), got (channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme programme channel programme channel programme channel programme channel programme programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme channel programme  ...
(removed more)

Hoping this could be easily fixed to allow CDVR's XML to be more widely compatible with third-party software!

Actually, the DTD does not specify that all channel elements must come before programme elements; it simply states that the parent tv element may contain 0 or more channel elements and 0 or more programme elements. If you read through the DTD yourself, you will see there are many places where the spec is intentionally vague.

I think this is something that needs to be filed as an issue against the maintained tools:

2 Likes