[Playlist] DTD for XSPF

Lucas Gonze lgonze at panix.com
Sun Dec 9 06:25:47 UTC 2007


For places where DTD just can't do the job, would we help out people who 
insist on using it by providing your DTD and documenting the 
shortcomings of the approach?  There's quite a few !1 and !2 there --- 
does the remainder cover enough turf to be more of a help than not?

Hans Engel wrote:
> No, I have not yet done so, but I will right now. Here are the results,
> checked with xmlstarlet and my DTD:
> 
> Pass:
> playlist-empty-annotation.xspf					OK
> playlist-empty-creator.xspf					OK
> playlist-empty-meta.xspf					OK
> playlist-empty-title.xspf					OK
> playlist-extension.xspf						!1
> playlist-extensive.xspf						!2
> playlist-inverted-order.xspf					!3
> playlist-namespace-nested-proper.xspf				!4
> playlist-namespace-nondefault.xspf				!
> playlist-namespace-two-additions.xspf				!
> playlist-relative-paths.xspf					OK
> playlist-whitespace-dateTime.xspf				OK
> track-empty-album.xspf						OK
> track-empty-annotation.xspf					OK
> track-empty-creator.xspf					OK
> track-empty-meta.xspf						OK
> track-empty-title.xspf						OK
> track-extension.xspf						OK
> track-extensive.xspf						!2
> track-inverted-order.xspf					!3
> track-whitespace-anyURI.xspf					OK
> track-whitespace-nonNegativeInteger.xspf			OK
> ------------------------------------------------------------------
> Fail (OK is good here):
> playlist-attribute-forbidden-annotation.xspf			OK
> playlist-baddate.xspf						!2
> playlist-badversion.xspf					!2
> playlist-broken-relative-paths.xspf				!2
> playlist-element-forbidden-attribution.xspf			OK
> playlist-markup-annotation.xspf					OK
> playlist-markup-creator.xspf					OK
> playlist-markup-meta.xspf					OK
> playlist-markup-title.xspf					OK
> playlist-missingtracklist.xspf					OK
> playlist-missingversion.xspf					OK
> playlist-namespace-missing.xspf					!
> playlist-namespace-nested-broken.xspf				OK
> playlist-namespace-wrong-string.xspf				!
> playlist-nonleaf-content-attribution.xspf			OK
> playlist-nonleaf-content-playlist.xspf				OK
> playlist-nonleaf-content-trackList.xspf				OK
> playlist-noturi-attribution-identifier.xspf			!2
> playlist-noturi-attribution-location.xspf			!2
> playlist-noturi-extension.xspf					!2
> playlist-noturi-identifier.xspf					!2
> playlist-noturi-image.xspf					!2
> playlist-noturi-info.xspf					!2
> playlist-noturi-license.xspf					!2
> playlist-noturi-link-content.xspf				!2
> playlist-noturi-link-rel.xspf					!2
> playlist-noturi-location.xspf					!2
> playlist-noturi-meta.xspf					!2
> playlist-root-name.xspf						OK
> playlist-toomany-annotation.xspf				OK
> playlist-toomany-attribution.xspf				OK
> playlist-toomany-creator.xspf					OK
> playlist-toomany-date.xspf					OK
> playlist-toomany-identifier.xspf				OK
> playlist-toomany-image.xspf					OK
> playlist-toomany-info.xspf					OK
> playlist-toomany-license.xspf					OK
> playlist-toomany-location.xspf					OK
> playlist-toomany-title.xspf					OK
> playlist-toomany-tracklist.xspf					OK
> track-badint-duration.xspf					!2
> track-badint-tracknum.xspf					!2
> track-markup-album.xspf						OK
> track-markup-annotation.xspf					OK
> track-markup-creator.xspf					OK
> track-markup-meta.xspf						OK
> track-markup-title.xspf						OK
> track-nonleaf-content.xspf					OK
> track-noturi-extension.xspf					!2
> track-noturi-identifier.xspf					!2
> track-noturi-image.xspf						!2
> track-noturi-info.xspf						!2
> track-noturi-link-rel.xspf					!2
> track-noturi-link.xspf						!2
> track-noturi-location.xspf					!2
> track-noturi-meta-rel.xspf					!2
> track-toomany-album.xspf					OK
> track-toomany-annotation.xspf					OK
> track-toomany-creator.xspf					OK
> track-toomany-duration.xspf					OK
> track-toomany-image.xspf					OK
> track-toomany-info.xspf						OK
> track-toomany-title.xspf					OK
> track-toomany-tracknum.xspf					OK
> track-whitespace-in-between.xspf				!2
> xml-error.xspf							OK
> 
> !1 - The inflexibility of DTDs has caused an error with this file,
> because of the element <track> used inside the extension. <track> is
> declared elsewhere, and it's confusing the parser.
> 
> !2 - Again, the inflexibility of DTDs are causing the problem here. I'll
> try to figure out a way around this.
> 
> !3 - This one is my fault; I didn't pause to think that the elements
> could be put in any random order.
> 
> !4 - I did not add the "xmlns" attribute to every element.
> ------------------------------------------------------------------
> Hm, well that really proved how bad DTDs are. I will fix with the DTD
> what I can, but most of the problems here are due to the inflexibility
> of the DTD format.. RNG is just better overall. I suppose that's why I'm
> the first to make this DTD.
> 
> On Sat, 2007-12-08 at 16:36 -0800, Lucas Gonze wrote:
>> Many thanks for making this, Engel.
>>
>> Have you tested it against the testcases at 
>> https://trac.xiph.org/browser/trunk/xspf/testcase?  If so, how did it fare?
>>
>>
>>
>> Hans Engel wrote:
>>> I forgot to add: This DTD was made from the Relax NG Schema on the XSPF
>>> site.
>>>
>>> On Sat, 2007-12-08 at 14:44 -0700, Hans Engel wrote:
>>>> Hi,
>>>> I just finished developing a DTD (Document Type Definition) for XSPF to
>>>> use. This way, a doctype can be declared in each XSPF file and be more
>>>> easily validated.
>>>>
>>>> You can download the doctype here:
>>>>
>>>> http://engel.uk.to/etc/xspf.dtd
>>>>
>>>> To reference this doctype in your XSPF files, insert this line before
>>>> "<?xml":
>>>>
>>>> <!DOCTYPE playlist PUBLIC "XSPF" "http://engel.uk.to/etc/xspf.dtd">
>>>>
>>>> Thanks,
>>>> Engel
>>>>
>>>>
>>>> _______________________________________________
>>>> Playlist mailing list
>>>> Playlist at lists.musicbrainz.org
>>>> http://lists.musicbrainz.org/mailman/listinfo/playlist
>>>
>>> _______________________________________________
>>> Playlist mailing list
>>> Playlist at lists.musicbrainz.org
>>> http://lists.musicbrainz.org/mailman/listinfo/playlist
>>>
>>>
>>
>> _______________________________________________
>> Playlist mailing list
>> Playlist at lists.musicbrainz.org
>> http://lists.musicbrainz.org/mailman/listinfo/playlist
> 
> 




More information about the Playlist mailing list