The confusing thing is that we said "a mimetype is a servicetype". But that's not exactly correct.
As Waldo noted, "the ability to open a mimetype" is what's a servicetype.
So if text/xml said X-KDE-Derived=text/plain (i.e. ST1=text/xml, ST2=text/plain),
So if text/xml said X-TDE-Derived=text/plain (i.e. ST1=text/xml, ST2=text/plain),
then an application opening text/xml (ST1) could also open text/plain (ST2) - which is not necessarily true.
We want the other way round: to be able to open special kinds of text/plain in a plain text editor.
This is what X-KDE-IsAlso was introduced for. X-KDE-IsAlso kind of "works the other way" than X-KDE-Derived.
This is what X-TDE-IsAlso was introduced for. X-TDE-IsAlso kind of "works the other way" than X-TDE-Derived.
If M1 is a special kind of M2 (mimetypes), then "the ability to open M2" derives from "the ability to open M1"
So we say in text/xml: X-KDE-IsAlso=text/plain, and applications that can open text/plain can also open text/xml.
So we say in text/xml: X-TDE-IsAlso=text/plain, and applications that can open text/plain can also open text/xml.
Pattern Accuracy
======================
In some cases of inheritance several mimetypes shares the same extension (with the primary case being Ogg Multimedia files).
This has been solved sofar by matching the extension to most generic mimetype. To indicate that the mimetype can be refined further, the flag X-KDE-PatternsAccuracy can be set. The value to X-KDE-PatternsAccuracy is a number between 0-100, with 100 being the default if not set. Any values below 100 is interpreted as the possibility of further mimetype refinement.
This has been solved sofar by matching the extension to most generic mimetype. To indicate that the mimetype can be refined further, the flag X-TDE-PatternsAccuracy can be set. The value to X-TDE-PatternsAccuracy is a number between 0-100, with 100 being the default if not set. Any values below 100 is interpreted as the possibility of further mimetype refinement.
kdWarning()<<"Desktop file "<<path<<" contains an invalid X-KDE-ShowIfDcopCall - the function must take the exact parameter (KURL::List) and must be specified."<<endl;
kdWarning()<<"Desktop file "<<path<<" contains an invalid X-TDE-ShowIfDcopCall - the function must take the exact parameter (KURL::List) and must be specified."<<endl;