XSPF 中每个 <track> 多个 <location> 元素

multiple <location> elements per <track> in XSPF

用于解析 XSPF document, the specification states that a <track> element can have zero or more <location> elements to define the URI of a resource to be rendered。例如:

<?xml version="1.0" encoding="UTF-8"?> <playlist version="1" xmlns="http://xspf.org/ns/0/"> <trackList> <track> <location>http://example.com/song_1.ogg</location> <location>http://mirror.xyz/example.com/song_1.ogg</location> </track> <track> <location>http://example.com/song_2.ogg</location> <location>http://example.com/song_2.mp3</location> </track> </trackList> </playlist>

我的问题是这是否允许:

目前 VLC 和 Audacious 都使用 <track> 中提供的最后一个 <location>,即使它不可用。因此他们似乎只使用了最后一个 <location> 元素,这似乎不是规范的意图。无论哪种方式,他们都不会执行我上面列出的任何解决案例。

显然,这些位置的解释方式会改变包含 <location> 元素的 <track> 元素的解析器的预期行为。第一种情况提供了一个很好的后备解决方案。对我来说更有趣的是,第二种情况简化了需要 2 个播放列表的情况,1 个用于 Ogg Vorbis,1 个用于 MP3 版本的曲目,例如 M3U 和 PLS 就必须这样做。

因此:对于 XSPF 中单个 <track> 的 handling/resolving 多个 <location> 元素是否有标准或推荐的行为?

谢谢

我作为规范的作者之一发言。

location 元素的基数是 "zero or more." 选择它而不是 "zero or one" 是为了支持您提到的两种用例(回退和替代媒体类型)。

VLC 和 Audacious 只使用最后一个位置的做法是不正确的实现。

也就是说,我们的策略是让构建弱解析器变得容易,并且可以构建强大的解析器。如果 VLC 或 Audacious 随着时间的推移通过添加对冗余位置的支持而变得更强大,那么这个过程就会如期进行。