DTD for Kdenlive

Camille camille.moulin at free.fr
Thu May 24 11:14:25 UTC 2018

Hi all,

Still on the topic of file format. I think it could be a good idea to 
have a validating dtd for kdenlive: that could help diagnosing 
wrongly-formed files and would also be a kind-of-human-readable 
documentation for the format: as I couldn't find any in the source tree, 
I started making one from mlt-xml.dtd. Do you think it would actually be 
useful ?

It seems it shouldn't be too much work. I tried to validate a simple 
Kdenlive file against the mlt-xml.dtd and "fixed" the errors of the fly 
; I found two categories of issues:

- Adding attributes and children elements, which is straightforward.  I 
always assumed CDATA for the type (so there is room for optimisation if 
we want stricter control: e.g the hide element could have a more 
constrained type, I guess). Just a few points that should be addressed :
     -  In the DTD, Playlist can't be empty, as they must have a least  
one of the following elements : (entry | blank | producer | playlist | 
property | tractor | multitrack)+. But I get an empty one in my simple 
example : which is correct ?
     - In the DTD, tractor has a mandatory multitrack child element :  
tractor (multitrack, (filter | property | track| transition)*) , but 
such child element never appears in my example. Should it be tractor 
(multitrack | filter | property | track| transition)+ ?

- ID /IDREF types issues. It seems that most issues related IDs has been 
fixed between "Generation 2" and "Generation 3" formats. There is one 
remaining, "main bin" as you can't have spaces in IDs 
(https://www.w3.org/TR/REC-xml/#NT-Name ). could that be fixed in the 
code, or should  we give  up on the ID/IDREFS types  and just use  CDATA ?


More information about the kdenlive mailing list