diff --git a/src/calibre/ebooks/conversion/plugins/epub_output.py b/src/calibre/ebooks/conversion/plugins/epub_output.py index 48ee28be6e..f09f2560b0 100644 --- a/src/calibre/ebooks/conversion/plugins/epub_output.py +++ b/src/calibre/ebooks/conversion/plugins/epub_output.py @@ -144,6 +144,22 @@ class EPUBOutput(OutputFormatPlugin): for u in XPath('//h:u')(root): u.tag = 'span' u.set('style', 'text-decoration:underline') + + seen_ids, seen_names = set(), set() + for x in XPath('//*[@id or @name]')(root): + eid, name = x.get('id', None), x.get('name', None) + if eid: + if eid in seen_ids: + del x.attrib['id'] + else: + seen_ids.add(eid) + if name: + if name in seen_names: + del x.attrib['name'] + else: + seen_names.add(name) + + # }}} def convert(self, oeb, output_path, input_plugin, opts, log):