EPUB 3ではnav文書が中心ですが、古い読書環境向けのNCXを同梱する場合があります。epub ncxの確認では、現行目次の代わりだと誤解せず、navとNCXを二つの出力として照合します。片方の存在で、もう片方を検査済みにしません。
nav6件とNCX6件を同じ章集合で確認した
6章の合成原稿を出力し、spine9、navリンク6、NCXのnavPoint6、画像0、valid=trueを得ました。navとNCXは別々のハッシュで保存されています。OPFからはタイトル、言語ja、出版社も読み戻しました。
失敗は、章名を変更してnavだけが更新され、NCXに旧名称が残ることです。件数が6対6でも、表示名または参照先が違えば互換目次として不完全です。復旧では両ファイルから順序、ラベル、参照先を抽出し、6行の対応表で差のある行だけを直して再生成します。
合格は、6章に対するnavとNCXの順序・名称・参照先が一致し、OPFから両資源へ到達できることです。NCXがある事実は古い全端末での表示を保証せず、販売先受理も別判定です。
NCXのplayOrderだけに頼らず参照を解決する
NCXではnavPointの並び、表示ラベル、content srcを取り出し、nav文書の同じ章と横に並べます。番号が連続していても、srcが古いXHTMLを指せば互換目次は不合格です。六章の各行で三値が一致し、OPFがNCX資源を宣言していることまで確かめます。
修正時にNCXを手書きすると、次回生成で消えたりnavと再びずれたりします。章情報や目次選択の元データを直し、生成し直す方が再現できます。古い端末での実表示は端末試験へ残し、NCX六件という構造値だけから互換性を保証しません。
navとNCXでラベルが違う一件を作る負の試験
検査手順を確かめるには、複製上でNCXの一ラベルだけを意図的に変え、照合表がその一行を不合格にできるか試します。合計は6対6のままなので、件数だけの検査は通ります。ラベル・参照先・順序を読む検査だけが差を見つけます。
負の試験後は生成物を破棄せず失敗見本として隔離し、元データから正常版を再出力します。パッケージ内を手で戻した版は採用しません。
古い端末の表示確認を行う場合は、端末名とアプリ版、選択した章、到着先を記録します。NCXが存在することと、特定端末が利用することは別の事実です。
互換目次を採用する前の復元試験
正常版のNCXを退避したうえで、元の章設定からもう一度生成します。二回のNCXについて正規化したラベル、参照先、順序が一致するかを比べます。時刻など実行ごとに変わる情報があれば比較対象から分け、章に関する六行だけを判定します。再生成で同じ値にならなければ、手書き修正や外部変更が混ざっていないかを調べます。
nav文書についても同じ六行を作り、NCXの行と一対一で結びます。片方にだけフラグメントがある場合は、実際の到着位置が同じかXHTMLで確認します。参照文字列が完全一致しなくても意味が同じ場合を扱えるためです。
最後に、OPFからNCXとnavの資源宣言をたどります。ファイルがZIP内にあるだけでは、パッケージが利用する資源だと確定できません。宣言、内容、到着先の三層がそろった時点で互換目次を受け入れます。
navとNCXは章名だけでなく参照先で対にする
STUDIO-263の専用本は六章、版1.3、spine9、画像0、欠落0、nav6件、NCX6件、valid=trueでした。ここから先はnavの表示ラベルとhref、NCXのnavLabelとcontent srcを一章ずつ対にします。playOrderが1から6まで連番でも、srcが重複していれば合格にしません。
第三章のラベルだけ変える負の試験
検査用複製でNCXの第三章ラベルを「付録」へ変え、srcは第三章のままにします。参照解決だけなら成功しますが、navとのラベル対照が一件の不合格を返すことを確かめます。近似した内容の章があっても、自動的に同一視しません。
修復は出力物を書き換えず、元の見出しまたは章選択を修正して再出力します。新EPUBでnavとNCXの全章対照をやり直し、第三章だけを検査して終えません。
古いReaderへ渡すなら対象名を受入票に書く
NCXの収録は互換経路を用意した証拠であり、特定の旧Readerで操作できた証拠ではありません。端末型番またはアプリ版、EPUB SHA、選択ラベル、到達章題を一台ずつ残します。物理的な旧端末の未実測をvalid=trueで埋めません。
navとNCXの対応を別担当へ渡す最終票
最終票の一行目にSTUDIO-263の入力パスとSHA-256、二行目に実行した画面名または命令、三行目に保存後の再読込値を記録します。このテーマで必要な比較列は「navLabel、href、NCX label、content src、対象Reader」です。どの値が入力、保存、生成物、表示のどの層に属するかを空欄にせず書きます。
NCX互換が不合格のときは、返り先をその層に限定します。入力なら読み込み複製、保存なら別名の復旧ファイル、生成なら新しいEPUB、表示ならReader名付きの再試験です。失敗したファイルを上書きせず、復旧結果に別SHAを付けることで、修正者と査読者が同じ差分を見られます。
この最終票の判定原則は「NCX収録と旧端末操作済みを同義にしない」ことです。ローカルの構造検査が合格しても、販売先受理、全Readerの同一表示、未操作のUIは別の未検証欄に残します。次の担当者が一枚の票から実測済みと未実測を読み分けられることが完了条件です。