mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Edit book: Check book: Mark empty id attributes in the OPF as errors. See #1852318 (Private bug)
This commit is contained in:
parent
028241eb0e
commit
72e8b008bf
@ -23,6 +23,14 @@ class MissingSection(BaseError):
|
||||
'The <%s> section is required in the OPF file. You have to create one.') % section_name)
|
||||
|
||||
|
||||
class EmptyID(BaseError):
|
||||
|
||||
def __init__(self, name, lnum):
|
||||
BaseError.__init__(self, _('Empty id attributes are invalid'), name, lnum)
|
||||
self.HELP = xml(_(
|
||||
'Empty ID attributes are invalid in OPF files.'))
|
||||
|
||||
|
||||
class IncorrectIdref(BaseError):
|
||||
|
||||
def __init__(self, name, idref, lnum):
|
||||
@ -292,6 +300,10 @@ def check_opf(container):
|
||||
errors.append(MissingSection(container.opf_name, tag))
|
||||
|
||||
all_ids = set(container.opf_xpath('//*/@id'))
|
||||
if '' in all_ids:
|
||||
for empty_id_tag in container.opf_xpath('//*[@id=""]'):
|
||||
errors.append(EmptyID(container.opf_name, empty_id_tag.sourceline))
|
||||
all_ids.discard('')
|
||||
for elem in container.opf_xpath('//*[@idref]'):
|
||||
if elem.get('idref') not in all_ids:
|
||||
errors.append(IncorrectIdref(container.opf_name, elem.get('idref'), elem.sourceline))
|
||||
|
Loading…
x
Reference in New Issue
Block a user