Other techniques for implementing EPUB accessibility metadata are available: Display Techniques for Displaying Accessibility Metadata
This document provides techniques for meeting the guidelines of the User Experience Guide for Displaying Accessibility Metadata. It provides practical examples for extracting information from the ONIX metadata for showing it to the end users.
ONIX messages describe products for the global book supply chain and will be sent from publisher or creator of the epub or digital books with full audio to those who will make the products available for sale, lending or subscription. These platforms may not yet have the actual files, as they may not yet be ready, or may only choose to list them for sale if they have certain accessibility features. ONIX also only describes a product, it cannot describe the features of the reading systems on which a product may be accessed. It is important to use ONIX metadata as a complement to the accessibility data embedded within the publication itself, if describing accessible books, books with full audio and related products for the global book supply chain. An ONIX file can be used to display accessibility information in advance of publication or when you do not have access to the metadata in the digital file itself. Some accessibility information may only be available when you have access to the file itself. If you are unfamiliar with ONIX, then there is more documentation available from EDItEUR.org.
It is important to note that ONIX 3.0 includes a number of new accessibility metadata codes, some of which may not be expressible in earlier versions of ONIX.
Here is an example of an ONIX record (version 3.0), which will be used as a reference point for the following examples on EPUB accessibility metadata: the results of the XPath shown are based on this example.
Here is an example of an ONIX record (version 3.0) for describing an audiobook, which will be used as a reference point for the some of the following examples on EPUB accessibility metadata: the results of the XPath shown are based on this example.
The code conventions used in the provided code snippet follow a structure commonly found in programming languages like Python, Java, or C++. Here's an explanation of the conventions:
In this section we define the functions common to all techniques, which are called by them during execution.
Before working directly with the metadata we must read the ONIX record. This is a common starting point for all techniques that allows us to query the record directly.
This algorithm takes the onix_record_as_text argument: a UTF-8 string representing the ONIX record.
To generate the internal representation, run the following steps:
Many of the techniques rely on checking for the presence or absence of metadata in the ONIX record.
This algorithm takes:
To check for node, run the following steps:
True
.
False
.This technique relates to Visual adjustments key information.
This algorithm takes the onix_record_as_text argument: a UTF-8 string representing the ONIX record.
If true it indicates that the code 36 of codelist 196 (All textual content can be modified) is present in the ONIX record, otherwise if false it means that the metadata is not present.
All textual content can be modified means that the digital publication does not restrict the ability of users to modify and reflow the display of any textual content to the full extent allowed by the reading system (i.e. to change the text size or typeface, line height and word spacing, colors).
If true it indicates that the code E201 of codelist 175 (Fixed format) is present in the ONIX record, otherwise if false it means that the metadata is not present.
Fixed format means that digital publication is in fixed format (e.g. EPUB Fixed Layout).
/ONIXMessage/Product/DescriptiveDetail/ProductFormFeature[ProductFormFeatureType = "09" and ProductFormFeatureValue = "36"]
./ONIXMessage/Product/DescriptiveDetail/ProductFormDetail[text() = "E201"]
AND NOT the result of calling check for node on onix, /ONIXMessage/Product/DescriptiveDetail/ProductFormDetail[text() = "E200"]
."Appearance can be modified"
.
"Appearance cannot be modified"
.
"Appearance modifiability not known"
.This technique relates to Supports nonvisual reading key information.
This algorithm takes the onix_record_as_text argument: a UTF-8 string representing the ONIX record.
If true it indicates that the code 52 of codelist 196 (All non-decorative content supports reading without sight) is present in the ONIX record, otherwise if false it means that the metadata is not present.
All non-decorative content supports reading without sight means that all contents of the digital publication necessary to use and understanding, including text, images (via their alternative descriptions), audio and video material (via their transcripts, descriptions, captions or subtitles) are fully accessible via suitable reading devices, for example text-to-speech screen readers or tactile reading devices (‘Braille displays’), and nothing in the digital publication prevents or blocks the use of alternative reading modes. The entire publication can be navigated and ‘read’ using only text rendered via sound or touch, and does not require visual perception.
If true it indicates that the code 10 of codelist 81 (Text) is present in the ONIX record, otherwise if false it means that the metadata is not present.
Text means that digital publication contains "real" text (user-selectable) as its main content (or as secondary content).
If true it indicates that at least one of the following is present in the ONIX record:
This means that the content contains images of any type.
If true it indicates that at least one of the following is present in the ONIX record:
This means that there are textual alternatives for images.
/ONIXMessage/Product/DescriptiveDetail/ProductFormFeature[ProductFormFeatureType = "09" and ProductFormFeatureValue = "52"]
./ONIXMessage/Product/DescriptiveDetail[PrimaryContentType = "10" or ProductContentType = "10"]
./ONIXMessage/Product/DescriptiveDetail[PrimaryContentType = "07" or PrimaryContentType = "18" or PrimaryContentType = "19" or PrimaryContentType = "12" or PrimaryContentType = "49" or PrimaryContentType = "20" or ProductContentType = "07" or ProductContentType = "18" or ProductContentType = "19" or ProductContentType = "12" or ProductContentType = "49" or ProductContentType = "20"]
./ONIXMessage/Product/DescriptiveDetail/ProductFormFeature[ProductFormFeatureType = "09" and (ProductFormFeatureValue = "14" or ProductFormFeatureValue = "15" or ProductFormFeatureValue = "16")]
."Readable in read aloud and braille"
.
"Not fully readable in read aloud and braille"
.
"May not be fully readable in read aloud and braille"
.This technique relates to Conformance key information.
This technique relates to Pre-recorded audio key information.
This algorithm takes the onix_record_as_text argument: a UTF-8 string representing the ONIX record.
If true it indicates that the code 01 of codelist 81 (Audiobook) is present in the ONIX record, otherwise if false it means that the metadata is not present.
This means that the primary content is an Audio recording of a reading of a book or other text.
If true it indicates that the code 39 of codelist 196 (Supplementary material to an audiobook is accessible) is present in the ONIX record, otherwise if false it means that the metadata is not present.
This means that all supplementary visual or textual material necessary for understanding of an audiobook, is available as pre-recorded audio, or has full alternative text that can be read via text-to- speech. Only for use in ONIX 3.0 or later.
If true it indicates that the code 51 of codelist 196 (All non-decorative content supports reading via pre-recorded audio) is present in the ONIX record, otherwise if false it means that the metadata is not present.
This means that all contents of the digital publication necessary to use and understanding, including any text, images (via alternative descriptions), video (via audio description) is fully accessible via suitable audio reproduction. The entire publication can be navigated and ‘read’ using only pre-recorded sound, and does not require visual or tactile perception.
If true it indicates that one of the following codes is present in the ONIX record:
Otherwise, if false, it means that none of the metadata is not present.
This indicates that text-synchronised pre-recorded audio narration (natural or synthesised voice) is included for substantially all textual matter, including all alternative descriptions, e.g. via a SMIL media overlay.
If true it indicates that one of the following codes is present in the ONIX record:
Otherwise, if false, it means that none of the metadata is not present.
This indicates that pre-recorded audio content is included as part of the work. It can be Audio recording of a reading, performance or dramatization of part of the work or additional pre-recorded audio of any supplementary material such as full or partial reading, lecture, performance, dramatization, interview, background documentary or other audio content not included in the primary or unenhanced version
If true it indicates that one of the following codes is present in the ONIX record:
Otherwise, if false, it means that none of the metadata is not present.
This indicates that pre-recorded video including audio content is included as part of the work. It can be video recording of a reading, performance of part of the work or additional pre-recorded video of any supplementary material such as full or partial reading, lecture, performance, dramatization, interview, background documentary or other video containing audio content.
/ONIXMessage/Product/DescriptiveDetail/DescriptiveDetail[PrimaryContentType = "81" or ContentType = "81"]
./ONIXMessage/Product/DescriptiveDetail/ProductFormFeature[ProductFormFeatureType = "09" and ProductFormFeatureValue = "39"]
./ONIXMessage/Product/DescriptiveDetail/ProductFormFeature[ProductFormFeatureType = "09" and ProductFormFeatureValue = "51"]
./ONIXMessage/Product/DescriptiveDetail/ProductFormFeature[ProductFormFeatureType = "09" and ProductFormFeatureValue = "20"]
AND calling check for node on onix, /ONIXMessage/Product/DescriptiveDetail/ProductFormDetail[text() = "A305"]
.
/ONIXMessage/Product/DescriptiveDetail/DescriptiveDetail[ContentType = "21" or ContentType = "22"]
.
/ONIXMessage/Product/DescriptiveDetail/DescriptiveDetail[ContentType = "06" or ContentType = "24" or ContentType = "25" or ContentType = "26" or ContentType = "27" or ContentType = "30"]
.
"Audio only"
.
"Complementary audio and text"
.
"Synchronized audio and text"
.
"No information about pre-recorded audio"
.
This key information can be hidden if metadata is missing.
This technique relates to Charts, diagrams, and formulas key information.
This algorithm takes the onix_record_as_text argument: a UTF-8 string representing the ONIX record.
If true it indicates that the code 19 of codelist 81 (Figures, diagrams, charts, graphs) is present in the ONIX record, otherwise if false it means that the metadata is not present.
This means that there is a positive indication that the product has some information conveyed via some form of illustration, such as a graph, a chart, a diagram, a figure, etc).
If true it indicates that the code 16 of codelist 196 (Visualised data also available as non-graphical datas) is present in the ONIX record, otherwise if false it means that the metadata is not present.
This means that there is a positive indication that all data presented in a visual format (graph, chart, etc) has an alternative non-graphical presentation of the same data.
If true it indicates that the code 15 of codelist 196 (Full alternative textual description) is present in the ONIX record, otherwise if false it means that the metadata is not present.
This means that there is a positive indication that a full alternative textual description has been supplied for all of the graphs, charts, diagrams, or figures necessary to understand the content.
If true it indicates that the code 47 of codelist 81 (Chemical content) is present in the ONIX record, otherwise if false it means that the metadata is not present.
This means that there is a positive indication that the publication contains chemical notations, formulae.
If true it indicates that the code 18 of codelist 196 (Accessible chemistry content as ChemML) is present in the ONIX record, otherwise if false it means that the metadata is not present.
This means that there is a positive indication that the chemical formulae are presented using ChemML and works with compatible assistive technology.
If true it indicates that the code 48 of codelist 81 (Mathematical content) is present in the ONIX record, otherwise if false it means that the metadata is not present.
This means that there is a positive indication that the publication contains mathematical notation, equations, formulae.
If true it indicates that the code 35 of codelist 196 (Accessible math content as LaTeX) is present in the ONIX record, otherwise if false it means that the metadata is not present.
This means that there is a positive indication that the chemical formulae are presented using LaTeX and works with compatible assistive technology.
If true it indicates that the code 17 of codelist 196 (Accessible math content as MathML) is present in the ONIX record, otherwise if false it means that the metadata is not present.
This means that there is a positive indication that all mathematical content is presented using MathML and works with compatible assistive technology.
/ONIXMessage/Product/DescriptiveDetail/DescriptiveDetail[PrimaryContentType = "19" or ContentType = "19"]
./ONIXMessage/Product/DescriptiveDetail/ProductFormFeature[ProductFormFeatureType = "09" and ProductFormFeatureValue = "16"]
./ONIXMessage/Product/DescriptiveDetail/ProductFormFeature[ProductFormFeatureType = "09" and ProductFormFeatureValue = "15"]
./ONIXMessage/Product/DescriptiveDetail/DescriptiveDetail[PrimaryContentType = "47" or ContentType = "47"]
./ONIXMessage/Product/DescriptiveDetail/ProductFormFeature[ProductFormFeatureType = "09" and ProductFormFeatureValue = "18"]
./ONIXMessage/Product/DescriptiveDetail/ProductFormFeature[ProductFormFeatureType = "09" and ProductFormFeatureValue = "34"]
./ONIXMessage/Product/DescriptiveDetail/DescriptiveDetail[PrimaryContentType = "48" or ContentType = "48"]
./ONIXMessage/Product/DescriptiveDetail/ProductFormFeature[ProductFormFeatureType = "09" and ProductFormFeatureValue = "35"]
./ONIXMessage/Product/DescriptiveDetail/ProductFormFeature[ProductFormFeatureType = "09" and ProductFormFeatureValue = "17"]
."Charts and diagrams have extended descriptions"
.
"Visualised data also available as non-graphical data"
.
"Accessible chemistry content"
.
"Accessible math content"
.
"Accessibility of formulas, charts, and diagrams unknown"
.
This technique relates to Hazards key information.
This algorithm takes the onix_record_as_text argument: a UTF-8 string representing the ONIX record.
If true it indicates that the code 00 of codelist 143 (No known hazards or warnings) is present in the ONIX record, otherwise if false it means that the metadata is not present.
This means there is a positive indication in the ONIX record confirming there are no associated hazard warnings with this product.
If true it indicates that the code 13 of codelist 143 (WARNING - Flashing hazard) is present in the ONIX record, otherwise if false it means that the metadata is not present.
This means that there is a positive indication that the product has a flashing hazard which must be displayed.
If true it indicates that the code 14 of codelist 143 (No flashing hazard warning necessary) is present in the ONIX record, otherwise if false it means that the metadata is not present.
This means there is a positive indication in the ONIX record confirming there are no flashing hazards associated with this product.
If true it indicates that the code 17 of codelist 143 (WARNING - Motion simulation hazard) is present in the ONIX record, otherwise if false it means that the metadata is not present.
This means that there is a positive indication that the product has a motion simulation hazard which must be displayed.
If true it indicates that the code 18 of codelist 143 (No motion simulation hazard warning necessary) is present in the ONIX record, otherwise if false it means that the metadata is not present.
This means there is a positive indication in the ONIX record confirming there are no motion simulation hazards associated with this product.
If true it indicates that the code 15 of codelist 143 (WARNING - Sound hazard) is present in the ONIX record, otherwise if false it means that the metadata is not present.
This means that there is a positive indication that the product has a sound hazard which must be displayed.
If true it indicates that the code 16 of codelist 143 (No sound hazard warning necessary) is present in the ONIX record, otherwise if false it means that the metadata is not present.
This means there is a positive indication in the ONIX record confirming there are no sound hazards associated with this product.
If true it indicates that the code 08 of codelist 196 (Unknown accessibility) is present in the ONIX record, otherwise if false it means that the metadata is not present.
This means that the product has not been assessed for hazards and there is no information about potential hazards.
/ONIXMessage/Product/DescriptiveDetail/ProductFormFeature[ProductFormFeatureType = "12" and ProductFormFeatureValue = "00"]
./ONIXMessage/Product/DescriptiveDetail/ProductFormFeature[ProductFormFeatureType = "12" and ProductFormFeatureValue = "13"]
./ONIXMessage/Product/DescriptiveDetail/ProductFormFeature[ProductFormFeatureType = "12" and ProductFormFeatureValue = "14"]
./ONIXMessage/Product/DescriptiveDetail/ProductFormFeature[ProductFormFeatureType = "12" and ProductFormFeatureValue = "17"]
./ONIXMessage/Product/DescriptiveDetail/ProductFormFeature[ProductFormFeatureType = "12" and ProductFormFeatureValue = "18"]
./ONIXMessage/Product/DescriptiveDetail/ProductFormFeature[ProductFormFeatureType = "12" and ProductFormFeatureValue = "15"]
./ONIXMessage/Product/DescriptiveDetail/ProductFormFeature[ProductFormFeatureType = "12" and ProductFormFeatureValue = "16"]
./ONIXMessage/Product/DescriptiveDetail/ProductFormFeature[ProductFormFeatureType = "09" and ProductFormFeatureValue = "08"]
."No hazards"
.
"flashing"
to hazards.
"motion"
to hazards.
"sound"
to hazards.
", "
", "
with " and "
" hazards"
to the end of the string IF (length of hazards) > 1 ELSE concatenating " hazard"
to the end of the string."The presence of hazards is unknown"
.
"No information about possible hazards"
.
This key information can be hidden if metadata is missing.
This technique relates to Accessibility summary key information.
This algorithm takes the onix_record_as_text argument: a UTF-8 string representing the ONIX record.
Being human-written, the accessibility summary and addendum will appear in the original language of the publication. Therefore it is necessary to take care of setting up the correct language tag information.
Accessibility summary existed when no system exposed the computed accessibility metadata. With more and more systems displaying this information, most of the accessibility summary may be redundant. It may be advised to display only the accessibility addendum.
Returns the description of code 00 of codelist 196 (Accessibility summary) if present in the ONIX record, otherwise if false it means that the metadata is not present.
This means there is a human-written text containing a short explanatory summary of the accessibility of the product or the URL of a web page comprising such a summary. Summarizes the already existent information and may add information that the publisher could not express with the other codes.
Returns the lang attribute of the node containing the accessibility_summary, or the lang attribute of the nearest anchestor.
This is the language code in which the text of the Accessibility summary was written.
Returns the description of code 92 of codelist 196 (Accessibility addendum) if present in the ONIX record, otherwise if false it means that the metadata is not present.
This means there is a human-written text containing a short addendum to the accessibility detail of the product. Contains precisions that the publisher could not express with the other's codes.
Returns the lang attribute of the node containing the accessibility_addendum, or the lang attribute of the nearest anchestor.
This is the language code in which the text of the Accessibility addendum was written.
Returns the value of nearest code 01 of codelist 22 (Language of text) if present in the ONIX record, otherwise if false it means that the metadata is not present.
This indicates the main language of the content and therefore the most probable language of accessibility summary and addendum.
/ONIXMessage/Product/DescriptiveDetail/ProductFormFeature[ProductFormFeatureType = "09" and ProductFormFeatureValue = "92"]/ProductFormFeatureDescription
./ONIXMessage/Product/DescriptiveDetail/ProductFormFeature[ProductFormFeatureType = "09" and ProductFormFeatureValue = "92"]/ProductFormFeatureDescription/(@lang|ancestor::*/@lang)[last()]
./ONIXMessage/Product/DescriptiveDetail/ProductFormFeature[ProductFormFeatureType = "09" and ProductFormFeatureValue = "00"]/ProductFormFeatureDescription
./ONIXMessage/Product/DescriptiveDetail/ProductFormFeature[ProductFormFeatureType = "09" and ProductFormFeatureValue = "00"]/ProductFormFeatureDescription/(@lang|ancestor::*/@lang)[last()]
./ONIXMessage/Product/DescriptiveDetail/Language[LanguageRole="01"]/LanguageCode
."No accessibility summary"
.
This key information can be hidden if metadata is missing.
This technique relates to Additional accessibility information key information.