Quote:
Originally Posted by Toxaris
The problem is, that even if the validation is green, it is saying nothing. It can still be a broken. It checks several things, but not if the ePUB will work. The real issue is that all readers (and applications) have their own interpretation of the specifications and that the specifications give room for interpretation.
Sticking to the specifications and standards is always a good idea, but the validation will not help you with that.
|
Back in the long long-ago, in my first Computer Science class, I was taught that there are three classes of errors when writing software: syntax, run-time, and logic. Take it as a given that when writing something, you're going to make mistakes; you want to pray that they're as close to the beginning of that list as possible, because that's the easiest stuff to fix.
A validator is strictly a syntax checker. Formats like EPUB have DTDs that define the permitted syntax in precise ways, and validation uses that data to catch all that easy stuff. If your book doesn't validate, nobody's going to care about fixing any rendering problems you have with it; all they have to do is point out that you're feeding the renderer invalid output, and that makes it your problem.
That certainly doesn't mean that every syntactically valid document will display properly; that's where run-time (in this case, rendering engine) and logic (ie. bad CSS rules that interact in an unforeseen way) problems come into play. However, you want to start on the firmest foundation you possibly can...and that means using validation.
Fun fact: Calibre deviates from the NCX specification in a way that the EpubChecker tool won't catch. Specifically, it assigns a dtb:depth value that is one level too high, because Kovid apparently misread that part of the spec. I know it's been called to his attention at least once, but he took the same sort of "meh, works okay, doesn't matter, won't fix it" approach described earlier in this thread. So, if you care about getting it right, don't forget to tweak that value...