         for item in manifestItems {
             // Add it to the manifest items dict if it has an id.
             guard let id = item.attributes["id"] else {
-                log(level: .info, "Manifest item MUST have an id, item ignored.")
+                log(level: .warning, "Manifest item MUST have an id, item ignored.")
                 continue
             }
             let link = linkFromManifest(item)


        // Title.
        guard let multilangTitle = mp.mainTitle(from: metadataElement) else {
            log(level: .error, "Error: no title could be found for the publication. Metadata parsing aborted.")
            return
        }
        metadata._title = multilangTitle
        // Identifier.

        if let coverMetas = document.root["metadata"]["meta"].all(withAttributes: ["name" : "cover"]) {
            coverId = coverMetas.first?.string
        }
        try parseMetadata(from: document, to: &publication)
        parseRessources(from: document.root["manifest"], to: &publication, coverId: coverId)
        parseSpine(from: document.root["spine"], to: &publication)
        return publication
