v0.7.10
If you validate EPUB 2 books, upgrade. Seven false positives fixed — cases
where epubveri rejected markup that epubcheck accepts. All were EPUB 3 rules
leaking into the EPUB 2 branch, found by auditing our rules against
epubcheck's own schema/20 instead of waiting for reports. No verdict changes
on the epubcheck test corpus.
Fixed
<a name="…">no longer drawsRSC-005. The classic pre-idanchor
form, so internal links in a large share of older EPUB 2 books were being
rejected. OPS 2.0.1 assemblesa's attribute list from four modules and
epubveri carried only one of them;target,charset,rel,rev,
shape,coordsandusemapwere missing for the same reason, andimg
was missinglongdesc,name,shapeandcoords.- An empty
<title>is no longer an error on EPUB 2. XHTML 1.1 types
<title>as text, which permits empty content; epubcheck asserts non-empty
only for EPUB 3. langandxml:langmay differ on EPUB 2. XHTML 1.1 declares them as
independent attributes with nothing tying their values together.- A nested
<dfn>is no longer an error on EPUB 2 — that rule is EPUB 3
only. - The legacy
<tours>package child is accepted, asopf20.rngallows.
Added
- Six NCX checks, completing epubcheck's
ncx.sch: theplayOrder
sequence must start at 1 and have no gaps, elements naming the same target
must share aplayOrder, apageTarget'svalue+typecombination must
be unique, and siblingnavLabel/navInfoelements must not repeat an
xml:lang. AllRSC-005, and all reported per offending element. scripts/scan-shelf.sh— runs epubveri over a directory of real EPUBs and
summarises verdicts, error-level findings, and the number of distinct
messages per ID. The corpus cannot find false positives; real books can.
Full notes: CHANGELOG.md. Also on crates.io.