HTML5中的这类问题总是包含两部分:它是否有效,如果我这样做会发生什么?
1.有效吗?
不是.虽然标记语言参考的链接似乎没有用,但因为它省略了一个关键事实. (见下文).
内容模型说:
If the element has a src attribute: zero or more track
elements, then transparent, but with
no media element descendants.
If the element does not have a src attribute: one or more source
elements, then zero or more track
elements, then transparent, but with
no media element descendants.
因此,当存在src属性时,源元素不会被特别调用为允许.
但那个“透明”的位呢?嗯,这意味着在audio元素的父元素内有效的元素在audio元素中也是有效的.因此,如果源元素在父元素中有效,那么即使音频元素具有src属性,它也在音频元素内有效.
那可能吗?如果我们检查the source element的规范,我们会看到可以使用该元素的上下文
As a child of a media element, before
any flow content or track elements.
因此音频元素的父元素将需要是媒体元素,即< video>或< audio>.
然而,回到音频元素的内容模型的定义(见上文),它表示音频不能具有媒体元素后代 – 因此音频元素不能嵌套在另一个音频元素中.类似地定义The video element,因此< source>不能是< audio>的有效孩子通过音频元素的内容模型的“透明”部分.
因此,具有src属性和< source>的音频元素.孩子不能有效.
(请注意,您链接到的标记语言参考页面未提及无媒体元素后代限制,因此我不相信可以从中确定正确的验证.)
2.如果我这样做会怎么样?
There are two ways to specify a media
resource, the src attribute, or source
elements. The attribute overrides the
elements.
换句话说,如果存在src属性,则任何< source>元素被简单地忽略了.
有关多个src属性的问题,请参阅Ian Boyd的答案.