2017年3月までに、NetflixはTTMLスキーマ検査機能を追加実装します。
今回更新されるTTML構文解析ツールはソースの受け入れ検査を行う際にTTML標準スキーマを使用します。多くのパートナーから納品されたTTMLファイルを調査した結果、以下のエラーが最も多く確認されました。社内でこれらのエラーについて確認していただき、新しい検査機能が追加されるまでにTTMLファイルが正しい状態であることを確認してください。
xml:lang が定義されていません。このプロパティは必ず定義されていなければならず、定義される場所はトップレベルのttエレメント内になります。xml:lang は空の文字列(“”)になることもあるかもしれませんが、可能な限りファイルのコンテンツと一致した有効な言語コードが入るようにしてください。
xml:lang が正しくフォーマットされていません。例えば、言語コードに pt_BR と入力されていた場合、アンダースコアはRFC 4646: Tags for Identifying Languagesにおいて許容されていないため、検査でエラーとなります。正しい言語コードは代わりにダッシュを使用した pt-BRです。
id 対 xml:id
id は以前のバージョンのTTML仕様では許容されていましたが、承認されたTTML仕様 v1より前から存在します。idは単純にxml:idと置き換えてください。
xml:id が正しくフォーマットされていません。値はアルファベットと数字を使用し、最初の1文字は数値を使わないでください。
同じ xml:id 値が複数回使用されています。この属性はドキュメント内に唯一のものでなければならず、スタイルリファレンスを正しく逆参照している必要があります。
無効な属性があります。スキーマ検査では全ての定義された属性がTTML仕様に沿って有効であることを確認します。ソース内にTTML以外の属性が多く見受けられました (例: ccol, ccrow等)。TTML仕様で定義されていない属性は削除してください。
TTMLスキーマ整合性はSkynav TTLツールを使うことで確認することができます:
http://www.skynav.com:8080/ttv/verify
TTMLの例:
<?xml version="1.0" encoding="utf-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:ttp="http://www.w3.org/ns/ttml#parameter" xmlns:tts="http://www.w3.org/ns/ttml#styling" xmlns:ttm="http://www.w3.org/ns/ttml#metadata" xmlns:xml="http://www.w3.org/XML/1998/namespace" ttp:timeBase="media" ttp:frameRate="24" xml:lang="en">
<head>
<metadata>
<ttm:title>Sample TTML</ttm:title>
</metadata>
<styling>
<style xml:id="s1" tts:textAlign="center" tts:fontFamily="Arial" tts:fontSize="100%"/>
</styling>
<layout>
<region xml:id="bottom" tts:displayAlign="after" tts:extent="80% 40%" tts:origin="10% 50%"/>
<region xml:id="top" tts:displayAlign="before" tts:extent="80% 40%" tts:origin="10% 10%"/>
</layout>
</head>
<body region="bottom" style="s1">
<div>
<p xml:id="subtitle1" begin="00:00:01.375" end="00:00:05.750" style="s1" region="top" >TOP SAMPLE TEXT</p>
<p xml:id="subtitle2" begin="00:00:05.916" end="00:00:10.216" style="s1" >BOTTOM SAMPLE TEXT</p>
<p xml:id="subtitle3" begin="00:00:10.418" end="00:00:15.083" style="s1" region="top" >Top Hello</p>
<p xml:id="subtitle4" begin="00:00:15.391" end="00:00:20.558" style="s1" >Bottom Hello</p>
<p xml:id="subtitle5" begin="00:00:20.750" end="00:00:25.041" style="s1" >He had a great story.</p>
<p xml:id="subtitle6" begin="00:00:25.875" end="00:00:30.166" style="s1" >- Did he tell you what it was about?<br/>- He did.</p>
<p xml:id="subtitle7" begin="00:00:30.416" end="00:00:35.558" style="s1" >In 1992, a shipping container<br/>fell overboard</p>
<p xml:id="subtitle8" begin="00:00:35.858" end="00:00:40.091" style="s1" >on its way from China</p>
<p xml:id="subtitle9" begin="00:00:40.341" end="00:00:45.133" style="s1" >to the United States,<br/>releasing 29,000 rubber ducks</p>
<p xml:id="subtitle10" begin="00:00:45.325" end="00:00:50.041" style="s1" >into the Pacific Ocean.</p>
</div>
</body>
</tt>