If you unzip your epub and open the content.opf file, you'll see the unique-identifier attribute on the <package> element points to a <dc:identifier> element containing the unique identifier. Your error message is telling you that this dc:identifier element has the value 'Aspose'.

This unique identifier also has to be included in the NCX file (the EPUB 2 navigation document), as per this requirement in EPUB 2:

The list of required metadata provided in http://www.niso.org/workrooms/daisy/Z39-86-2005.html#NavMeta does not apply to EPUB; the only required meta is that which contains a content reference to the OPF unique ID. For backwards compatibility reasons, the value of the name of that meta remains dtb:id.

I opened an issue about this a long time back, though, because dtb:id here is supposed to be dtb:uid, since there is no dtb:id metadata element defined in the NCX specification.

In other words, if you open the NCX file in your EPUB, you're supposed to find a meta tag like this with the same unique identifier value:

<meta name="dtb:uid" content="Aspose"/>

It's value has to match the unique identifier in the package document, but in your case it doesn't which is why you're getting that error. It could be that the value hasn't been inserted, or it could be that the developers of the program you used followed the incorrect guidance in the specification and added a dtb:id meta tag I can't answer that for you.

If you're comfortable unpacking, fixing and repacking your epub, it shouldn't take you more than a minute or two to make the above fix, but sounds like something you should report to the developers of the program.

The name 'Aspose' isn't a particularly "unique" identifier to be giving to generated epus, either, although most reading system cope with multiple books giving themselves the same ID.

It's not surprising that sigil doesn't report an error; it uses the old flightcrew validator. To get into many bookstores you need to have a file that validate against epubcheck, so treat sigil as more of an informative validation pass.

Hello Matt, many many thanks for your quick response. It is most appreciated.

I made the change to: <meta content="Aspose" name="dtb:uid"/>
Sigil reported 'No problems found' and I did a java -jar check and received: "No errors or warnings detected". Finally. (-:

[Before trying Aspose I tried to create the ePub file with Calibre, with Sigil, and also created a Google docs version from the Word, but received quite a few errors. Looks like Aspose does its job.]

I guess I am not up to speed with the newer technologies. I tried to open the ePub file with the one Adobe version I have – Adobe Reader X, and received an error message that it cannot open the file. I did some googling and learned I needed Adobe Digital. So I downloaded this and was able to open my ePub file… thanks to you. I see I need to do some formatting – can you possibly tell me why new chapters (h1) do not appear at top of page?

If you like to read international thrillers… about terrorists and an atomic bomb planned to be detonated in the Middle East… only to be saved by two heroes – one Muslim, one Israeli, then would be pleased to send you…

When you create dynamically paginated EPUBs, it's not dissimilar to thinking of what would happen to a web page if only a segment at a time could be displayed (and each segment called a "page"). The layout engines, to generalize, will render the entire document and then present it by chunk -- how much being seen with each "page turn" depending on the font family, size, etc.

Since there is nothing special about headings by default, forcing a page break (when the pages don't really exist), is not something the engines are designed to do (and you'd have people then asking how to stop the behaviour). In theory, the CSS page-break-before property could be used to set a page break before a heading, but in reality the property isn't supported.

The only reliable way to force a page break before a heading is to split your content up into separate files by major heading. Each time a new content document in the spine is loaded, the previous is unloaded, so the new content will start at the top of the viewport (page).

I believe aspose has an option to split content by heading that will do this chunking automatically for you, but unfortunately that means you'll have to do a redo on anything you've done since you generated your content, unless you're comfortable chunking documents manually and adding them to the package document manifest and spine.