Now online @ https://jaypanoz.github.io/epubcheck-messages/
Github repo: https://github.com/JayPanoz/epubcheck-messages
Now online @ https://jaypanoz.github.io/epubcheck-messages/
Github repo: https://github.com/JayPanoz/epubcheck-messages
<!DOCTYPE html> | |
<html lang="en"> | |
<head> | |
<meta charset="UTF-8" /> | |
<title>epubcheck Messages</title> | |
<style type="text/css"> | |
body { | |
font-family: sans-serif; | |
max-width: 65rem; | |
} | |
h2 { | |
margin: 3rem 0 1.5rem; | |
} | |
table { | |
margin: 1.5rem 0; | |
border-collapse: collapse; | |
border: 1px solid; | |
} | |
th, td { | |
text-align: left; | |
border: 1px solid; | |
padding: 10px; | |
} | |
</style> | |
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/tablesaw/3.1.2/tablesaw.css" integrity="sha256-RKWkj+/VPTTBpmJvgbTZhLSjgt7/i5qqwdo6uULEVT4=" crossorigin="anonymous" /> | |
<script src="https://cdnjs.cloudflare.com/ajax/libs/tablesaw/3.1.2/tablesaw.min.js" integrity="sha256-jdYDxaVe+yYImykcBZ0OfaPixfUjF0J6ET3hcDQoK/M=" crossorigin="anonymous"></script> | |
<script src="https://cdnjs.cloudflare.com/ajax/libs/tablesaw/3.1.2/tablesaw-init.min.js" integrity="sha256-nLWPACIJGFkfi/oJglk4w5bd0/Bl7dwiOQwfHm9hnoY=" crossorigin="anonymous"></script> | |
</head> | |
<body> | |
<h1>List of epubcheck messages</h1> | |
<script type="application/javascript"> | |
// refs: | |
// - https://github.com/w3c/epubcheck/blob/master/src/main/resources/com/adobe/epubcheck/messages/MessageBundle.properties | |
// - https://github.com/w3c/epubcheck/blob/1f6a882720f6319f4bc98241427e9612d78d52a0/src/main/java/com/adobe/epubcheck/messages/DefaultSeverities.java | |
// - https://github.com/w3c/epubcheck/blob/c19b63928e62e2905f9696afb16b71e7fdcff793/src/main/java/com/adobe/epubcheck/messages/MessageDictionary.java#L69:L347 | |
const json = `{ | |
"Info": [ | |
{ | |
"code": "INF_001", | |
"message": "The previous rule is under review and its severity may change in a future release. See the discussion at %1$s", | |
"severity": "info" | |
} | |
], | |
"Accessibility": [ | |
{ | |
"code": "ACC_001", | |
"message": "'img' or 'area' HTML element has no 'alt' attribute.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "ACC_002", | |
"message": "'input' HTML element is not referenced by a corresponding label element.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "ACC_003", | |
"message": "Non-text html elements should include a 'title' attribute for accessibility.", | |
"severity": "suppressed" | |
}, | |
{ | |
"code": "ACC_004", | |
"message": "Html 'a' element must have text.", | |
"severity": "suppressed" | |
}, | |
{ | |
"code": "ACC_005", | |
"message": "Table heading cells should be identified by 'th' elements for accessibility.", | |
"severity": "suppressed" | |
}, | |
{ | |
"code": "ACC_006", | |
"message": "Tables should include a 'thead' element for accessibility.", | |
"severity": "suppressed" | |
}, | |
{ | |
"code": "ACC_007", | |
"message": "Content Documents do not use 'epub:type' attributes for semantic inflection.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "ACC_008", | |
"message": "Navigation Document has no 'landmarks nav' element.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "ACC_009", | |
"message": "MathML should either have an 'alttext' attribute or 'annotation-xml' child element.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "ACC_010", | |
"message": "Headings should not be used within blockquote and figure elements.", | |
"severity": "suppressed" | |
}, | |
{ | |
"code": "ACC_011", | |
"message": "SVG hyperlinks should have a human-readable title (using the 'title' child element or the 'xlink:title' attribute).", | |
"severity": "usage" | |
}, | |
{ | |
"code": "ACC_012", | |
"message": "Table elements should include a caption element.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "ACC_013", | |
"message": "Content file contains at least one inline style declaration.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "ACC_013_SUG", | |
"message": "Inline styles are not compatible with accessibility settings and display personalization. Use CSS Styles instead.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "ACC_014", | |
"message": "Value of CSS property 'font-size' does not use a relative size: '%1$s'", | |
"severity": "usage" | |
}, | |
{ | |
"code": "ACC_014_SUG", | |
"message": "Acceptable values include percentages, em multiples, 'larger', 'smaller', 'normal' or 'inherit'.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "ACC_015", | |
"message": "Value of CSS property 'line-height' does not use a relative size.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "ACC_015_SUG", | |
"message": "Acceptable values include percentages, numeric multiples, em multiples, 'normal', or 'inherit'.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "ACC_016", | |
"message": "Value of CSS property 'font-size' should use a relative size: '%1$s'", | |
"severity": "usage" | |
}, | |
{ | |
"code": "ACC_016_SUG", | |
"message": "Acceptable values include percentages, em multiples, 'larger', 'smaller', 'normal' or 'inherit'.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "ACC_017", | |
"message": "Value of CSS property 'line-height' does not use a relative size.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "ACC_017_SUG", | |
"message": "Acceptable values include percentages, numeric multiples, em multiples, 'normal', or 'inherit'.", | |
"severity": "usage" | |
} | |
], | |
"CheckerErrors": [ | |
{ | |
"code": "CHK_001", | |
"message": "The custom message overrides file was not found.", | |
"severity": "error" | |
}, | |
{ | |
"code": "CHK_002", | |
"message": "Unrecognized custom message id %1$s encountered in message overrides file '%2$s'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "CHK_003", | |
"message": "Unrecognized custom message severity '%1$s' encountered in message overrides file '%2$s'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "CHK_004", | |
"message": "The custom message contains too many parameters in message overrides file '%1$s'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "CHK_005", | |
"message": "The custom suggestion contains too many parameters in message overrides file '%1$s'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "CHK_006", | |
"message": "Unable to parse the custom format parameter in message overrides file '%1$s'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "CHK_007", | |
"message": "Error encountered while processing custom message file '%1$s': '%2$s'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "CHK_008", | |
"message": "Error encountered while processing an item '%1$s'; skip other checks for the item.", | |
"severity": "error" | |
} | |
], | |
"CSS": [ | |
{ | |
"code": "CSS_001", | |
"message": "The '%1$s' property must not be included in an EPUB Style Sheet.", | |
"severity": "error" | |
}, | |
{ | |
"code": "CSS_002", | |
"message": "Empty or NULL reference found.", | |
"severity": "error" | |
}, | |
{ | |
"code": "CSS_003", | |
"message": "Only UTF-8 and UTF-16 encodings are allowed, detected %1$s.", | |
"severity": "error" | |
}, | |
{ | |
"code": "CSS_004", | |
"message": "Only UTF-8 and UTF-16 encodings are allowed, detected %1$s BOM.", | |
"severity": "error" | |
}, | |
{ | |
"code": "CSS_005", | |
"message": "Conflicting alternate style attributes found: %1$s.", | |
"severity": "error" | |
}, | |
{ | |
"code": "CSS_006", | |
"message": "CSS selector specifies fixed position.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "CSS_007", | |
"message": "Font-face reference %1$s refers to non-standard font type %2$s.", | |
"severity": "info" | |
}, | |
{ | |
"code": "CSS_008", | |
"message": "An error occurred while parsing the CSS: %1$s.", | |
"severity": "error" | |
}, | |
{ | |
"code": "CSS_009", | |
"message": "Use of certain CSS such as Columns, Transforms, Transitions, box-sizing or KeyFrames can cause pagination issues.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "CSS_010", | |
"message": "Stylesheet of type other than 'text/css' must have a fallback.", | |
"severity": "error" | |
}, | |
{ | |
"code": "CSS_011", | |
"message": "Excessive number of css files.", | |
"severity": "suppressed" | |
}, | |
{ | |
"code": "CSS_011_SUG", | |
"message": "Consider merging CSS files to reduce the number of CSS files.", | |
"severity": "suppressed" | |
}, | |
{ | |
"code": "CSS_012", | |
"message": "Document links to multiple CSS files.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "CSS_013", | |
"message": "CSS property is declared !Important.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "CSS_015", | |
"message": "Alternate Stylesheet has no title.", | |
"severity": "error" | |
}, | |
{ | |
"code": "CSS_016", | |
"message": "Alternate Stylesheet precedes primary stylesheet.", | |
"severity": "suppressed" | |
}, | |
{ | |
"code": "CSS_017", | |
"message": "CSS selector specifies absolute position.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "CSS_019", | |
"message": "CSS font-face declaration has no attributes.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "CSS_020", | |
"message": "CSS font selector declaration uses unexpected font-size value '%1$s'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "CSS_020_SUG", | |
"message": "Acceptable values include percentages, em multiples, 'larger', 'smaller', 'normal' or 'inherit'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "CSS_021", | |
"message": "Shorthand CSS property 'font-family' specifies an invalid System Font.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "CSS_021_SUG", | |
"message": "Acceptable values include 'caption', 'icon', 'menu', 'message-box', 'small-caption', 'status-bar', or 'inherit'.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "CSS_022", | |
"message": "CSS selector specifies global margin setting.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "CSS_023", | |
"message": "CSS selector specifies media query.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "CSS_024", | |
"message": "CSS class Selector is not used.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "CSS_024_SUG", | |
"message": "Remove unused CSS selectors.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "CSS_025", | |
"message": "CSS class Selector could not be found.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "CSS_025_SUG", | |
"message": "Check for typos or define a class selector to document the use of the class.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "CSS_028", | |
"message": "Use of Font-face declaration.", | |
"severity": "usage" | |
} | |
], | |
"XHTML": [ | |
{ | |
"code": "HTM_001", | |
"message": "Any publication resource that is an XML-based media type must be a valid XML 1.0 document. XML version found: %1$s.", | |
"severity": "error" | |
}, | |
{ | |
"code": "HTM_002", | |
"message": "The installed xml parser doesn't support xml version verification. Xml files must be a valid XML 1.0 document.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "HTM_003", | |
"message": "External entities are not allowed in EPUB v3 documents. External entity declaration found: %1$s.", | |
"severity": "error" | |
}, | |
{ | |
"code": "HTM_004", | |
"message": "Irregular DOCTYPE: found '%1$s', expected '%2$s'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "HTM_005", | |
"message": "An external reference was found.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_006", | |
"message": "An XHTML Named Entity was found.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_007", | |
"message": "Empty or whitespace-only value of attribute ssml:ph.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "HTM_008", | |
"message": "The src attribute is required.", | |
"severity": "error" | |
}, | |
{ | |
"code": "HTM_009", | |
"message": "The DOCTYPE provided is obsolete or irregular and can be removed.", | |
"severity": "error" | |
}, | |
{ | |
"code": "HTM_010", | |
"message": "Namespace uri '%1$s' was found.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_011", | |
"message": "Entity is undeclared.", | |
"severity": "error" | |
}, | |
{ | |
"code": "HTM_011_SUG", | |
"message": "Define the entity or use the numbered entity instead.", | |
"severity": "error" | |
}, | |
{ | |
"code": "HTM_012", | |
"message": "Found a link to a CFI in an external book.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_013", | |
"message": "Intra-Publication CFIs found in document.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_014", | |
"message": "Invalid file extension for HTML file, expecting (html, htm or xhtml).", | |
"severity": "warning" | |
}, | |
{ | |
"code": "HTM_014a", | |
"message": "XHTML Content Document file name '%1$s' should have the extension '.xhtml'.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "HTM_015", | |
"message": "HTML4 DOCTYPE definition within EPUB v3.", | |
"severity": "suppressed" | |
}, | |
{ | |
"code": "HTM_016", | |
"message": "HTML5 DOCTYPE definition within EPUB v2.", | |
"severity": "suppressed" | |
}, | |
{ | |
"code": "HTM_017", | |
"message": "Content file has different language value in attributes xml:lang and lang.", | |
"severity": "error" | |
}, | |
{ | |
"code": "HTM_018", | |
"message": "Content file has invalid language value at attribute xml:lang.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_019", | |
"message": "Content file has invalid language definition at attribute lang.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_020", | |
"message": "Content file doesn't contain xml:lang attribute.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_021", | |
"message": "Content file doesn't contain lang attribute.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_022", | |
"message": "Document may contain excessive DIV or SPAN tags.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_022_SUG", | |
"message": "Merge DIV or SPAN tags when they are consecutive and use the same style.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_023", | |
"message": "An invalid XHTML Named Entity was found: '%1$s'.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "HTM_023_SUG", | |
"message": "Check the spelling or use numbered entities instead.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "HTM_024", | |
"message": "An XHTML Named Entity was found. Only '&' ''' '"e;' '<' or '>' are allowed.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_024_SUG", | |
"message": "Check the spelling or use numbered entities instead.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_025", | |
"message": "Non-registered URI scheme type found in href.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "HTM_027", | |
"message": "List contains less than 2 items.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_027_SUG", | |
"message": "Lists should have more than one item for accessibility.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_028", | |
"message": "Input html elements should include an id.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_029", | |
"message": "Label html elements should include a 'for' attribute referencing the id of an input element.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_033", | |
"message": "HTML 'head' element does not have a 'title' child element.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_036", | |
"message": "IFrames are highly discouraged.", | |
"severity": "suppressed" | |
}, | |
{ | |
"code": "HTM_038", | |
"message": "Ensure b, i, em, and strong elements are used in compliance with W3C HTML5 directives.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_038_SUG", | |
"message": "CSS styles are usually more appropriate for italics or bold text.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_044", | |
"message": "Namespace uri '%1$s' was included but not used.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_044_SUG", | |
"message": "Remove unused Namespace URIs.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_045", | |
"message": "Encountered empty href.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_045_SUG", | |
"message": "Empty hrefs are valid self-references. These should be validated to ensure that this is the desired intent.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_046", | |
"message": "Fixed format item has no viewport defined.", | |
"severity": "error" | |
}, | |
{ | |
"code": "HTM_046_SUG", | |
"message": "A viewport declaration is required for fixed format items.", | |
"severity": "error" | |
}, | |
{ | |
"code": "HTM_047", | |
"message": "Html viewport is missing height and/or width.", | |
"severity": "error" | |
}, | |
{ | |
"code": "HTM_047_SUG", | |
"message": "The viewport declaration must declare both width and height.", | |
"severity": "error" | |
}, | |
{ | |
"code": "HTM_048", | |
"message": "SVG Fixed-Layout Documents must have a 'viewBox' attribute (on the outermost 'svg' element).", | |
"severity": "error" | |
}, | |
{ | |
"code": "HTM_049", | |
"message": "Html element does not have an xmlns set to 'http://www.w3.org/1999/xhtml'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "HTM_049_SUG", | |
"message": "Add xmlns='http://www.w3.org/1999/xhtml' to the html element.", | |
"severity": "error" | |
}, | |
{ | |
"code": "HTM_050", | |
"message": "Found epub:type='pagebreak' attribute in content document.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_051", | |
"message": "Found Microdata semantic enrichments but no RDFa. EDUPUB recommends using RDFa Lite.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "HTM_052", | |
"message": "The property 'region-based' is only allowed on nav elements in Data Navigation Documents.", | |
"severity": "error" | |
}, | |
{ | |
"code": "HTM_053", | |
"message": "Found an external file link (file://) in file: '%1$s'.", | |
"severity": "info" | |
} | |
], | |
"media": [ | |
{ | |
"code": "MED_001", | |
"message": "Video poster must have core media image type.", | |
"severity": "error" | |
}, | |
{ | |
"code": "MED_002", | |
"message": "%1$s element doesn't provide fallback.", | |
"severity": "error" | |
}, | |
{ | |
"code": "MED_003", | |
"message": "A manifest fallback must be provided for image resource '%1$s' of type '%2$s'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "MED_004", | |
"message": "Image file header may be corrupted.", | |
"severity": "error" | |
}, | |
{ | |
"code": "MED_005", | |
"message": "Media Overlay audio reference %1$s to non-standard audio type %2$s found.", | |
"severity": "error" | |
}, | |
{ | |
"code": "MED_006", | |
"message": "Some browsers do not support rendering SVG images which use a filename in the xlink:href property.", | |
"severity": "error" | |
}, | |
{ | |
"code": "MED_007", | |
"message": "Foreign resources can only be referenced from 'source' elements with an explicit 'type' attribute; found resource '%1$s' of foreign type '%2$s'.", | |
"severity": "error" | |
} | |
], | |
"NAV": [ | |
{ | |
"code": "NAV_001", | |
"message": "The nav file is not supported for EPUB v2.", | |
"severity": "error" | |
}, | |
{ | |
"code": "NAV_002", | |
"message": "Found epub:type='page-list' in nav document", | |
"severity": "usage" | |
}, | |
{ | |
"code": "NAV_003", | |
"message": "The Navigation Document must have a page list when content document(s) contain page breaks (epub:type='pagebreak').", | |
"severity": "error" | |
}, | |
{ | |
"code": "NAV_004", | |
"message": "The Navigation Document should contain the full document heading hierarchy in EDUPUB.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "NAV_005", | |
"message": "Content documents contain 'audio' elements but the Navigation Document does not have a listing of audio clips (epub:type='loa').", | |
"severity": "usage" | |
}, | |
{ | |
"code": "NAV_006", | |
"message": "Content documents contain 'figure' elements but the Navigation Document does not have a listing of figures (epub:type='loi').", | |
"severity": "usage" | |
}, | |
{ | |
"code": "NAV_007", | |
"message": "Content documents contain 'table' elements but the Navigation Document does not have a listing of tables (epub:type='lot').", | |
"severity": "usage" | |
}, | |
{ | |
"code": "NAV_008", | |
"message": "Content documents contain 'video' elements but the Navigation Document does not have a listing of video clips (epub:type='lov').", | |
"severity": "usage" | |
}, | |
{ | |
"code": "NAV_009", | |
"message": "Region-based navigation links must point to Fixed-Layout Documents.", | |
"severity": "error" | |
}, | |
{ | |
"code": "NAV_010", | |
"message": "'%1$s' nav must not link to remote resources; found link to '%2$s'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "NAV_011", | |
"message": "'%1$s' nav must be in reading order; link target '%2$s' is before the previous link's target in %3$s order.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "NAV_011_SUG.spine", | |
"message": "spine", | |
"severity": "warning" | |
}, | |
{ | |
"code": "NAV_011_SUG.document", | |
"message": "document", | |
"severity": "warning" | |
} | |
], | |
"NCX": [ | |
{ | |
"code": "NCX_001", | |
"message": "NCX identifier ('%1$s') does not match OPF identifier ('%2$s').", | |
"severity": "error" | |
}, | |
{ | |
"code": "NCX_002", | |
"message": "toc attribute was not found on the spine element.", | |
"severity": "error" | |
}, | |
{ | |
"code": "NCX_003", | |
"message": "An .NCX file is required for TOC navigation on EPUB v2 readers.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "NCX_004", | |
"message": "NCX identifier ('dtb:uid' metadata) should not contain leading or trailing whitespace.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "NCX_005", | |
"message": "Found ncx 'page-list' in .ncx file", | |
"severity": "usage" | |
}, | |
{ | |
"code": "NCX_006", | |
"message": "Empty 'text' label in the NCX document", | |
"severity": "usage" | |
} | |
], | |
"OPF": [ | |
{ | |
"code": "OPF_001", | |
"message": "There was an error when parsing the EPUB version: %1$s.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_002", | |
"message": "The OPF file '%1$s' was not found in the EPUB.", | |
"severity": "fatal" | |
}, | |
{ | |
"code": "OPF_003", | |
"message": "Item '%1$s' exists in the EPUB, but is not declared in the OPF manifest.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_004", | |
"message": "Invalid prefix declaration: leading or trailing whitespace is not allowed.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_004a", | |
"message": "Invalid prefix declaration: found empty prefix.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_004b", | |
"message": "Invalid prefix '%1$s': must be a valid non-colonized name (aka 'NCName').", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_004c", | |
"message": "Invalid prefix declaration: prefix '%1$s' must be immediately followed by a colon character (':').", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_004d", | |
"message": "Invalid prefix declaration: prefix '%1$s' must be separated by its URI with a space.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_004e", | |
"message": "Invalid prefix declaration: found illegal whitespace between prefix and URI.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_004f", | |
"message": "Invalid prefix declaration: found illegal whitespace between prefix mappings.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_005", | |
"message": "Invalid prefix declaration: URI for prefix '%1$s' doesn't exist.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_006", | |
"message": "Invalid prefix declaration: URI '%1$s' is not a valid URI.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_007", | |
"message": "Re-declaration of reserved prefix '%1$s'.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_007a", | |
"message": "Invalid prefix mapping: prefix '_' must not be declared.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_007b", | |
"message": "Invalid prefix mapping: default vocabulary '%1$s' must not be re-declared.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_008", | |
"message": "Handler binding for core Media-type '%1$s' is not allowed.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_009", | |
"message": "The media-type '%1$s' has already been assigned a handler, with ID '%2$s'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_010", | |
"message": "Error resolving reference: '%1$s'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_011", | |
"message": "itemref can't have both page-spread-right and page-spread-left properties.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_012", | |
"message": "Item property '%1$s' is not defined for media type '%2$s'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_013", | |
"message": "The type property '%1$s' on the object tag does not match the declared media-type '%2$s' in the OPF manifest.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_014", | |
"message": "The property '%1$s' should be declared in the OPF file.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_015", | |
"message": "The property '%1$s' should not be declared in the OPF file.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_016", | |
"message": "The element 'rootfile' is missing its required attribute 'full-path'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_017", | |
"message": "The attribute 'full-path' on element 'rootfile' must not be empty.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_018", | |
"message": "The 'remote-resources' property was declared in the Package Document, but no reference to remote resources has been found.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_018b", | |
"message": "The 'remote-resources' property was declared in the Package Document, but no reference to remote resources has been found; please check scripted content to make sure the property is legit. ", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_019", | |
"message": "Spine tag was not found in the OPF file.", | |
"severity": "fatal" | |
}, | |
{ | |
"code": "OPF_020", | |
"message": "Excessive number of spine items.", | |
"severity": "suppressed" | |
}, | |
{ | |
"code": "OPF_021", | |
"message": "Use of non-registered URI scheme type in href: '%1$s'.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_025", | |
"message": "Property value list '%1$s' is not allowed, only one value must be specified.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_026", | |
"message": "Found malformed property value: '%1$s'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_027", | |
"message": "Undefined property: '%1$s'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_028", | |
"message": "Undeclared prefix: '%1$s'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_029", | |
"message": "The file '%1$s' does not appear to match the media type %2$s, as specified in the OPF file.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_030", | |
"message": "The unique-identifier '%1$s' was not found.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_031", | |
"message": "File listed in reference element in guide was not declared in OPF manifest: %1$s.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_032", | |
"message": "Guide references '%1$s' which is not a valid 'OPS Content Document'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_033", | |
"message": "The spine contains no linear resources.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_034", | |
"message": "The spine contains multiple references to the manifest item with id '%1$s'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_035", | |
"message": "Media type 'text/html' is not appropriate for XHTML/OPS.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_035_SUG", | |
"message": "Use 'application/xhtml+xml' instead.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_036", | |
"message": "Video type '%1$s' might not be supported by reading systems", | |
"severity": "usage" | |
}, | |
{ | |
"code": "OPF_036_SUG", | |
"message": "Use 'video/mp4', 'video/h264' or 'video/webm' instead.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "OPF_037", | |
"message": "Found deprecated media-type '%1$s'.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_038", | |
"message": "Media type '%1$s' is not appropriate for an OEBPS 1.2 context; Use 'text/x-oeb1-document' instead.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_039", | |
"message": "Media-type '%1$s' is not appropriate in an OEBPS 1.2 context. Use 'text/x-oeb1-css' instead.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_040", | |
"message": "Fallback item could not be found.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_041", | |
"message": "Fallback-style item could not be found.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_042", | |
"message": "'%1$s' is not a permissible spine media-type.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_043", | |
"message": "Spine item with non-standard media-type '%1$s' has no fallback.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_044", | |
"message": "Spine item with non-standard media-type '%1$s' has a fallback to non-standard media-type.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_045", | |
"message": "Encountered circular reference in fallback chain.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_046", | |
"message": "Scripted property is not set on mediaType handler.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_047", | |
"message": "OPF file is using OEBPS 1.2 syntax allowing backwards compatibility.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_048", | |
"message": "Package tag is missing its required unique-identifier attribute and value.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_049", | |
"message": "Item id '%1$s' was not found in the manifest.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_050", | |
"message": "TOC attribute references resource with non-NCX mime type; 'application/x-dtbncx+xml' is expected.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_051", | |
"message": "Image dimensions exceed recommended size.", | |
"severity": "suppressed" | |
}, | |
{ | |
"code": "OPF_052", | |
"message": "Role value '%1$s' is not valid.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_053", | |
"message": "Date value '%1$s' does not follow recommended syntax as per http://www.w3.org/TR/NOTE-datetime:%2$s.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_054", | |
"message": "Date value '%1$s' is not valid as per http://www.w3.org/TR/NOTE-datetime:%2$s.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_055", | |
"message": "%1$s tag is empty.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_056", | |
"message": "Media type '%1$s' is not a core audio type.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "OPF_057", | |
"message": "Image file length exceeds recommended size.", | |
"severity": "suppressed" | |
}, | |
{ | |
"code": "OPF_058", | |
"message": "Spine item '%1$s' is not referenced from the TOC in the Nav Doc.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "OPF_058_SUG", | |
"message": "Every spine item in the manifest should be referenced by at least one TOC entry in the Nav Doc.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "OPF_059", | |
"message": "Spine item '%1$s' is not referenced from the TOC in the NCX.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "OPF_059_SUG", | |
"message": "Every spine item in the manifest should be referenced by at least one TOC entry in the NCX file.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "OPF_060", | |
"message": "Duplicate entry in the ZIP file: '%1$s'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_061", | |
"message": "Duplicate entry in the ZIP file (after Unicode NFC normalization) '%1$s'.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_062", | |
"message": "Found Adobe page-map attribute on spine element in opf file.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "OPF_063", | |
"message": "Referenced Adobe page-map item '%1$s' was not found in the manifest.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_064", | |
"message": "OPF declares type '%1$s', validating using profile '%2$s'.", | |
"severity": "info" | |
}, | |
{ | |
"code": "OPF_065", | |
"message": "Invalid metadata declaration, probably due to a cycle in 'refines' metadata.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_066", | |
"message": "Missing 'dc:source' or 'source-of' pagination metadata. The pagination source must be identified using the 'dc:source' and 'source-of' properties when the content includes page break markers.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_067", | |
"message": "The resource '%1$s' must not be listed both as a 'link' element in the package metadata and as a manifest item.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_068", | |
"message": "Unknown collection role '%1$s'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_069", | |
"message": "Custom collection role URI '%1$s' must not include the string 'idpf.org' in its host component.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_070", | |
"message": "Custom collection role '%1$s' is an invalid URI.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_071", | |
"message": "Index collections must only contain resources pointing to XHTML Content Documents.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_072", | |
"message": "Metadata element '%1$s' is empty.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "OPF_073", | |
"message": "External identifiers must not appear in the document type declaration.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_074", | |
"message": "Package resource '%1$s' is declared in several manifest item.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_075", | |
"message": "Preview collections must only point to EPUB Content Documents.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_076", | |
"message": "The URI of preview collections link elements must not include EPUB canonical fragment identifiers.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_077", | |
"message": "A Data Navigation Document should not be included in the spine.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_078", | |
"message": "An EPUB Dictionary must contain at least one Content Document with dictionary content (epub:type 'dictionary').", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_079", | |
"message": "Dictionary content was found (epub:type 'dictionary'), the Package Document should declare the dc:type 'dictionary'.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_080", | |
"message": "A Search Key Map document file name should have the extension '.xml'.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_081", | |
"message": "Resource '%1$s' (referenced from an EPUB Dictionary collection) was not found.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_082", | |
"message": "Found an EPUB Dictionary collection containing more than one Search Key Map Document.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_083", | |
"message": "Found an EPUB Dictionary collection containing no Search Key Map Document.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_084", | |
"message": "Found an EPUB Dictionary collection containing resource '%1$s' which is neither a Search Key Map Document nor an XHTML Content Document.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_085", | |
"message": "'dc:identifier' value '%1$s' is marked as a UUID, but is an invalid UUID.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_086", | |
"message": "Property '%1$s' is deprecated. Consider using %2$s instead.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_086_SUG.default", | |
"message": "a custom prefixed property", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_086_SUG.marc21xml-record", | |
"message": "the 'record' keyword and the media-type 'application/marcxml+xml'", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_086_SUG.mods-record", | |
"message": "the 'record' keyword and the media-type 'application/mods+xml'", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_086_SUG.onix-record", | |
"message": "the 'record' keyword with the properties attribute value 'onix'", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_086_SUG.xml-signature", | |
"message": "no signature-identifying link", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_086_SUG.xmp-record", | |
"message": "the 'record' keyword with the properties attribute value 'xmp'", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_086b", | |
"message": "epub:type value '%1$s' is deprecated. Consider using %2$s instead.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "OPF_086b_SUG.default", | |
"message": "a custom prefixed value", | |
"severity": "usage" | |
}, | |
{ | |
"code": "OPF_086b_SUG.annoref", | |
"message": "open annotations", | |
"severity": "usage" | |
}, | |
{ | |
"code": "OPF_086b_SUG.annotation", | |
"message": "open annotations", | |
"severity": "usage" | |
}, | |
{ | |
"code": "OPF_086b_SUG.help", | |
"message": "the 'tip' property", | |
"severity": "usage" | |
}, | |
{ | |
"code": "OPF_086b_SUG.marginalia", | |
"message": "a bare 'aside' element", | |
"severity": "usage" | |
}, | |
{ | |
"code": "OPF_086b_SUG.note", | |
"message": "a 'footnote' or 'endnote' property", | |
"severity": "usage" | |
}, | |
{ | |
"code": "OPF_086b_SUG.rearnote", | |
"message": "the 'endnote' property", | |
"severity": "usage" | |
}, | |
{ | |
"code": "OPF_086b_SUG.rearnotes", | |
"message": "the 'endnotes' property", | |
"severity": "usage" | |
}, | |
{ | |
"code": "OPF_086b_SUG.sidebar", | |
"message": "a bare 'aside' element", | |
"severity": "usage" | |
}, | |
{ | |
"code": "OPF_086b_SUG.warning", | |
"message": "the 'notice' property", | |
"severity": "usage" | |
}, | |
{ | |
"code": "OPF_087", | |
"message": "epub:type value '%1$s' is not allowed on documents of type '%2$s'.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "OPF_088", | |
"message": "Unrecognized epub:type value '%1$s'.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "OPF_089", | |
"message": "The 'alternate' link rel keyword cannot be paired with other keywords.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_090", | |
"message": "It is encouraged to use MIME media type '%1$s' instead of '%2$s'. ", | |
"severity": "usage" | |
} | |
], | |
"Package": [ | |
{ | |
"code": "PKG_001", | |
"message": "Validating the EPUB against version %1$s but detected version %2$s.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "PKG_003", | |
"message": "Unable to read EPUB file header. This is likely a corrupted EPUB file.", | |
"severity": "error" | |
}, | |
{ | |
"code": "PKG_004", | |
"message": "Corrupted EPUB ZIP header.", | |
"severity": "fatal" | |
}, | |
{ | |
"code": "PKG_005", | |
"message": "The mimetype file has an extra field of length %1$s. The use of the extra field feature of the ZIP format is not permitted for the mimetype file.", | |
"severity": "error" | |
}, | |
{ | |
"code": "PKG_006", | |
"message": "Mimetype file entry is missing or is not the first file in the archive.", | |
"severity": "error" | |
}, | |
{ | |
"code": "PKG_007", | |
"message": "Mimetype file should only contain the string 'application/epub+zip' and should not be compressed.", | |
"severity": "error" | |
}, | |
{ | |
"code": "PKG_008", | |
"message": "Unable to read file '%1$s'.", | |
"severity": "fatal" | |
}, | |
{ | |
"code": "PKG_009", | |
"message": "File name contains characters that are not allowed in OCF file names: '%1$s'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "PKG_010", | |
"message": "Filename contains spaces, therefore URI escaping is necessary. Consider removing spaces from filename.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "PKG_011", | |
"message": "Filename is not allowed to end with '.'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "PKG_012", | |
"message": "File name contains the following non-ascii characters: %1$s. Consider changing the filename.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "PKG_013", | |
"message": "The EPUB file includes multiple OPS renditions.", | |
"severity": "error" | |
}, | |
{ | |
"code": "PKG_014", | |
"message": "The EPUB contains empty directory '%1$s'.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "PKG_015", | |
"message": "Unable to read EPUB contents: %1$s", | |
"severity": "fatal" | |
}, | |
{ | |
"code": "PKG_016", | |
"message": "Use only lowercase characters for the EPUB file extension for maximum compatibility.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "PKG_016_SUG", | |
"message": "For maximum compatibility, use '.epub'.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "PKG_017", | |
"message": "Uncommon EPUB file extension.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "PKG_017_SUG", | |
"message": "For maximum compatibility, use '.epub'.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "PKG_018", | |
"message": "The EPUB file could not be found.", | |
"severity": "fatal" | |
}, | |
{ | |
"code": "PKG_020", | |
"message": "OPF file '%1$s' could not be found.", | |
"severity": "error" | |
}, | |
{ | |
"code": "PKG_021", | |
"message": "Corrupted image file encountered.", | |
"severity": "error" | |
}, | |
{ | |
"code": "PKG_022", | |
"message": "Wrong file extension for image. The image is a '%1$s' file but has the file extension '%2$s'.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "PKG_023", | |
"message": "Validating the EPUB against version 2.0, default validation profile will be used.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "PKG_024", | |
"message": "Uncommon EPUB file extension.", | |
"severity": "info" | |
}, | |
{ | |
"code": "PKG_024_SUG", | |
"message": "For maximum compatibility, use '.epub'.", | |
"severity": "info" | |
} | |
], | |
"Resources": [ | |
{ | |
"code": "RSC_001", | |
"message": "File '%1$s' could not be found.", | |
"severity": "error" | |
}, | |
{ | |
"code": "RSC_002", | |
"message": "Required META-INF/container.xml resource could not be found.", | |
"severity": "fatal" | |
}, | |
{ | |
"code": "RSC_003", | |
"message": "No rootfile tag with media type 'application/oebps-package+xml' was found in the container.", | |
"severity": "error" | |
}, | |
{ | |
"code": "RSC_004", | |
"message": "File '%1$s' could not be decrypted.", | |
"severity": "error" | |
}, | |
{ | |
"code": "RSC_005", | |
"message": "Error while parsing file: %1$s", | |
"severity": "error" | |
}, | |
{ | |
"code": "RSC_006", | |
"message": "Remote resource reference not allowed; resource must be placed in the OCF.", | |
"severity": "error" | |
}, | |
{ | |
"code": "RSC_006b", | |
"message": "Resource '%1$s' is located outside the EPUB Container; please check the resource is retrieved in scripted content. ", | |
"severity": "usage" | |
}, | |
{ | |
"code": "RSC_007", | |
"message": "Referenced resource '%1$s' could not be found in the EPUB.", | |
"severity": "error" | |
}, | |
{ | |
"code": "RSC_007w", | |
"message": "Referenced resource '%1$s' could not be found in the EPUB.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "RSC_008", | |
"message": "Referenced resource '%1$s' is not declared in the OPF manifest.", | |
"severity": "error" | |
}, | |
{ | |
"code": "RSC_009", | |
"message": "A non-SVG image resource should not be defined with a fragment identifier.", | |
"severity": "error" | |
}, | |
{ | |
"code": "RSC_010", | |
"message": "Reference to non-standard resource type found.", | |
"severity": "error" | |
}, | |
{ | |
"code": "RSC_011", | |
"message": "Found a reference to a resource that is not a spine item.", | |
"severity": "error" | |
}, | |
{ | |
"code": "RSC_012", | |
"message": "Fragment identifier is not defined.", | |
"severity": "error" | |
}, | |
{ | |
"code": "RSC_013", | |
"message": "Fragment identifier is used in a reference to a stylesheet resource.", | |
"severity": "error" | |
}, | |
{ | |
"code": "RSC_014", | |
"message": "Fragment identifier defines an incompatible resource type.", | |
"severity": "error" | |
}, | |
{ | |
"code": "RSC_015", | |
"message": "A fragment identifier is required for svg use tag references.", | |
"severity": "error" | |
}, | |
{ | |
"code": "RSC_016", | |
"message": "Fatal Error while parsing file: %1$s", | |
"severity": "fatal" | |
}, | |
{ | |
"code": "RSC_017", | |
"message": "Warning while parsing file: %1$s", | |
"severity": "warning" | |
}, | |
{ | |
"code": "RSC_018", | |
"message": "Alternative image file '%1$s' could not be found.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "RSC_019", | |
"message": "EPUBs with Multiple Renditions should contain a META-INF/metadata.xml file.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "RSC_020", | |
"message": "'%1$s' is not a valid URI.", | |
"severity": "error" | |
}, | |
{ | |
"code": "RSC_021", | |
"message": "A Search Key Map Document must point to Content Documents ('%1$s' was not found in the spine).", | |
"severity": "error" | |
}, | |
{ | |
"code": "RSC_022", | |
"message": "Cannot check image details (requires Java version 7 or higher).", | |
"severity": "info" | |
}, | |
{ | |
"code": "RSC_023", | |
"message": "The URL '%1$s' is missing %2$d slash(es) '/' after the protocol '%3$s:'", | |
"severity": "warning" | |
} | |
], | |
"Scripting": [ | |
{ | |
"code": "SCP_001", | |
"message": "Use of Javascript eval() function in EPUB scripts is a security risk.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "SCP_002", | |
"message": "Use of XMLHttpRequest in EPUB scripts is a security risk.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "SCP_003", | |
"message": "Local and Session Storage is not currently supported.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "SCP_004", | |
"message": "Content file contains script which is not supported in EPUB v2.", | |
"severity": "error" | |
}, | |
{ | |
"code": "SCP_005", | |
"message": "Content file contains script but it is not marked as scripted.", | |
"severity": "error" | |
}, | |
{ | |
"code": "SCP_006", | |
"message": "Inline scripts found.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "SCP_007", | |
"message": "Script references 'innerHtml'.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "SCP_007_SUG", | |
"message": "Use a DOM instead.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "SCP_008", | |
"message": "Script references 'innerText'.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "SCP_008_SUG", | |
"message": "Use 'textContent' instead.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "SCP_009", | |
"message": "Content file uses mouse event handlers.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "SCP_009_SUG", | |
"message": "Ensure that all mouse driven functionality is accessible from the keyboard and touch devices.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "SCP_010", | |
"message": "Epub 3 content file contains script.", | |
"severity": "usage" | |
} | |
] | |
}`; | |
const data = JSON.parse(json); | |
const doRows = (prop) => { | |
let rows = ``; | |
for (let item of prop) { | |
rows += `<tr> | |
<td>${item.code}</td> | |
<td>${item.message}</td> | |
<td>${item.severity}</td> | |
</tr>`; | |
} | |
return rows; | |
}; | |
for (let prop in data) { | |
document.body.innerHTML += ` | |
<h2>${prop}</h2> | |
<table class="tablesaw tablesaw-row-zebra" data-tablesaw-sortable data-tablesaw-sortable-switch> | |
<thead> | |
<tr> | |
<th data-tablesaw-sortable-col>Code</th> | |
<th>Message</th> | |
<th data-tablesaw-sortable-col>Severity</th> | |
</tr> | |
</thead> | |
<tbody> | |
${doRows(data[prop])} | |
</tbody> | |
</table> | |
`; | |
} | |
</script> | |
</body> | |
</html> |
{ | |
"Info": [ | |
{ | |
"code": "INF_001", | |
"message": "The previous rule is under review and its severity may change in a future release. See the discussion at %1$s", | |
"severity": "info" | |
} | |
], | |
"Accessibility": [ | |
{ | |
"code": "ACC_001", | |
"message": "'img' or 'area' HTML element has no 'alt' attribute.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "ACC_002", | |
"message": "'input' HTML element is not referenced by a corresponding label element.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "ACC_003", | |
"message": "Non-text html elements should include a 'title' attribute for accessibility.", | |
"severity": "suppressed" | |
}, | |
{ | |
"code": "ACC_004", | |
"message": "Html 'a' element must have text.", | |
"severity": "suppressed" | |
}, | |
{ | |
"code": "ACC_005", | |
"message": "Table heading cells should be identified by 'th' elements for accessibility.", | |
"severity": "suppressed" | |
}, | |
{ | |
"code": "ACC_006", | |
"message": "Tables should include a 'thead' element for accessibility.", | |
"severity": "suppressed" | |
}, | |
{ | |
"code": "ACC_007", | |
"message": "Content Documents do not use 'epub:type' attributes for semantic inflection.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "ACC_008", | |
"message": "Navigation Document has no 'landmarks nav' element.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "ACC_009", | |
"message": "MathML should either have an 'alttext' attribute or 'annotation-xml' child element.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "ACC_010", | |
"message": "Headings should not be used within blockquote and figure elements.", | |
"severity": "suppressed" | |
}, | |
{ | |
"code": "ACC_011", | |
"message": "SVG hyperlinks should have a human-readable title (using the 'title' child element or the 'xlink:title' attribute).", | |
"severity": "usage" | |
}, | |
{ | |
"code": "ACC_012", | |
"message": "Table elements should include a caption element.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "ACC_013", | |
"message": "Content file contains at least one inline style declaration.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "ACC_013_SUG", | |
"message": "Inline styles are not compatible with accessibility settings and display personalization. Use CSS Styles instead.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "ACC_014", | |
"message": "Value of CSS property 'font-size' does not use a relative size: '%1$s'", | |
"severity": "usage" | |
}, | |
{ | |
"code": "ACC_014_SUG", | |
"message": "Acceptable values include percentages, em multiples, 'larger', 'smaller', 'normal' or 'inherit'.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "ACC_015", | |
"message": "Value of CSS property 'line-height' does not use a relative size.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "ACC_015_SUG", | |
"message": "Acceptable values include percentages, numeric multiples, em multiples, 'normal', or 'inherit'.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "ACC_016", | |
"message": "Value of CSS property 'font-size' should use a relative size: '%1$s'", | |
"severity": "usage" | |
}, | |
{ | |
"code": "ACC_016_SUG", | |
"message": "Acceptable values include percentages, em multiples, 'larger', 'smaller', 'normal' or 'inherit'.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "ACC_017", | |
"message": "Value of CSS property 'line-height' does not use a relative size.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "ACC_017_SUG", | |
"message": "Acceptable values include percentages, numeric multiples, em multiples, 'normal', or 'inherit'.", | |
"severity": "usage" | |
} | |
], | |
"CheckerErrors": [ | |
{ | |
"code": "CHK_001", | |
"message": "The custom message overrides file was not found.", | |
"severity": "error" | |
}, | |
{ | |
"code": "CHK_002", | |
"message": "Unrecognized custom message id %1$s encountered in message overrides file '%2$s'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "CHK_003", | |
"message": "Unrecognized custom message severity '%1$s' encountered in message overrides file '%2$s'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "CHK_004", | |
"message": "The custom message contains too many parameters in message overrides file '%1$s'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "CHK_005", | |
"message": "The custom suggestion contains too many parameters in message overrides file '%1$s'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "CHK_006", | |
"message": "Unable to parse the custom format parameter in message overrides file '%1$s'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "CHK_007", | |
"message": "Error encountered while processing custom message file '%1$s': '%2$s'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "CHK_008", | |
"message": "Error encountered while processing an item '%1$s'; skip other checks for the item.", | |
"severity": "error" | |
} | |
], | |
"CSS": [ | |
{ | |
"code": "CSS_001", | |
"message": "The '%1$s' property must not be included in an EPUB Style Sheet.", | |
"severity": "error" | |
}, | |
{ | |
"code": "CSS_002", | |
"message": "Empty or NULL reference found.", | |
"severity": "error" | |
}, | |
{ | |
"code": "CSS_003", | |
"message": "Only UTF-8 and UTF-16 encodings are allowed, detected %1$s.", | |
"severity": "error" | |
}, | |
{ | |
"code": "CSS_004", | |
"message": "Only UTF-8 and UTF-16 encodings are allowed, detected %1$s BOM.", | |
"severity": "error" | |
}, | |
{ | |
"code": "CSS_005", | |
"message": "Conflicting alternate style attributes found: %1$s.", | |
"severity": "error" | |
}, | |
{ | |
"code": "CSS_006", | |
"message": "CSS selector specifies fixed position.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "CSS_007", | |
"message": "Font-face reference %1$s refers to non-standard font type %2$s.", | |
"severity": "info" | |
}, | |
{ | |
"code": "CSS_008", | |
"message": "An error occurred while parsing the CSS: %1$s.", | |
"severity": "error" | |
}, | |
{ | |
"code": "CSS_009", | |
"message": "Use of certain CSS such as Columns, Transforms, Transitions, box-sizing or KeyFrames can cause pagination issues.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "CSS_010", | |
"message": "Stylesheet of type other than 'text/css' must have a fallback.", | |
"severity": "error" | |
}, | |
{ | |
"code": "CSS_011", | |
"message": "Excessive number of css files.", | |
"severity": "suppressed" | |
}, | |
{ | |
"code": "CSS_011_SUG", | |
"message": "Consider merging CSS files to reduce the number of CSS files.", | |
"severity": "suppressed" | |
}, | |
{ | |
"code": "CSS_012", | |
"message": "Document links to multiple CSS files.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "CSS_013", | |
"message": "CSS property is declared !Important.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "CSS_015", | |
"message": "Alternate Stylesheet has no title.", | |
"severity": "error" | |
}, | |
{ | |
"code": "CSS_016", | |
"message": "Alternate Stylesheet precedes primary stylesheet.", | |
"severity": "suppressed" | |
}, | |
{ | |
"code": "CSS_017", | |
"message": "CSS selector specifies absolute position.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "CSS_019", | |
"message": "CSS font-face declaration has no attributes.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "CSS_020", | |
"message": "CSS font selector declaration uses unexpected font-size value '%1$s'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "CSS_020_SUG", | |
"message": "Acceptable values include percentages, em multiples, 'larger', 'smaller', 'normal' or 'inherit'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "CSS_021", | |
"message": "Shorthand CSS property 'font-family' specifies an invalid System Font.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "CSS_021_SUG", | |
"message": "Acceptable values include 'caption', 'icon', 'menu', 'message-box', 'small-caption', 'status-bar', or 'inherit'.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "CSS_022", | |
"message": "CSS selector specifies global margin setting.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "CSS_023", | |
"message": "CSS selector specifies media query.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "CSS_024", | |
"message": "CSS class Selector is not used.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "CSS_024_SUG", | |
"message": "Remove unused CSS selectors.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "CSS_025", | |
"message": "CSS class Selector could not be found.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "CSS_025_SUG", | |
"message": "Check for typos or define a class selector to document the use of the class.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "CSS_028", | |
"message": "Use of Font-face declaration.", | |
"severity": "usage" | |
} | |
], | |
"XHTML": [ | |
{ | |
"code": "HTM_001", | |
"message": "Any publication resource that is an XML-based media type must be a valid XML 1.0 document. XML version found: %1$s.", | |
"severity": "error" | |
}, | |
{ | |
"code": "HTM_002", | |
"message": "The installed xml parser doesn't support xml version verification. Xml files must be a valid XML 1.0 document.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "HTM_003", | |
"message": "External entities are not allowed in EPUB v3 documents. External entity declaration found: %1$s.", | |
"severity": "error" | |
}, | |
{ | |
"code": "HTM_004", | |
"message": "Irregular DOCTYPE: found '%1$s', expected '%2$s'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "HTM_005", | |
"message": "An external reference was found.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_006", | |
"message": "An XHTML Named Entity was found.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_007", | |
"message": "Empty or whitespace-only value of attribute ssml:ph.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "HTM_008", | |
"message": "The src attribute is required.", | |
"severity": "error" | |
}, | |
{ | |
"code": "HTM_009", | |
"message": "The DOCTYPE provided is obsolete or irregular and can be removed.", | |
"severity": "error" | |
}, | |
{ | |
"code": "HTM_010", | |
"message": "Namespace uri '%1$s' was found.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_011", | |
"message": "Entity is undeclared.", | |
"severity": "error" | |
}, | |
{ | |
"code": "HTM_011_SUG", | |
"message": "Define the entity or use the numbered entity instead.", | |
"severity": "error" | |
}, | |
{ | |
"code": "HTM_012", | |
"message": "Found a link to a CFI in an external book.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_013", | |
"message": "Intra-Publication CFIs found in document.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_014", | |
"message": "Invalid file extension for HTML file, expecting (html, htm or xhtml).", | |
"severity": "warning" | |
}, | |
{ | |
"code": "HTM_014a", | |
"message": "XHTML Content Document file name '%1$s' should have the extension '.xhtml'.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "HTM_015", | |
"message": "HTML4 DOCTYPE definition within EPUB v3.", | |
"severity": "suppressed" | |
}, | |
{ | |
"code": "HTM_016", | |
"message": "HTML5 DOCTYPE definition within EPUB v2.", | |
"severity": "suppressed" | |
}, | |
{ | |
"code": "HTM_017", | |
"message": "Content file has different language value in attributes xml:lang and lang.", | |
"severity": "error" | |
}, | |
{ | |
"code": "HTM_018", | |
"message": "Content file has invalid language value at attribute xml:lang.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_019", | |
"message": "Content file has invalid language definition at attribute lang.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_020", | |
"message": "Content file doesn't contain xml:lang attribute.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_021", | |
"message": "Content file doesn't contain lang attribute.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_022", | |
"message": "Document may contain excessive DIV or SPAN tags.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_022_SUG", | |
"message": "Merge DIV or SPAN tags when they are consecutive and use the same style.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_023", | |
"message": "An invalid XHTML Named Entity was found: '%1$s'.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "HTM_023_SUG", | |
"message": "Check the spelling or use numbered entities instead.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "HTM_024", | |
"message": "An XHTML Named Entity was found. Only '&' ''' '"e;' '<' or '>' are allowed.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_024_SUG", | |
"message": "Check the spelling or use numbered entities instead.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_025", | |
"message": "Non-registered URI scheme type found in href.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "HTM_027", | |
"message": "List contains less than 2 items.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_027_SUG", | |
"message": "Lists should have more than one item for accessibility.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_028", | |
"message": "Input html elements should include an id.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_029", | |
"message": "Label html elements should include a 'for' attribute referencing the id of an input element.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_033", | |
"message": "HTML 'head' element does not have a 'title' child element.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_036", | |
"message": "IFrames are highly discouraged.", | |
"severity": "suppressed" | |
}, | |
{ | |
"code": "HTM_038", | |
"message": "Ensure b, i, em, and strong elements are used in compliance with W3C HTML5 directives.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_038_SUG", | |
"message": "CSS styles are usually more appropriate for italics or bold text.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_044", | |
"message": "Namespace uri '%1$s' was included but not used.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_044_SUG", | |
"message": "Remove unused Namespace URIs.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_045", | |
"message": "Encountered empty href.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_045_SUG", | |
"message": "Empty hrefs are valid self-references. These should be validated to ensure that this is the desired intent.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_046", | |
"message": "Fixed format item has no viewport defined.", | |
"severity": "error" | |
}, | |
{ | |
"code": "HTM_046_SUG", | |
"message": "A viewport declaration is required for fixed format items.", | |
"severity": "error" | |
}, | |
{ | |
"code": "HTM_047", | |
"message": "Html viewport is missing height and/or width.", | |
"severity": "error" | |
}, | |
{ | |
"code": "HTM_047_SUG", | |
"message": "The viewport declaration must declare both width and height.", | |
"severity": "error" | |
}, | |
{ | |
"code": "HTM_048", | |
"message": "SVG Fixed-Layout Documents must have a 'viewBox' attribute (on the outermost 'svg' element).", | |
"severity": "error" | |
}, | |
{ | |
"code": "HTM_049", | |
"message": "Html element does not have an xmlns set to 'http://www.w3.org/1999/xhtml'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "HTM_049_SUG", | |
"message": "Add xmlns='http://www.w3.org/1999/xhtml' to the html element.", | |
"severity": "error" | |
}, | |
{ | |
"code": "HTM_050", | |
"message": "Found epub:type='pagebreak' attribute in content document.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "HTM_051", | |
"message": "Found Microdata semantic enrichments but no RDFa. EDUPUB recommends using RDFa Lite.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "HTM_052", | |
"message": "The property 'region-based' is only allowed on nav elements in Data Navigation Documents.", | |
"severity": "error" | |
}, | |
{ | |
"code": "HTM_053", | |
"message": "Found an external file link (file://) in file: '%1$s'.", | |
"severity": "info" | |
} | |
], | |
"media": [ | |
{ | |
"code": "MED_001", | |
"message": "Video poster must have core media image type.", | |
"severity": "error" | |
}, | |
{ | |
"code": "MED_002", | |
"message": "%1$s element doesn't provide fallback.", | |
"severity": "error" | |
}, | |
{ | |
"code": "MED_003", | |
"message": "A manifest fallback must be provided for image resource '%1$s' of type '%2$s'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "MED_004", | |
"message": "Image file header may be corrupted.", | |
"severity": "error" | |
}, | |
{ | |
"code": "MED_005", | |
"message": "Media Overlay audio reference %1$s to non-standard audio type %2$s found.", | |
"severity": "error" | |
}, | |
{ | |
"code": "MED_006", | |
"message": "Some browsers do not support rendering SVG images which use a filename in the xlink:href property.", | |
"severity": "error" | |
}, | |
{ | |
"code": "MED_007", | |
"message": "Foreign resources can only be referenced from 'source' elements with an explicit 'type' attribute; found resource '%1$s' of foreign type '%2$s'.", | |
"severity": "error" | |
} | |
], | |
"NAV": [ | |
{ | |
"code": "NAV_001", | |
"message": "The nav file is not supported for EPUB v2.", | |
"severity": "error" | |
}, | |
{ | |
"code": "NAV_002", | |
"message": "Found epub:type='page-list' in nav document", | |
"severity": "usage" | |
}, | |
{ | |
"code": "NAV_003", | |
"message": "The Navigation Document must have a page list when content document(s) contain page breaks (epub:type='pagebreak').", | |
"severity": "error" | |
}, | |
{ | |
"code": "NAV_004", | |
"message": "The Navigation Document should contain the full document heading hierarchy in EDUPUB.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "NAV_005", | |
"message": "Content documents contain 'audio' elements but the Navigation Document does not have a listing of audio clips (epub:type='loa').", | |
"severity": "usage" | |
}, | |
{ | |
"code": "NAV_006", | |
"message": "Content documents contain 'figure' elements but the Navigation Document does not have a listing of figures (epub:type='loi').", | |
"severity": "usage" | |
}, | |
{ | |
"code": "NAV_007", | |
"message": "Content documents contain 'table' elements but the Navigation Document does not have a listing of tables (epub:type='lot').", | |
"severity": "usage" | |
}, | |
{ | |
"code": "NAV_008", | |
"message": "Content documents contain 'video' elements but the Navigation Document does not have a listing of video clips (epub:type='lov').", | |
"severity": "usage" | |
}, | |
{ | |
"code": "NAV_009", | |
"message": "Region-based navigation links must point to Fixed-Layout Documents.", | |
"severity": "error" | |
}, | |
{ | |
"code": "NAV_010", | |
"message": "'%1$s' nav must not link to remote resources; found link to '%2$s'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "NAV_011", | |
"message": "'%1$s' nav must be in reading order; link target '%2$s' is before the previous link's target in %3$s order.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "NAV_011_SUG.spine", | |
"message": "spine", | |
"severity": "warning" | |
}, | |
{ | |
"code": "NAV_011_SUG.document", | |
"message": "document", | |
"severity": "warning" | |
} | |
], | |
"NCX": [ | |
{ | |
"code": "NCX_001", | |
"message": "NCX identifier ('%1$s') does not match OPF identifier ('%2$s').", | |
"severity": "error" | |
}, | |
{ | |
"code": "NCX_002", | |
"message": "toc attribute was not found on the spine element.", | |
"severity": "error" | |
}, | |
{ | |
"code": "NCX_003", | |
"message": "An .NCX file is required for TOC navigation on EPUB v2 readers.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "NCX_004", | |
"message": "NCX identifier ('dtb:uid' metadata) should not contain leading or trailing whitespace.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "NCX_005", | |
"message": "Found ncx 'page-list' in .ncx file", | |
"severity": "usage" | |
}, | |
{ | |
"code": "NCX_006", | |
"message": "Empty 'text' label in the NCX document", | |
"severity": "usage" | |
} | |
], | |
"OPF": [ | |
{ | |
"code": "OPF_001", | |
"message": "There was an error when parsing the EPUB version: %1$s.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_002", | |
"message": "The OPF file '%1$s' was not found in the EPUB.", | |
"severity": "fatal" | |
}, | |
{ | |
"code": "OPF_003", | |
"message": "Item '%1$s' exists in the EPUB, but is not declared in the OPF manifest.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_004", | |
"message": "Invalid prefix declaration: leading or trailing whitespace is not allowed.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_004a", | |
"message": "Invalid prefix declaration: found empty prefix.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_004b", | |
"message": "Invalid prefix '%1$s': must be a valid non-colonized name (aka 'NCName').", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_004c", | |
"message": "Invalid prefix declaration: prefix '%1$s' must be immediately followed by a colon character (':').", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_004d", | |
"message": "Invalid prefix declaration: prefix '%1$s' must be separated by its URI with a space.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_004e", | |
"message": "Invalid prefix declaration: found illegal whitespace between prefix and URI.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_004f", | |
"message": "Invalid prefix declaration: found illegal whitespace between prefix mappings.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_005", | |
"message": "Invalid prefix declaration: URI for prefix '%1$s' doesn't exist.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_006", | |
"message": "Invalid prefix declaration: URI '%1$s' is not a valid URI.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_007", | |
"message": "Re-declaration of reserved prefix '%1$s'.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_007a", | |
"message": "Invalid prefix mapping: prefix '_' must not be declared.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_007b", | |
"message": "Invalid prefix mapping: default vocabulary '%1$s' must not be re-declared.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_008", | |
"message": "Handler binding for core Media-type '%1$s' is not allowed.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_009", | |
"message": "The media-type '%1$s' has already been assigned a handler, with ID '%2$s'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_010", | |
"message": "Error resolving reference: '%1$s'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_011", | |
"message": "itemref can't have both page-spread-right and page-spread-left properties.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_012", | |
"message": "Item property '%1$s' is not defined for media type '%2$s'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_013", | |
"message": "The type property '%1$s' on the object tag does not match the declared media-type '%2$s' in the OPF manifest.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_014", | |
"message": "The property '%1$s' should be declared in the OPF file.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_015", | |
"message": "The property '%1$s' should not be declared in the OPF file.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_016", | |
"message": "The element 'rootfile' is missing its required attribute 'full-path'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_017", | |
"message": "The attribute 'full-path' on element 'rootfile' must not be empty.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_018", | |
"message": "The 'remote-resources' property was declared in the Package Document, but no reference to remote resources has been found.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_018b", | |
"message": "The 'remote-resources' property was declared in the Package Document, but no reference to remote resources has been found; please check scripted content to make sure the property is legit. ", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_019", | |
"message": "Spine tag was not found in the OPF file.", | |
"severity": "fatal" | |
}, | |
{ | |
"code": "OPF_020", | |
"message": "Excessive number of spine items.", | |
"severity": "suppressed" | |
}, | |
{ | |
"code": "OPF_021", | |
"message": "Use of non-registered URI scheme type in href: '%1$s'.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_025", | |
"message": "Property value list '%1$s' is not allowed, only one value must be specified.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_026", | |
"message": "Found malformed property value: '%1$s'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_027", | |
"message": "Undefined property: '%1$s'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_028", | |
"message": "Undeclared prefix: '%1$s'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_029", | |
"message": "The file '%1$s' does not appear to match the media type %2$s, as specified in the OPF file.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_030", | |
"message": "The unique-identifier '%1$s' was not found.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_031", | |
"message": "File listed in reference element in guide was not declared in OPF manifest: %1$s.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_032", | |
"message": "Guide references '%1$s' which is not a valid 'OPS Content Document'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_033", | |
"message": "The spine contains no linear resources.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_034", | |
"message": "The spine contains multiple references to the manifest item with id '%1$s'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_035", | |
"message": "Media type 'text/html' is not appropriate for XHTML/OPS.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_035_SUG", | |
"message": "Use 'application/xhtml+xml' instead.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_036", | |
"message": "Video type '%1$s' might not be supported by reading systems", | |
"severity": "usage" | |
}, | |
{ | |
"code": "OPF_036_SUG", | |
"message": "Use 'video/mp4', 'video/h264' or 'video/webm' instead.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "OPF_037", | |
"message": "Found deprecated media-type '%1$s'.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_038", | |
"message": "Media type '%1$s' is not appropriate for an OEBPS 1.2 context; Use 'text/x-oeb1-document' instead.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_039", | |
"message": "Media-type '%1$s' is not appropriate in an OEBPS 1.2 context. Use 'text/x-oeb1-css' instead.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_040", | |
"message": "Fallback item could not be found.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_041", | |
"message": "Fallback-style item could not be found.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_042", | |
"message": "'%1$s' is not a permissible spine media-type.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_043", | |
"message": "Spine item with non-standard media-type '%1$s' has no fallback.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_044", | |
"message": "Spine item with non-standard media-type '%1$s' has a fallback to non-standard media-type.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_045", | |
"message": "Encountered circular reference in fallback chain.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_046", | |
"message": "Scripted property is not set on mediaType handler.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_047", | |
"message": "OPF file is using OEBPS 1.2 syntax allowing backwards compatibility.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_048", | |
"message": "Package tag is missing its required unique-identifier attribute and value.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_049", | |
"message": "Item id '%1$s' was not found in the manifest.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_050", | |
"message": "TOC attribute references resource with non-NCX mime type; 'application/x-dtbncx+xml' is expected.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_051", | |
"message": "Image dimensions exceed recommended size.", | |
"severity": "suppressed" | |
}, | |
{ | |
"code": "OPF_052", | |
"message": "Role value '%1$s' is not valid.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_053", | |
"message": "Date value '%1$s' does not follow recommended syntax as per http://www.w3.org/TR/NOTE-datetime:%2$s.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_054", | |
"message": "Date value '%1$s' is not valid as per http://www.w3.org/TR/NOTE-datetime:%2$s.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_055", | |
"message": "%1$s tag is empty.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_056", | |
"message": "Media type '%1$s' is not a core audio type.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "OPF_057", | |
"message": "Image file length exceeds recommended size.", | |
"severity": "suppressed" | |
}, | |
{ | |
"code": "OPF_058", | |
"message": "Spine item '%1$s' is not referenced from the TOC in the Nav Doc.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "OPF_058_SUG", | |
"message": "Every spine item in the manifest should be referenced by at least one TOC entry in the Nav Doc.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "OPF_059", | |
"message": "Spine item '%1$s' is not referenced from the TOC in the NCX.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "OPF_059_SUG", | |
"message": "Every spine item in the manifest should be referenced by at least one TOC entry in the NCX file.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "OPF_060", | |
"message": "Duplicate entry in the ZIP file: '%1$s'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_061", | |
"message": "Duplicate entry in the ZIP file (after Unicode NFC normalization) '%1$s'.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_062", | |
"message": "Found Adobe page-map attribute on spine element in opf file.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "OPF_063", | |
"message": "Referenced Adobe page-map item '%1$s' was not found in the manifest.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_064", | |
"message": "OPF declares type '%1$s', validating using profile '%2$s'.", | |
"severity": "info" | |
}, | |
{ | |
"code": "OPF_065", | |
"message": "Invalid metadata declaration, probably due to a cycle in 'refines' metadata.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_066", | |
"message": "Missing 'dc:source' or 'source-of' pagination metadata. The pagination source must be identified using the 'dc:source' and 'source-of' properties when the content includes page break markers.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_067", | |
"message": "The resource '%1$s' must not be listed both as a 'link' element in the package metadata and as a manifest item.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_068", | |
"message": "Unknown collection role '%1$s'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_069", | |
"message": "Custom collection role URI '%1$s' must not include the string 'idpf.org' in its host component.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_070", | |
"message": "Custom collection role '%1$s' is an invalid URI.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_071", | |
"message": "Index collections must only contain resources pointing to XHTML Content Documents.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_072", | |
"message": "Metadata element '%1$s' is empty.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "OPF_073", | |
"message": "External identifiers must not appear in the document type declaration.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_074", | |
"message": "Package resource '%1$s' is declared in several manifest item.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_075", | |
"message": "Preview collections must only point to EPUB Content Documents.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_076", | |
"message": "The URI of preview collections link elements must not include EPUB canonical fragment identifiers.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_077", | |
"message": "A Data Navigation Document should not be included in the spine.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_078", | |
"message": "An EPUB Dictionary must contain at least one Content Document with dictionary content (epub:type 'dictionary').", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_079", | |
"message": "Dictionary content was found (epub:type 'dictionary'), the Package Document should declare the dc:type 'dictionary'.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_080", | |
"message": "A Search Key Map document file name should have the extension '.xml'.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_081", | |
"message": "Resource '%1$s' (referenced from an EPUB Dictionary collection) was not found.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_082", | |
"message": "Found an EPUB Dictionary collection containing more than one Search Key Map Document.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_083", | |
"message": "Found an EPUB Dictionary collection containing no Search Key Map Document.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_084", | |
"message": "Found an EPUB Dictionary collection containing resource '%1$s' which is neither a Search Key Map Document nor an XHTML Content Document.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_085", | |
"message": "'dc:identifier' value '%1$s' is marked as a UUID, but is an invalid UUID.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_086", | |
"message": "Property '%1$s' is deprecated. Consider using %2$s instead.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_086_SUG.default", | |
"message": "a custom prefixed property", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_086_SUG.marc21xml-record", | |
"message": "the 'record' keyword and the media-type 'application/marcxml+xml'", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_086_SUG.mods-record", | |
"message": "the 'record' keyword and the media-type 'application/mods+xml'", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_086_SUG.onix-record", | |
"message": "the 'record' keyword with the properties attribute value 'onix'", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_086_SUG.xml-signature", | |
"message": "no signature-identifying link", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_086_SUG.xmp-record", | |
"message": "the 'record' keyword with the properties attribute value 'xmp'", | |
"severity": "warning" | |
}, | |
{ | |
"code": "OPF_086b", | |
"message": "epub:type value '%1$s' is deprecated. Consider using %2$s instead.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "OPF_086b_SUG.default", | |
"message": "a custom prefixed value", | |
"severity": "usage" | |
}, | |
{ | |
"code": "OPF_086b_SUG.annoref", | |
"message": "open annotations", | |
"severity": "usage" | |
}, | |
{ | |
"code": "OPF_086b_SUG.annotation", | |
"message": "open annotations", | |
"severity": "usage" | |
}, | |
{ | |
"code": "OPF_086b_SUG.help", | |
"message": "the 'tip' property", | |
"severity": "usage" | |
}, | |
{ | |
"code": "OPF_086b_SUG.marginalia", | |
"message": "a bare 'aside' element", | |
"severity": "usage" | |
}, | |
{ | |
"code": "OPF_086b_SUG.note", | |
"message": "a 'footnote' or 'endnote' property", | |
"severity": "usage" | |
}, | |
{ | |
"code": "OPF_086b_SUG.rearnote", | |
"message": "the 'endnote' property", | |
"severity": "usage" | |
}, | |
{ | |
"code": "OPF_086b_SUG.rearnotes", | |
"message": "the 'endnotes' property", | |
"severity": "usage" | |
}, | |
{ | |
"code": "OPF_086b_SUG.sidebar", | |
"message": "a bare 'aside' element", | |
"severity": "usage" | |
}, | |
{ | |
"code": "OPF_086b_SUG.warning", | |
"message": "the 'notice' property", | |
"severity": "usage" | |
}, | |
{ | |
"code": "OPF_087", | |
"message": "epub:type value '%1$s' is not allowed on documents of type '%2$s'.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "OPF_088", | |
"message": "Unrecognized epub:type value '%1$s'.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "OPF_089", | |
"message": "The 'alternate' link rel keyword cannot be paired with other keywords.", | |
"severity": "error" | |
}, | |
{ | |
"code": "OPF_090", | |
"message": "It is encouraged to use MIME media type '%1$s' instead of '%2$s'. ", | |
"severity": "usage" | |
} | |
], | |
"Package": [ | |
{ | |
"code": "PKG_001", | |
"message": "Validating the EPUB against version %1$s but detected version %2$s.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "PKG_003", | |
"message": "Unable to read EPUB file header. This is likely a corrupted EPUB file.", | |
"severity": "error" | |
}, | |
{ | |
"code": "PKG_004", | |
"message": "Corrupted EPUB ZIP header.", | |
"severity": "fatal" | |
}, | |
{ | |
"code": "PKG_005", | |
"message": "The mimetype file has an extra field of length %1$s. The use of the extra field feature of the ZIP format is not permitted for the mimetype file.", | |
"severity": "error" | |
}, | |
{ | |
"code": "PKG_006", | |
"message": "Mimetype file entry is missing or is not the first file in the archive.", | |
"severity": "error" | |
}, | |
{ | |
"code": "PKG_007", | |
"message": "Mimetype file should only contain the string 'application/epub+zip' and should not be compressed.", | |
"severity": "error" | |
}, | |
{ | |
"code": "PKG_008", | |
"message": "Unable to read file '%1$s'.", | |
"severity": "fatal" | |
}, | |
{ | |
"code": "PKG_009", | |
"message": "File name contains characters that are not allowed in OCF file names: '%1$s'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "PKG_010", | |
"message": "Filename contains spaces, therefore URI escaping is necessary. Consider removing spaces from filename.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "PKG_011", | |
"message": "Filename is not allowed to end with '.'.", | |
"severity": "error" | |
}, | |
{ | |
"code": "PKG_012", | |
"message": "File name contains the following non-ascii characters: %1$s. Consider changing the filename.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "PKG_013", | |
"message": "The EPUB file includes multiple OPS renditions.", | |
"severity": "error" | |
}, | |
{ | |
"code": "PKG_014", | |
"message": "The EPUB contains empty directory '%1$s'.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "PKG_015", | |
"message": "Unable to read EPUB contents: %1$s", | |
"severity": "fatal" | |
}, | |
{ | |
"code": "PKG_016", | |
"message": "Use only lowercase characters for the EPUB file extension for maximum compatibility.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "PKG_016_SUG", | |
"message": "For maximum compatibility, use '.epub'.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "PKG_017", | |
"message": "Uncommon EPUB file extension.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "PKG_017_SUG", | |
"message": "For maximum compatibility, use '.epub'.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "PKG_018", | |
"message": "The EPUB file could not be found.", | |
"severity": "fatal" | |
}, | |
{ | |
"code": "PKG_020", | |
"message": "OPF file '%1$s' could not be found.", | |
"severity": "error" | |
}, | |
{ | |
"code": "PKG_021", | |
"message": "Corrupted image file encountered.", | |
"severity": "error" | |
}, | |
{ | |
"code": "PKG_022", | |
"message": "Wrong file extension for image. The image is a '%1$s' file but has the file extension '%2$s'.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "PKG_023", | |
"message": "Validating the EPUB against version 2.0, default validation profile will be used.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "PKG_024", | |
"message": "Uncommon EPUB file extension.", | |
"severity": "info" | |
}, | |
{ | |
"code": "PKG_024_SUG", | |
"message": "For maximum compatibility, use '.epub'.", | |
"severity": "info" | |
} | |
], | |
"Resources": [ | |
{ | |
"code": "RSC_001", | |
"message": "File '%1$s' could not be found.", | |
"severity": "error" | |
}, | |
{ | |
"code": "RSC_002", | |
"message": "Required META-INF/container.xml resource could not be found.", | |
"severity": "fatal" | |
}, | |
{ | |
"code": "RSC_003", | |
"message": "No rootfile tag with media type 'application/oebps-package+xml' was found in the container.", | |
"severity": "error" | |
}, | |
{ | |
"code": "RSC_004", | |
"message": "File '%1$s' could not be decrypted.", | |
"severity": "error" | |
}, | |
{ | |
"code": "RSC_005", | |
"message": "Error while parsing file: %1$s", | |
"severity": "error" | |
}, | |
{ | |
"code": "RSC_006", | |
"message": "Remote resource reference not allowed; resource must be placed in the OCF.", | |
"severity": "error" | |
}, | |
{ | |
"code": "RSC_006b", | |
"message": "Resource '%1$s' is located outside the EPUB Container; please check the resource is retrieved in scripted content. ", | |
"severity": "usage" | |
}, | |
{ | |
"code": "RSC_007", | |
"message": "Referenced resource '%1$s' could not be found in the EPUB.", | |
"severity": "error" | |
}, | |
{ | |
"code": "RSC_007w", | |
"message": "Referenced resource '%1$s' could not be found in the EPUB.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "RSC_008", | |
"message": "Referenced resource '%1$s' is not declared in the OPF manifest.", | |
"severity": "error" | |
}, | |
{ | |
"code": "RSC_009", | |
"message": "A non-SVG image resource should not be defined with a fragment identifier.", | |
"severity": "error" | |
}, | |
{ | |
"code": "RSC_010", | |
"message": "Reference to non-standard resource type found.", | |
"severity": "error" | |
}, | |
{ | |
"code": "RSC_011", | |
"message": "Found a reference to a resource that is not a spine item.", | |
"severity": "error" | |
}, | |
{ | |
"code": "RSC_012", | |
"message": "Fragment identifier is not defined.", | |
"severity": "error" | |
}, | |
{ | |
"code": "RSC_013", | |
"message": "Fragment identifier is used in a reference to a stylesheet resource.", | |
"severity": "error" | |
}, | |
{ | |
"code": "RSC_014", | |
"message": "Fragment identifier defines an incompatible resource type.", | |
"severity": "error" | |
}, | |
{ | |
"code": "RSC_015", | |
"message": "A fragment identifier is required for svg use tag references.", | |
"severity": "error" | |
}, | |
{ | |
"code": "RSC_016", | |
"message": "Fatal Error while parsing file: %1$s", | |
"severity": "fatal" | |
}, | |
{ | |
"code": "RSC_017", | |
"message": "Warning while parsing file: %1$s", | |
"severity": "warning" | |
}, | |
{ | |
"code": "RSC_018", | |
"message": "Alternative image file '%1$s' could not be found.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "RSC_019", | |
"message": "EPUBs with Multiple Renditions should contain a META-INF/metadata.xml file.", | |
"severity": "warning" | |
}, | |
{ | |
"code": "RSC_020", | |
"message": "'%1$s' is not a valid URI.", | |
"severity": "error" | |
}, | |
{ | |
"code": "RSC_021", | |
"message": "A Search Key Map Document must point to Content Documents ('%1$s' was not found in the spine).", | |
"severity": "error" | |
}, | |
{ | |
"code": "RSC_022", | |
"message": "Cannot check image details (requires Java version 7 or higher).", | |
"severity": "info" | |
}, | |
{ | |
"code": "RSC_023", | |
"message": "The URL '%1$s' is missing %2$d slash(es) '/' after the protocol '%3$s:'", | |
"severity": "warning" | |
} | |
], | |
"Scripting": [ | |
{ | |
"code": "SCP_001", | |
"message": "Use of Javascript eval() function in EPUB scripts is a security risk.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "SCP_002", | |
"message": "Use of XMLHttpRequest in EPUB scripts is a security risk.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "SCP_003", | |
"message": "Local and Session Storage is not currently supported.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "SCP_004", | |
"message": "Content file contains script which is not supported in EPUB v2.", | |
"severity": "error" | |
}, | |
{ | |
"code": "SCP_005", | |
"message": "Content file contains script but it is not marked as scripted.", | |
"severity": "error" | |
}, | |
{ | |
"code": "SCP_006", | |
"message": "Inline scripts found.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "SCP_007", | |
"message": "Script references 'innerHtml'.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "SCP_007_SUG", | |
"message": "Use a DOM instead.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "SCP_008", | |
"message": "Script references 'innerText'.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "SCP_008_SUG", | |
"message": "Use 'textContent' instead.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "SCP_009", | |
"message": "Content file uses mouse event handlers.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "SCP_009_SUG", | |
"message": "Ensure that all mouse driven functionality is accessible from the keyboard and touch devices.", | |
"severity": "usage" | |
}, | |
{ | |
"code": "SCP_010", | |
"message": "Epub 3 content file contains script.", | |
"severity": "usage" | |
} | |
] | |
} |