以下摘录自http://www.w3.org/2008/12/dfxp-testsuite/web-framework/START.html (MediaSeqTiming002)的TTML测试套件:
<body timeContainer="par">
<div timeContainer="seq" dur="40s">
<div timeContainer="seq" dur="20s">
<metadata>
<ttm:desc>default duration for elements in this context is 0</ttm:desc>
</metadata>
<p begin="00:00:05:00" dur="5s">This text must appear at 5 seconds<br/>and be remain visible to 10 seconds,</p>
<p begin="00:00:05:00">This text must not appear.</p>
<p dur="00:00:05:00">This text must appear at 15 seconds<br/>and be remain visible to 20 seconds,</p>
</div>
[...]
</div>
</body>第二个<p>元素的文本(第8行)出现的要求不正确吗?我分析了TTML规范(http://www.w3.org/TR/ttaf1-dfxp/),发现了以下内容:
<p>元素有一个隐式持续时间,当它的所有子元素都处于非活动状态时(根据endsync=all表示并行timeContainers),它的隐式持续时间也是不确定的。因此,我认为“这个文本不能出现”应该从15s开始,到20秒结束,而第三个<p>不应该成为活动的。
测试似乎表明,第二个<p>的隐式持续时间应该是0。
我哪里错了?
发布于 2015-05-13 10:49:49
你没有错;我同意你的结论--参见我在W3C TTML时序属性的解释的解释
你给出的例子--我相信--决心:
This text must appear at 5 seconds<br/>and be remain visible to 10 seconds,This text must not appear.元数据描述似乎不正确。
分析
TTML1§10.4定时间隔说:
在这种情况下,div元素是(显式的) seq时间容器,而p元素是(隐式的) par时间容器。par timeContainer的隐式持续时间在SMIL 2.1中定义为
内隐持续时间 par的隐式持续时间由endsync控制。默认情况下,par的隐式持续时间由endsync=的“最后”语义定义。隐式持续时间以子元素的最后一个活动结束。
但是,TTML1指定endsync的适用值是"all",这意味着par timeContainer的隐式持续时间实际上是“直到其父timeContainer结束”。
为了完整性,seq timeContainer的隐式dur在SMIL 2.1中定义为
seq容器的隐式持续时间
当然,这在这里不适用,因为所有seq timeContainers都显式地指定了持续时间。
解决错误的测试
我把这个测试作为“坏”测试添加到了https://www.w3.org/AudioVideo/TT/tracker/issues/265的所有错误测试中。
https://stackoverflow.com/questions/30211013
复制相似问题