Copyright © 2006 by the OpenReader™ Consortium. Some rights reserved. This specification, with the exception of the OpenReader logo, is licensed under a Creative Commons Attribution-ShareAlike 2.5 License. All rights reserved for the OpenReader logo. The OpenReader™ trademark is not covered by the Creative Commons License.
This specification details the structure, conformance requirements and recommendations of a Binder Document (“Binder”). It is a module specification within the suite of specifications used to define the OpenReader Publication Framework Specification.
The Binder is an XML document whose purpose is to organize a textual publication represented by multiple resources. The word “Binder” is used since the Binder Document is, in a loose sense, the digital equivalent of a book binder, or a three-ring binder, where paper pages (which can be thought of as discrete resource fragments) are ordered and “bound together” to create a single, coherent publication.
Although the Binder is primarily designed for the OpenReader Publication Framework (a framework centered on XML-conforming content documents and CSS), this specification has been authored in sufficiently generic fashion so it may be used for other similar publication frameworks.
The Binder Document is significantly influenced by the similar purpose Package Document of the innovative OEBPS Specification, first formulated in 1999. Since 1999, much has been learned about the shortcomings of OEBPS — expected for any first-generation technology — and new requirements identified. The Binder incorporates all the long-overdue improvements asked for by publishers, the accessibility community, and other digital publication stakeholders. It also enables new and powerful innovations which will greatly benefit both publishers and end-users.
The normative edition of this specification is the XHTML 1.1 document located at http://openreader.org/spec/bnd10.html .
Other formatted editions may be offered besides the normative edition, but they will not be considered normative.
The XHTML 1.1 normative edition of this specification is authored
so that the markup in the document body (that contained in the
body
element) conforms with the
Basic Content Document
Specification, Version 1.0.
Several important words and terms used in this specification are defined in the Common Definitions Document, Version 1.0.
The following key words (“imperatives”) are used in this specification to denote requirement level consistent with RFC 2119:
To aid in readability and understandability, special text highlighting conventions are used in this specification (in addition to ordinary text emphasis) to emphasize important items.
The requirement level imperatives described in Section 1.3 are highlighted based on three basic imperative levels: required, recommended, and optional.
The normative XHTML 1.1 edition of this specification includes special markup for every mention of elements, attributes, attribute values, and other related code. (For details, refer to the comment in the source document header.) This allows these markup constructs to be specially highlighted, using CSS, during presentation (including their status and requirement level) so they may be more easily recognized.
Since the normative edition of this specification may be rendered with different CSS style sheets, converted into other formats, rendered on visually limited hardware, or presented with text-to-speech engines, some or all of this highlighting may be lost. Care has been taken to assure that, in the absence of highlighting, every mention of these markup constructs will be clear and unambiguous.
Status | Requirement Level | ||
---|---|---|---|
Required | Cond. Req. | Optional | |
Normal | pubid |
title |
dublincore |
Deprecated |
|
|
|
Removed |
|
|
|
Status | Requirement Level | |||
---|---|---|---|---|
Required | Cond. Req. | Optional | Fixed | |
Normal | idns |
event |
comment |
|
Deprecated |
|
|
|
|
Removed |
|
|
|
|
In the above tables, there are four requirement levels:
“Required” means the element/attribute must appear, in some capacity, in all Binder documents.
“Conditionally Required” means the element/attribute must appear under certain element usage situations, and is optional in other situations.
“Optional” means the element/attribute is optional under all situations.
“Fixed” (applicable only to attributes) means the attribute is fixed to a certain value in the DTD and there is no separate requirement the attribute must appear in the associated element.
Similarly, there are three status levels:
“Normal” means the element/attribute has normal status in this specification.
“Deprecated” means the element/attribute has been deprecated, and support for it may be removed in a future version of this specification.
“Removed” means the element/attribute is no longer supported in this specification, but is nevertheless mentioned.
An empty cell in the tables means there is no mention in this specification of an element/attribute having the associated status and requirement level.
Attribute values are highlighted as
en-US
.
Other types of “code” are highlighted as
PCDATA
.
This specification is built upon a wide and stable base of compatible open specifications and standards. Following are the various specifications and standards referenced in some manner by this specification.
W3C Specifications and Notes:
Internet Engineering Task Force (IETF):
International Organization for Standardization (ISO):
National Information Standards Organization (NISO)
Internet Assigned Numbers Authority (IANA)
Others:
application/x-orp-bnd1+xml
”The MIME Media Type of a conforming Binder Document is
“application/x-orp-bnd1+xml
”.
This MIME media type is not
IANA
registered.
Other specifications and applications using or referencing Binder
Documents by MIME media type should use
“application/x-orp-bnd1+xml
”,
rather than one based on the
“text/
” media type name.
The reason is that Binder Documents may be
encoded in UTF-16 (see Section 3.1) and
“application/
” media type
names are more appropriate when both UTF-8 and UTF-16 encodings are
allowed
(RFC 3023).
The Binder Document is an XML document valid to the Binder Document DTD, Version 1.0. The Binder, as an XML document, may use the various vocabulary-independent constructs that are specified in XML 1.0.
In addition to XML conformance, the Binder Document must meet a set of general requirements that go beyond what XML specifies. This section outlines these general requirements, as well as provides an overview of the more important XML provided vocabulary-independent constructs, useful to both Binder Document authors and user agent developers.
A conformant Binder Document must meet all of the following general and top-level requirements:
Fully conforms to XML 1.0 (e.g., it is well-formed)
Text encoding is UTF-8 or UTF-16 as specified in the latest Unicode standard.
Includes an XML declaration with a text encoding declaration:
<?xml version="1.0" encoding="UTF-8" ?>
or
<?xml version="1.0" encoding="UTF-16" ?>
Valid to the Binder Document DTD, Version 1.0, which is externally referenced by public identifier as follows:
<!DOCTYPE binder PUBLIC "-//OpenReader//DTD Binder Document 1.0//EN" "http://openreader.org/dtd/bnd10.dtd">
Does not include a DTD internal subset.
For the document root element
binder
, the
default
namespace is explicitly declared to be
http://openreader.org/namespace/orp-binder/1.0/
.
Two prefixed namespace declarations are also
required:
Dublin Core, and
XHTML. The
required attribute
xml:lang
(see
Section 4.2.1.1) specifies the default
language of the Binder Document (but not of the Publication itself,
also discussed in Section 4.2.1.1.)
Example where the default language of the Binder Document is U.S. English:
<binder xmlns="http://openreader.org/namespace/orp-binder/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xhtml="http://www.w3.org/1999/xhtml" xml:lang="en-US">
Does not declare any other namespaces, whether default or prefixed.
Conforms with all the specific requirements and constraints described elsewhere in this specification.
Based on the general conformance requirements in Section 3.1, the following Binder Document template is constructed. This template includes the required:
Binder Document authors will find it a useful template (or “boilerplate”) to use as a starting point to build conforming Binder Documents.
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE binder PUBLIC "-//OpenReader//DTD Binder Document 1.0//EN" "http://openreader.org/dtd/bnd10.dtd"> <binder xmlns="http://openreader.org/namespace/orp-binder/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xhtml="http://www.w3.org/1999/xhtml" xml:lang="en-US"> <pubid> <!-- pubid content goes here --> </pubid> <resources> <!-- resources content goes here --> </resources> <userset usid="1" mode="oeb" lang="en-US"> <!-- userset content goes here. The <userset> attribute values are example only. --> </userset> <!-- Note: There may be more than one <userset> in <binder>. For multiple <userset>, the 'title' attribute is also required. --> </binder>
Notes on the above example:
The text encoding declaration in the XML declaration
may either be UTF-8
or
UTF-16
.
The value of the xml:lang
attribute in binder
will vary
depending upon the default language of the Binder Document (see
Section 4.2.1.1).
All the elements shown may include certain optional attributes.
The required element
userset
, which
may appear more than once,
must include the three
required attributes as shown. However,
the given attribute values are example only and
may vary as allowed by this
specification.
This specification is not intended to be a tutorial on how to author XML-conforming Binder Documents. Nevertheless, to aid in the authoring of Binder Documents, which must be well-formed XML, and which may include the useful vocabulary-independent constructs that XML allows, this section presents a sampling of the most important markup-related XML requirements, vocabulary-independent constructs, and related useful topics.
Note: A few Binder Document and user agent requirements (beyond what XML requires) are specified in this section.
As specified in Section 3.1, all Binder Documents must be conforming XML 1.0 documents, which means, for example, they are well-formed. Following is a list of several specific XML markup requirements, but this list is by no means exhaustive. These requirements are mentioned since, when not followed, they contribute to a large fraction of encountered XML well-formedness and validation errors.
Element and attribute names are case-sensitive. For example
<binder>
and
<BINDER>
are different
elements.
Attribute values must be enclosed in either single or double
straight quotes. For example, lang="en-US"
and lang='en-US'
are conforming, but
lang=en-US
,
lang="en-US'
and
lang='en-US"
are not.
All non-empty elements must have properly formed starting and closing tags.
All declared empty elements must be properly formed (see Section 3.3.5).
All elements must properly nest.
Depending upon the circumstance, certain markup characters,
when used literally (e.g. &
and
<
), must be
escaped. Refer
to the next Section 3.3.2 for
details.
For XML 1.0 documents (and this includes Binder Documents), each individual character within character data is represented in one of two ways:
directly in the document’s text encoding, and
indirectly using a numeric character reference, or by a predefined or declared character entity reference which points to a numeric character reference.
For example, it is convenient to use numeric character references and allowed character entity references when the tool used to create an XML document is limited to ASCII encoding (UTF-8 conformant but limited to the Basic Latin script), and some characters fall outside of the ASCII range.
In certain circumstances, five of the characters used to define
XML markup constructs (specifically
&
<
>
"
and
'
), when
used literally,
must be represented (or
“escaped”) by their numeric character references, or by
their declared character entity reference equivalents. For this
purpose, XML predefines entity references for these five characters
which all XML processors must recognize:
Character | Predefined Entity | Numeric Reference (hex) | Numeric Reference (dec) |
---|---|---|---|
& |
& |
& |
& |
< |
< |
< |
< |
> |
> |
> |
> |
" |
" |
" |
" |
' |
' |
' |
' |
Listed below are the circumstances when the five markup characters, used literally and not as part of markup, must be escaped:
The &
and
<
characters, except when used within
CDATA sections and
Comments.
The "
and
'
characters when they appear within an
attribute value and match the attribute value delimiting quote mark.
It is recommended that both always be escaped in
attribute values.
The >
character in the very rare
instance it appears in the string
“]]>
” when that string is
not marking the end of a CDATA section. It is considered good practice
to escape the >
character wherever it is
used literally.
Example of Binder Document markup with both required and optional numeric and character entity references:
<title comment='Jane's AT&T Résumé'>Jane's AT&T Résumé</title>
A user agent will render the above content as:
Jane's AT&T Résumé
CDATA
sections may be used in XML documents
(which includes Binder Documents) to escape blocks of text
containing markup characters (e.g.
“<
” and
“&
”) when used literally.
This is an alternative to individually escaping each markup character
(see Section 3.3.2).
A CDATA section starts with
“<![CDATA[
”
and terminates with
“]]>
”.
CDATA sections may be used anywhere character data may occur,
except that they must not appear within
an attribute
value. They must not nest; the text
content within a CDATA section must not
contain the literal character sequence
“]]>
”.
Example:
<xhtml:span>Insert the following: <h1>Greetings!</h1></xhtml:span>
is equivalent to
<xhtml:span>Insert the following: <![CDATA[<h1>Greetings!</h1>]]></xhtml:span>
A user agent will render both of the above as:
Insert the following: <h1>Greetings!</h1>
Comments may appear anywhere in an XML document (including a Binder Document) except before the XML declaration and within other markup. Comments are not part of the character data; they are primarily intended for Binder Document authors to insert private commentary (notes) within the document.
A comment starts with
“<!--
” and terminates with
“-->
”; the comment text is
between these two delimiters. The comment text
must not contain the string
“--
” (two hyphens), but
otherwise may include, without escaping, all the
Unicode characters recognized in
XML 1.0, including
the XML markup characters. A comment
must not terminate with the literal
string “--->
”.
Examples of valid comments:
<!-- This is a comment -->
<!-- & < > " ' -->
To conform to this specification, user agents must not:
Some elements in a DTD may be declared
EMPTY
. When used in an XML document, these
elements must not contain any content and
must use the empty-element syntax (also
known as “minimized form”) as specified in
XML 1.0.
Example of correct usage of declared empty element syntax (the
element item
is declared
EMPTY
in this specification):
<item resid="css1" resource="style1.css" media-type="text/css"/>
Note: a sequence of one or more white space
characters may appear before the closing
“/
” in empty-element
syntax.
In this specification, the empty-element syntax must only be used for declared empty elements; it must not be used for declared non-empty elements when they contain no content.
Example of correct and incorrect usage when a declared non-empty
element contains no content (the element
dc:title
is declared non-empty in
this specification):
<dc:title/> <!-- not allowed! --> <dc:title></dc:title> <!-- correct usage -->
When declared non-empty elements contain no content, or only a sequence of one or more white space characters, this occurrence is referred to as “empty content.”
White space characters and their handling by user agents is an important consideration to both Binder Document authors and user agent developers.
In XML, the white space characters are:
space ( 
)
tab (	
)
carriage return
(
)
line feed (

)
The rules for white space handling of both character data and attribute values by XML processors are addressed in Sections 2.10, 3.2.1 and 3.3.3 of the XML 1.0 Specification.
User agent requirements:
For character data, XML processors are required to pass to the user agent all characters in a document that are not markup. This includes white space characters.
Except where the XML attribute
xml:space
is specifically set to the
value of preserve
, or a similar
override mechanism is applied (e.g.,
the CSS white-space
property), in this specification user agents
must normalize the character data of an
element as follows:
Replace all sequences of two or more white space characters
with a single space character
( 
), and
Remove all leading and trailing spaces.
Example:
<dc:title> <xhtml:em> This </xhtml:em> is a Title </dc:title>
and
<dc:title> <xhtml:em> This </xhtml:em> is a Title </dc:title>
are both equivalent to:
<dc:title><xhtml:em>This</xhtml:em> is a Title</dc:title>
For white space in attribute values, XML requires that all XML
processors
normalize
attribute values before sending the attribute value data to the
user agent. Note that this normalization process treats attribute
values not of type CDATA
differently from
those of type CDATA
.
To conform to this specification, user agents
must normalize
CDATA
attribute values as if they were not
of type CDATA
. That is, for attribute values
of type CDATA
, user agents
must replace a sequence of space
( 
) characters with a single
space ( 
) character, and remove
any leading and trailing space ( 
)
characters.
Example (the comment
attribute is
of datatype CDATA
):
<style cssrefs="css1" comment=" This is a style sheet "/>
is equivalent to:
<style cssrefs="css1" comment="This is a style sheet"/>
Binder Document authors are free to use all the Unicode characters in character data, except those disallowed by XML and this specification (refer to "Unicode in XML and other Markup Languages" for recommendations on the Unicode characters not suitable for use in XML, and related topics.) This flexibility allows for the richest content in Binder Documents, meeting nearly all international needs, but in certain situations will create a few complexities for Binder Document authors and user agent developers.
One of the more complex topics concerns the spacing characters used for inter-word separation. Because the concept of a “word” in most languages plays a fundamental role in various word-related operations, such as text searching, line breaking, etc., Binder Document authors and user agent developers need to understand how the Unicode space characters are used to enable inter-word separation, plus the related topics of line breaking (primarily for the purpose of visual presentation), and soft hyphens.
The Unicode Space Characters set (see Section 6.2 in the Unicode 4.1.0 specification) includes:
Ordinary space character
( 
, which is also an
XML white space character)
No-break space ( 
, or
as defined in XHTML and in the
OpenReader Character Entity References Common
Set)
General
Punctuation space characters in the range of
 
to
​
Narrow no-break space
( 
)
Medium mathematical space
( 
)
Ideographic space
( 
)
Zero width no-break space
(
)
(For more details on these spacing characters, and other space-like characters, refer to Section 6.2 in the Unicode 4.1.0 standard. This specification does not specify how user agents are to exactly render these different space characters.)
In this specification, user agents must treat any sequence of Unicode Space Characters and/or XML white space characters within character data as an inter-word separator.
The related topic of line breaking is important for the purpose of visual rendering. This topic is covered in detail in the Unicode Standard Annex #14 Technical Report: Line Breaking Properties, which provides a comprehensive set of guidelines. User agents should follow, as closely as possible, the line break recommendations in this Unicode technical report.
In general, line breaking is allowed between words except where one or more no-break space characters are used between the words. The no-break space characters include:
No-break space ( 
, or
, as defined in XHTML and in the
OpenReader Character Entity References Common
Set — this is the preferred character to use for no line
breaking between words)
Figure space ( 
)
Narrow no-break space
( 
)
Zero width no-break space
(
)
User agents should not line break between two words separated by a sequence of one or more no-break space characters.
Binder Document authors should not use a no-break space character for any purpose other than indicating that no line break should occur between words.
[Informative Commentary] In XML document
authoring, particularly XHTML, some authors inappropriately use a
no-break space (primarily
) to
“pad” spacing in order to force a desired visual
presentation, thereby working against the reflowability and
adaptability of the content to various hardware, applications and
end-user presentation settings.
Regarding line breaking within a word, user agents may do so per the allowance and the conventions of the language as detailed in the above referenced Unicode technical document on line breaking.
Binder Document authors may insert within a
word the “soft hyphen” character
(­
or
­
as defined in XHTML and the
OpenReader Character Entity References Common
Set) to signal that the user agent may line break the word at that
point.
In this specification, user agents must not render the soft hyphen character but may add the appropriate end-of-line character(s) (and other necessary text adjustments, depending upon language and conventions) for a line break placed after a soft hyphen. For all other purposes, such as word searching, user agents must ignore the soft hyphen character since it is technically not part of the word.
Note: The soft hyphen is not the same character as the plain hyphen
(-
.) The plain hyphen character
is considered a part of the word, and user agents
must process it like any other character
in the word.
Example of the use of a soft hyphen:
<dc:title>How to Insert a Soft Hy­phen Within a Word</dc:title>
Should a user agent, in presenting the contents to the end-user, line break before the word “Hyphen”, it will render the above example as follows:
How To Insert a Soft Hyphen Within a Word
If the user agent line breaks at the soft hyphen, it will render the above example as follows (using the common English language convention for hyphenation):
How To Insert a Soft Hy- phen Within a Word
This section describes the Binder Document vocabulary. As noted in Section 3.1, a Binder Document must be valid to the Binder Document DTD. The Binder DTD is the normative vocabulary reference with respect to:
allowed elements, attributes and attribute values, and
element content model.
The root element binder
is
described in Section 3.1, item 6.
Although the overarching framework which references this specification is the ultimate authority with respect to user agent processing of Binder Documents, this section (as well as elsewhere in this specification) includes a number of user agent requirements and recommendations deemed necessary to the integrity of the Binder Document paradigm. All these user agent requirements and recommendations are authoritative in the overarching framework except where explicitly overridden or amended by the framework.
The Binder Document is divided into functional parts, each of which performs some function in the organization and/or use of the associated Publication. Some functional parts are vital and thus are required; others are optional and provide for enhancements to the end-user experience.
The following table provides an overview of the various Binder parts, with links to full descriptions. Note that each functional part is represented in markup with a head element (shown in the second column). In the Binder Document, the order of the head elements is important as listed in the table; except for the User Set, each functional part’s head element must not appear more than once.
Functional Part Name |
Head Element Name |
Description |
Requirement Level |
---|---|---|---|
|
Primary identifier of the Publication |
required |
|
|
List of resources that make up the Publication |
required |
|
|
Dublin Core metadata for the Publication |
optional but recommended |
|
|
Provides for multiple, end-user selectable “views” of the Publication |
at least one required |
|
User Set Functional Parts |
|||
|
Title of the Publication |
required |
|
|
Unicode characters and character blocks appearing in the content documents associated with the User Set |
optional but recommended |
|
|
Primary reading order (similar to OEBPS Spine), or home page for “web” option |
required |
|
|
Linearization of the content documents in the User Set for printing and related purposes |
optional |
|
|
Merging of selected out-of-spine content documents into a “virtual” composite document |
optional |
|
|
Associating substitute non-text content media resources to specific content document elements. |
optional |
|
|
Associating non-text content media resources with each other |
optional |
|
|
Designating non-text content media cover resources |
optional but recommended |
|
|
Designating thumbnail images |
optional but recommended |
|
|
Assigning cascading style sheets (such as CSS) to content document resources |
optional |
|
|
Assigning the primary navigation index (required), and optional alternative navigation indices |
required |
|
|
Providing textual descriptions for non-text content media resources |
required for non-text content media resources |
This specification supports certain vocabulary-specific constructs that may be used in various functional parts of Binder Documents. (Refer to Section 3.3 for vocabulary-independent constructs.)
The Binder Document vocabulary defines three
[Common]
attributes that
may be applied to most elements. They are
xml:lang
,
xml:id
, and
comment
.
xml:lang
The xml:lang
attribute,
specially
defined in XML 1.0, may be used to specify
the default language of the element’s content and attribute
values. This attribute must not be used
to specify Publication-related languages, which are instead specified
using the lang
attribute (see
Section 4.2.2.)
The value of xml:lang
must comply with
RFC 3066, or its
successor on the IETF Standards Track. Thus, the value will also
conform to the separate requirement that
xml:lang
be an XML
Name.
(Language
Codes)
(Country Codes)
While xml:lang
is
optional for most elements, it is
required for the root element
binder
(see
Section 3.1, item 6), specifying the default
language of the Binder Document.
xml:id
The xml:id
attribute, based on
the W3C Recommendation
xml:id Version 1.0,
is used to give a unique identifier to an element. Its value
must:
be unique across all elements in a Binder Document,
be an XML Name,
not contain the “:
”
character,
start with a Letter
as defined in
Appendix B
of the XML 1.0 Specification — it cannot start with an
underscore (“_
”),
not start with the string
“xml
” (and all its
case variants), since this is
reserved
in XML 1.0 for possible future standardization, and
not start with the string
“orp
” (and all its
case variants), since this is reserved for possible use in future
versions of this specification.
This specification assigns no special meaning or purpose to
xml:id
(although a future version of
this specification may do so); Binder Document authors and authoring
systems may freely use xml:id
for
special identification of elements. However,
xml:id
must
not be used as a “back door” to actuate special
features or functions in user agents.
Note that xml:id
must not be applied to the
item
and
userset
elements, since these
elements already require attributes with datatype
ID
(see Sections 4.4
and 4.6, respectively.) XML
forbids an
element having more than one ID
.
comment
The comment
attribute
may be used by Binder Document authors to provide
commentary within an element. The attribute value of
comment
is datatype text
(CDATA
).
The allowed Unicode character range for the value of the
comment
attribute, as with all
attribute values of datatype text (CDATA
),
is given in
XML 1.0, with the
following
constraints:
The literal <
character
must not appear. If this character is
to be used literally, it must be
escaped.
The literal &
character
must not appear except as part of a
predefined or declared character entity reference. If this character
is to be used literally (not part of an entity reference), it must
be escaped.
The literal "
and
'
characters must
not appear when they match the attribute delimiter quote
marks; they must be escaped. It is
recommended that both of these characters always
be escaped when they appear in attribute values.
Similar to XML comments (see Section
3.3.4), the comment
attribute is
intended for private use by Binder Document authors. User agents
must not use the value of the
comment
attribute.
lang
AttributeThe lang
attribute
may be applied to the
required
resources
,
item
, and
userset
elements. Its purpose is
to specify Publication-related languages.
The lang
attribute differs
from the xml:lang
attribute (see
Section 4.2.1.1) in that
xml:lang
is intended only
to specify the language of element character data and attribute values
within a Binder Document.
lang
also differs from
xml:lang
in that
lang
may
contain multiple language assignments which are separated by one or
more white space characters. Each assigned
language follows the rules given for
xml:lang
in
Section 4.2.1.1.
Example:
lang="en-US de-DE"
It is possible for both xml:lang
and lang
to appear in the same
element, and their assigned language values may
differ.
Example:
<item resid="image1" resource="image1.png" media-type="image/png" lang="fr-FR" xml:lang="en-US" comment="Photograph of Paris (caption in French)"/>
In the above example, xml:lang
is assigned the value en-US
since the
value of the comment
attribute is in
English. The lang
attribute is
assigned the value fr-FR
since the
Publication resource, image1.png
, is a
photograph with a caption in French.
residrefs
AttributeThe required attribute
residrefs
is applied to several
elements to reference one or more resource identifiers assigned in the
Resource Manifest (see Section 4.4.3.) It is
of datatype IDREFS
, and
must be a white
space separated list of resource identifiers.
(XML 1.0
discussion of datatype IDREFS
.)
title
ElementThe required
title
element is used in the
Publication Title,
Styling, and
Navigation functional parts of the User
Set.
Each title
element contains
character data (#PCDATA
) representing a
title description, and may also contain the
XHTML Namespace Inline Elements (see
Section 4.2.5).
Example:
<title>Title of <xhtml:em>This</xhtml:em> Book</title>
All of the elements in the Binder Document vocabulary which
may contain character data (#PCDATA
), with
the exception of the id
element,
may also contain inline elements drawn from the
XHTML Namespace.
The nine supported inline elements allow Binder Document authors to add semantic richness to the character data. When these inline elements are used in character data, user agents should apply appropriate styling when presenting the character data.
As in XHTML, the inline elements may be nested. The Binder
Document Common Attributes may be applied
to these elements, as well as the optional
class
attribute which is drawn from
XHTML. (Description)
This specification does not specify how user agents are to use the
value of the class
attribute when
present. However, a future version of this specification
may add support for author-supplied CSS for
styling the XHTML Inline elements, and the
class
attribute will be useful for
CSS styling purposes.
The following table lists the supported XHTML Namespace Inline elements. Each supported element is linked to the general description in the HTML 4.01 specification, providing a good overview of the purpose and use of the element.
Element |
Short Description |
---|---|
Computer Code Fragment |
|
Emphasis |
|
Text Entered by the User |
|
Program, Script, and Similar Output |
|
Generic Inline Level Container |
|
Strong Emphasis |
|
Subscript |
|
Superscript |
|
Instance of a Variable or Program Argument |
Example of the use of XHTML Namespace Inline elements:
<pubtitle> <title>Title of <xhtml:em>This</xhtml:em> Book</title> </pubtitle>
A user agent may visually present the above character data as:
Title of This Book
The Binder Document DTD declares the 253 character entity references specified in the Character Entity References Common Set Specification, Version 1.0. These character entity references are identical to those supported in XHTML 1.1 (which, in turn, are inherited from HTML 4.01.) They include the five XML predefined character entity references (see Section 3.3.2.)
Binder Document authors may use these “mnemonic” character entities instead of the equivalent numeric character references, as explained in Section 3.3.2. User agents must recognize these character entities.
Example using numeric character references:
<title>Jane’s AT&T Résumé</title>
The same example using “mnemonic” character entity references:
<title>Jane’s AT&T Résumé</title>
Both the above examples will render as:
Jane’s AT&T Résumé
Future versions of this and related Binder Document specifications may support an expanded common set of “mnemonic” character entity references derived from other document markup vocabularies such as TEI and DocBook.
The required Publication Identifier
functional part, headed by the element
pubid
, is used to assign a unique,
primary identifier to the Publication. Since the primary identifier
may be used for public identification purposes,
such as for external linking into the Publication, it
should be globally unique.
The element pubid
must contain one and only one
id
element. The
id
element is declared non-empty
and must contain character data
(#PCDATA
), which gives the actual value of
the primary identifier — id
must not be empty.
Three attributes are required for the
id
element:
type
,
idns
and
ver
.
Since the primary Publication Identifier may be used with
Internationalized
Resource Identifiers (RFC 3987) as part of an absolute path
segment, the characters used should be
restricted, whenever possible, to the
ipchar
production of
RFC 3987 (page 7).
(This is not always possible with certain formalized identifier
namespaces. An example is the
Digital
Object Identifier namespace, DOI, which includes the
“/
” character in its identifier
— the “/
” character is
not included in the ipchar
production.)
When the Binder Document author devises their own unique
primary identifier namespace, it is recommended
that their namespace restricts the allowed primary identifier
characters to some subset of the
iunreserved
production of
RFC 3987 (page
7).
The primary identifier must not contain any white space characters. Also, the primary identifier must not contain any percent encodings except when the primary identifier namespace requires it. (Note that applications which extract the primary identifier from a Binder Document and embed it into an IRI or URI may convert certain characters, as necessary, to their percent encoded equivalents.)
type
AttributeThe required
type
Attribute for the
id
element
must be given the value of
primary
.
This requirement is for future compatibility when the Publication Identifier functional part is expanded to include alternate, antecedent, and other types of Publication identifiers.
idns
AttributeThe required
idns
attribute for the
id
element specifies the scheme and
namespace associated with the primary identifier. It
must take one of the following forms:
Uniform Resource Name (URN) Scheme
The current list of registered URN Scheme Namespaces is maintained by IANA, and governed by RFC 3406.
The syntax for the value of idns
,
following RFC 2141,
is given as
<IDNS> ::= "urn:" <NID>
Where “urn:
” is the
scheme, and <NID>
is one of the
formally
registered URN Namespaces. Note that the leading
“urn:
” and
the Namespace Identifier <NID>
are case-insensitive per
RFC 2141 —
however, for consistency, Binder Document authors
must use all lower case.
Not all of the registered URN Scheme Namespaces are suitable for use as a primary identifier. At least two of them, ISBN and UUID, are suitable, and these two are the most likely to be used of those currently registered.
Example use of the URN Scheme with a UUID Namespace for the
idns
attribute value:
idns="urn:uuid"
“info” Scheme
The “info” URI
Scheme, managed by OCLC,
currently supports a number of identifier namespaces that may be
usable for Publication Identifiers. Notably, these include
Digital
Object Identifiers
(“doi
”),
Fedora
Digital Objects and Disseminations
(“fedora
”), and
Serial
Item and Contribution Identifiers
(“sici
”).
The syntax for the value of idns
is given as
<IDNS> ::= "info:" <NID>
Where “info:
” is the
scheme, and <NID>
is one of the
formally registered “info”
Namespaces. Note that the leading
“info:
” and the Namespace
Identifier <NID>
are
case-insensitive — however, for consistency, Binder Document
authors must use all lower case. The
trailing “/
” character,
specified by the “info” URI Scheme,
must not be included in the
idns
attribute value.
Example use of the “info” Scheme with a DOI Namespace
for the idns
attribute value:
idns="info:doi"
“x-other:” Scheme
The “x-other:” Scheme is intended for unregistered, private identifier namespaces, such as one designed by the Binder Document author. The syntax essentially follows that of the formal schemes already described (see example below.)
It is strongly recommended that instead of using the “x-other:” Scheme, Binder Document authors should generate a globally unique Publication Identifier using the freely usable UUID Namespace with the URN Scheme. There are a number of free UUID generators, as well as UUID registration services.
Example use of the “x-other:” Scheme for the
idns
attribute:
idns="x-other:my-own-pubid-namespace"
ver
AttributeThe required
ver
attribute for the
id
element provides for versioning
of a given Publication Identifier. Its value is an integer, and for
its first use with a particular Publication Identifier
must be assigned the value of
“1
”.
When small or minor changes are made to any of the resources of a Publication, but not enough to warrant a change in Publication Identifier, the publisher should increment the version number by one.
Changes which qualify as small or minor include any edits that
break few, if any, already-established links into the Publication
based on resource and element IDs. However, if the Publication is
significantly edited, such as substantive changes to its markup
structure or major content revisions, then the publisher
should consider assigning a new Publication
Identifier (with a reset of ver
back
to “1
”.)
Example markup of the Publication Identifier:
<pubid> <id type="primary" idns="urn:uuid" ver="1">6a2014b0-87a2-11da-a72b-0800200c9a66</id> </pubid>
The required Resource Manifest functional part of the Binder Document provides a list of all the resources (excluding the Binder Document itself) which make up the Publication. It assigns one or more unique resource identifiers to each resource.
The Resource Manifest may declare resources that remain unused (“orphaned”) by the Publication. However, all declared resources must exist in the resource pool associated with the Publication.
The overarching framework which references the Binder Document Specification, such as the OpenReader Publication Framework Specification, defines what resources are allowed in the Resource Manifest, their MIME media types, the resource locator scheme, user agent error handling in the event of missing resources, and related requirements. In this section (and elsewhere in this specification), all the markup examples are based on the OpenReader Publication Framework Specification requirements.
The Resource Manifest is headed by the
required element
resources
, which
must contain one or more empty
item
elements. The order of
multiple item
elements is not
significant.
Three attributes are required for the
item
element:
resource
,
media-type
, and
resid
.
One optional attribute,
lang
, may be
applied to both the resources
and
item
elements. It is used to assign
the language(s) associated with the resources.
resource
AttributeThe required
resource
attribute for the
item
element gives the path and name
for a Publication resource. The overarching publication framework,
which references this Binder Document specification, defines the
resource path/filename scheme, and allowed characters.
Example:
resource="documents/chapter1.xml"
media-type
AttributeThe required
media-type
attribute for the
item
element gives the
MIME media
type of the resource.
Example:
media-type="application/x-orp-bcd1+xml"
resid
AttributeThe required
resid
attribute for the
item
element assigns a resource
identifier for the resource. As noted in Section
4.4.5, a resource may be assigned multiple resource identifiers by
applying multiple instances of the
item
element to that resource.
The datatype of the resid
attribute value is ID
, and the allowed
characters are the same as those specified for
xml:id
(see
Section 4.2.1.2). Each
resid
must be unique across all
ID
values in the Binder Document.
Example:
resid="chap1"
Two important benefits of assigning resource identifiers to resources are:
Provides greater flexibility to the publishing work flow by allowing resource paths and names to change without disrupting the Publication organization, and
Preserves the integrity of both inter-document links and external links into Publications, provided the link addressing is enabled with resource identifiers rather than resource names.
lang
AttributeThe optional but
recommended
lang
attribute
may be applied to both the
resources
and
item
elements.
Section 4.2.2 provides an overview of the
general purpose and requirements of this attribute.
The specific purpose for the lang
attribute in the Resource Manifest is to assign the primary and/or
significant language(s) to resources. Since this attribute may contain
more than one language assignment,
lang
may
assign multiple languages to a single resource. In this instance,
the order of the languages in lang
is significant, from highest to lowest priority or significance, but
otherwise this specification does not distinguish the relative
significance between the multiple languages.
For example, a content document may contain portions of text whose languages differ from the primary language. In this case, the primary language is listed first in the attribute value, followed by the other languages.
When lang
is applied to the
resources
element, it globally
applies to all resources in the Resource Manifest except where
overridden for particular resources by applying the
lang
attribute to the
associated item
elements. The
lang
attribute may be applied to
an item
element even when
lang
is not applied to the
resources
element.
Although assigning languages to resources in the Resources Manifest is optional, Binder Document authors should do so. A future version of this specification may elevate this recommendation to a requirement.
Example of assigning languages to resources:
<resources lang="en-US"> <item resid="chap1" resource="chapter1.xml" media-type="application/x-orp-bcd1+xml" lang="en-US de-DE"/> <item resid="chap2" resource="chapter2.xml" media-type="application/x-orp-bcd1+xml" lang="fr-FR"/> <item resid="chap3" resource="chapter3.xml" media-type="application/x-orp-bcd1+xml"/> ... </resources>
In the above example, all the resources in the Resource Manifest
are globally assigned English (US). For the content
document resource with resource identifier
“chap1
”, the global
language has been overridden, with a primary language of English, but
with some text in German. For the content document resource
“chap2
”, the global
language has been overridden with the primary language of French.
For the content document resource
“chap3
”, since the
lang
attribute does not appear,
its primary language is the globally assigned language, English.
As noted in Section 4.4.3, a resource
may be assigned multiple resource identifiers by using multiple
item
elements.
This is a powerful feature which allows Publication authors to efficiently reuse resources when they appear in different contexts in their Publications.
For example, the same content document may appear in various portions of the Publication, and each appearance may use a different set of style sheets.
This mechanism may simplify some publishing work flows where having multiple copies of the same resource, each given a different resource (or file) name, adds an unnecessary complication, particularly in the document editing process.
This mechanism also makes it feasible for unambiguously linking to the correct spot within a Publication when a resource is used multiple times, provided the link addresses the resource identifier and not the resource name.
Example of applying two resource identifiers to one resource:
<item resid="intr1" resource="document/intro.xml" media-type="application/x-orp-bcd1+xml" <item resid="intr2" resource="document/intro.xml" media-type="application/x-orp-bcd1+xml"/>
In the example above, the content document resource
“intro.xml
” is assigned two
resource identifiers: intr1
and
intr2
.
A fairly complex and lengthy markup example of the Resource Manifest:
<resources lang="en-US"> <item resid="intr1" resource="intro.xml" media-type="application/x-orp-bcd1+xml" comment="Special introduction written by Jane Doe"/> <item resid="intr2" resource="intro.xml" media-type="application/x-orp-bcd1+xml"/> <item resid="chap1" resource="chapter1.xml" media-type="application/x-orp-bcd1+xml"/> <item resid="chap2" resource="chapter2.xml" media-type="application/x-orp-bcd1+xml"/> <item resid="note1" resource="note1.xml" media-type="application/x-orp-bcd1+xml"/> <item resid="note2" resource="note2.xml" media-type="application/x-orp-bcd1+xml"/> <item resid="css-a" resource="cssdir/a.css" media-type="text/css"/> <item resid="css-b" resource="cssdir/b.css" media-type="text/css"/> <item resid="css-c" resource="cssdir/c.css" media-type="text/css"/> <item resid="css-d" resource="cssdir/d.css" media-type="text/css"/> <item resid="css-e" resource="cssdir/e.css" media-type="text/css"/> <item resid="imag1" resource="images/image1.png" media-type="image/png" lang="fr-FR" xml:lang="fr-FR" comment="La Tour Eiffel"/> <item resid="imag2-jpeg" resource="images/image2.jpg" media-type="image/jpeg"/> <item resid="imag2-png" resource="images/image2.png" media-type="image/png"/> <item resid="imag2-tiff" resource="images/image2.tiff" media-type="image/tiff"/> <item resid="imag3" resource="images/image2-thumb.png" media-type="image/png"/> <item resid="tabl1" resource="images/table1.png" media-type="image/png"/> </resources>
The optional, but recommended Publication Metadata functional part of the Binder Document assigns metadata for the Publication. In this specification, only the Dublin Core Metadata Element Set, Version 1.1 is supported.
The Publication Metadata functional part is headed by the
optional
metadata
element, which
may contain one
dublincore
element.
The dublincore
element
may contain any of the fifteen Dublin Core
Metadata Elements (prefixed with the Dublin Core namespace, see
Section 3.1, requirement 6), in any number
(including zero), and in any order. It is
required that the attribute
xml:lang
(see
Section 4.2.1.1) always be applied to the
dublincore
element to designate the
default language of the content in the Dublin Core metadata. This
allows the Dublin Core metadata to be extracted from, and used
independent of, the Binder Document.
The overall structure of the Publication Metadata functional part, with some example Dublin Core metadata element markup, is shown as follows:
<metadata> <dublincore xml:lang="en-US"> <!-- The 15 Dublin Core Elements in any number and order. For example: --> <dc:identifier idns="urn:uuid">6a2014b0-87a2-11da-a72b-0800200c9a66</dc:identifier> <dc:title>The Excellent Adventures of the Markup Kid</dc:identifier> <dc:creator role="aut ill" file-as="Doe, John">John “Markup Kid” Doe</dc:creator> <dc:language usage="primary">en-US</dc:language> </dublincore> </metadata>
The following table lists the fifteen supported Dublin Core elements (in alphabetical order), along with their definitions taken from the Dublin Core Metadata Element Set specification, and attributes supported in this specification beyond the Common Attribute Set.
Dublin Core Element |
Dublin Core Definition |
Attributes (Besides Common) |
---|---|---|
|
Entity responsible for making contributions to the content of the resource |
|
Extent or scope of the content of the resource |
||
Entity primarily responsible for making the content of the resource |
|
|
Date associated with an event in the life cycle of the resource |
|
|
|
Account of the content of the resource |
|
|
Physical or digital manifestation of the resource |
|
Unambiguous reference to the resource within a given context |
|
|
Language of the intellectual content of the resource |
|
|
|
Entity responsible for making the resource available |
|
|
Reference to a related resource |
|
|
Information about rights held in and over the resource |
|
|
Reference to a resource from which the present resource is derived |
|
Topic of the content of the resource |
|
|
Name given to the resource |
||
|
Nature or genre of the content of the resource |
The fifteen Dublin Core metadata elements share the same content
model. Each Dublin Core element may contain
character data (#PCDATA
) representing the
metadata information, and may also contain the
XHTML Namespace Inline Elements (see Section
4.2.5) for enhancing user agent presentation of the metadata
information — especially useful for metadata of a
“prose” nature, such as that designated by
dc:description
and
dc:title
.
Several of the more important Dublin Core metadata elements, and those with specialized attributes, are described in greater detail in sibling sections; for information on the other elements, refer to the Dublin Core Metadata Element Set, Version 1.1 specification and related documents. The OEBPS 1.2 Specification, also discusses the use of the Dublin Core metadata elements (this specification adopts several of the OEBPS innovations in the use of Dublin Core metadata.) Binder Document authors should use the Dublin Core metadata elements consistent with Dublin Core recommendations, except where they conflict with the requirements of this specification.
The Binder Document already requires three critical metadata items which are designated elsewhere in the Binder: the Publication Identifier, the Publication Title (required for each User Set), and the Publication primary and secondary languages. Although redundant, Binder Document authors should replicate this information in the Dublin Core Metadata — the details are discussed in the relevant sibling sections.
Binder Document authors should specify the
language, using xml:lang
(see
Section 4.2.1.1), for the
“prose” containing metadata elements, such as
dc:description
and
dc:title
, when their language
differs from the default language assigned to
dublincore
.
User agents should provide a mechanism allowing users, on demand, to access and review the Dublin Core metadata information.
dc:identifier
The dc:identifier
element
designates an identifier for the Publication. It
should be included in the Dublin Core metadata.
The first instance of use of this element in the Dublin Core metadata
must replicate the primary identifier
assigned in the Publication Identifier
functional part.
The dc:identifier
element
supports two identifier-related attributes
required by the
id
element in the
Publication Identifier functional part:
idns
and
ver
.
The value of the required
idns
attribute, which specifies the
identifier namespace, must follow the
requirements in Section 4.3.3. Likewise,
the value of the sometimes
required (as noted below)
ver
attribute, which specifies the
versioning of the identifier, must follow the requirements in
Section 4.3.4.
In the first dc:identifier
instance, which replicates the primary Publication
Identifier, the idns
and
ver
attributes
must assume the values identical to
their counterparts for the id
element.
For the Publication Identifier markup example in
Section 4.3.5, the
dc:identifier
equivalent is:
<dc:identifier idns="urn:uuid" ver="1">6a2014b0-87a2-11da-a72b-0800200c9a66</dc:identifier>
dc:title
The dc:title
element designates
the Publication title. It should replicate,
whenever possible, the title given in the
Publication Title functional part of the User
Set.
A Publication title may comprise multiple
lines, as the markup example in Section 4.7
illustrates. Each line in the Publication title will be expressed
with its own dc:title
element, and
the order of appearance of dc:title
elements is significant (they are not required
to be adjacent to each other, although that is
recommended for readability.) For the same
primary language (as explained below), the
dc:title
elements form the complete
Publication title by their order of appearance in the Dublin Core
metadata.
A complication arises when there are multiple User Sets and the Publication title varies between them (which is allowed.) The title variation may be in the same primary language, or in two or more primary languages.
For multiple User Sets with variations of the Publication title,
the Binder Document author should include in the Dublin Core metadata
an appropriate Publication title (which may comprise one or more
lines) for each primary language represented by the User Set titles.
When there are multiple primary languages, the Binder Document author
must apply the
xml:lang
attribute (designating the
primary language) to all instances of
dc:title
in the Dublin Core
metadata.
For the Publication Title markup example given in Section 4.7, the Dublin Core equivalent is:
<dc:title>Dr. Strangelove</dc:title> ... <dc:title>Or: How I Learned to Stop Worrying and <xhtml:em>Love the Bomb</xhtml:em></dc:title>
In the above example, since both the
dc:title
elements are of the same
language (inherited from a containing element where
xml:lang
is assigned US English),
they form the two line Publication title:
Dr. Strangelove Or: How I Learned to Stop Worrying and Love the Bomb
Note in the markup example above that even though appearance order is
significant, the two dc:title
elements need not be adjacent.
Markup example of dc:title
with
multiple lines and in multiple languages mixed together:
<dc:title xml:lang="en-US">A Trip To Paris:</dc:title> ... <dc:title xml:lang="fr-FR">Un Voyage Vers Paris:</dc:title> ... <dc:title xml:lang="en-US">Visiting The Eiffel Tower</dc:title> ... <dc:title xml:lang="fr-FR">Visiter La Tour D'Eiffel</dc:title>
In the above markup example, the Dublin Core metadata designates two language-specific Publication titles (each comprising two lines.) The English version of the Publication title is:
A Trip To Paris: Visiting The Eiffel Tower
The French version of the Publication title is:
Un Voyage Vers Paris: Visiter La Tour D'Eiffel
dc:language
The dc:language
element
designates a significant language used in the Publication. For
multiple Publication languages, use one instance of
dc:language
for each language.
Binder Document authors should designate at least
one primary language (see below) for the Publication.
Similar to the requirements for
xml:lang
(see
Section 4.2.1.1), the character content of
dc:language
must comply with
RFC 3066, or its
successor on the IETF Standards Track.
(Language Codes)
(Country Codes)
The required attribute
usage
must be assigned either the value of
primary
or
secondary
, which indicates whether the
language is considered a primary language of the Publication, or a
secondary language. (Note that there may be more
than one primary language of the Publication.)
The designated primary languages of the Publication
should be all the unique languages specified
in the required
lang
attribute for all instances of
the userset
element (see
Section 4.6.3.)
The designated secondary languages of the Publication
should be all the unique languages (other than
those designated as primary), specified in the
lang
attribute for the
resources
and all the
item
elements (see
Section 4.4.4), plus all the non-primary
languages used in all the content documents of the Publication
(usually designated in markup using
xml:lang
.)
Example:
<dc:language usage="primary">en-US</dc:language> <dc:language usage="primary">fr-FR</dc:language> <dc:language usage="secondary">de-DE</dc:language>
In the above example, two languages are designated as primary in the Publication: English and French — one reason for this might be that there are two User Set versions of the work associated with the Publication: one in English, and the other in French. One secondary language is designated: German — the reason might be that there is some German text in one of the content documents, or a particular video resource is spoken in German or has German subtitles.
dc:creator
and
dc:contributor
The elements dc:creator
and
dc:contributor
are similar —
both designate, in character data, the name of a person or entity
responsible for some recognized role in the process to author the
content of the Publication. Each element may be
used any number of times as desired, such as to provide a sufficiently
accurate accreditation of all those who played a recognized role in
creating the Publication content.
Where the two elements differ is that
dc:creator
is to be used for those
who played a primary or major role in the Publication content
authoring/creation process (e.g., an author), while
dc:contributor
is to be used for
those who played a secondary, supporting or minor role.
Because of the importance of authors/creators, Binder Document
authors should include in the Binder all the
creator metadata using dc:creator
.
User agents, when presenting the Publication to the user,
should list the creators (and their roles, see
below) along with the required
Publication Title (refer to Section 4.7.)
For both elements, the required
role
attribute assigns the
role (or roles) the person or entity played in the creation of the
Publication content. This attribute is adopted from the
OEBPS
Specification with some modifications, and is an innovative
extension to Dublin Core.
The value of the role
attribute
must be a
white space separated list of one or more
role values. Each role value must be
either the three character code drawn from the extensive
MARC Relator Codes
List (and it must be all lower-case),
or constructed in the form
“oth.*
”, where the string
“*
” is a role descriptor
from another relator code list, or customized (this specification
imposes no case or length restrictions for the
“*
” string, but the
string must be of XML datatype
NMTOKEN
.) The
“oth.*
” form
must not be used when there is an
appropriate MARC Relator Code for the role.
The OEBPS Specification includes a convenient
short list
of the MARC Relator Code roles most likely to be used for Publication
metadata. The most used MARC Relator Code is that for an author:
aut
.
In the situation where a creator or contributor was involved with
some, but not all, of the User Sets in the Publication, the Binder
Document author must include the
usidrefs
attribute which designates
which User Sets the creator or contributor played a role. The
usidrefs
attribute value is a
white space separated list of one or more User
Set identifiers (see Section 4.6.1.) When the
usidrefs
attribute is not used, it
is assumed that the creator or contributor played their assigned
role(s) in all the User Sets of the Publication.
The optional but
recommended
file-as
attribute, also adopted
from OEBPS, may be used to specify a
normalized form of the character data, suitable for machine
processing, such as sorting by a person’s last name.
Example:
<dc:title>Markup Made Simple</dc:title> <!-- The same title is designated for all User Sets --> ... <dc:creator role="aut" file-as="Smith, John A.">John A. Smith</dc:creator> <dc:creator role="ill" usidrefs="illus-version" file-as="Doe, Jane B.">Jane B. Doe</dc:creator> <dc:contributor role="aui aft" file-as="Johnson, Adrian C.">Dr. Adrian C. Johnson</dc:contributor> <dc:contributor role="oth.custom-font-design">Acme Font Company</dc:contributor>
Based on the requirements and recommendations of this
specification, a user agent should present to
the user the following “title page” information when
presenting the User Set with identifier of
illus-version
(referring to the
Illustrated Version of the Publication which Jane B. Doe played a
creator role as illustrator):
Markup Made Simple By John A. Smith Illustrated by Jane B. Doe
However, if the user agent is presenting a different User Set of the Publication (such as the Non-Illustrated Version), the “title page” presented should not include Jane B. Doe since she did not play a creator role in that User Set:
Markup Made Simple By John A. Smith
dc:date
The dc:date
element designates
the date/time for an important event in the life-cycle of the
Publication, such as the publishing date. There
may be any number of
dc:date
elements to cover multiple
events.
The character data expressing the date/time of the event
must conform to the W3C Note
Date and Time
Formats. For example, a full date (with no time)
must be of the form
YYYY-MM-DD
(e.g.,
“2006-05-29”).
The required attribute
event
, adopted from
OEBPS,
assigns a name to the event. The set of values for the
event
attribute are not defined in
this specification. Possible values (suggested in the OEBPS
Specification) may include:
creation
,
publication
, and
modification
.
Example:
<dc:date event="publication">2006-05-29</dc:date>
dc:subject
The dc:subject
element, which
may occur any number of times in the Binder
metadata, designates the subject or topic keywords. The
Dublin Core Metadata
Element Set Specification states the following about
dc:subject
:
Typically, Subject will be expressed as keywords, key phrases or classification codes that describe a topic of the resource. Recommended best practice is to select a value from a controlled vocabulary or formal classification scheme.
For example, one formal standardized subject naming scheme that may be used is the Library of Congress Subject Headings.
The optional scheme
attribute
may be used to designate the scheme associated
with the character data value of
dc:subject
.
This specification does not endorse/recommend any particular
subject naming scheme, nor sets any requirements for the
scheme
attribute value. However, a
future version of this specification may
give more guidance and set recommendations on both subject naming
schemes and the scheme
attribute
value.
Example:
<dc:title>My Ántonia</dc:title> <dc:creator role="aut" file-as="Cather, Willa Sibert">Willa Cather</dc:creator> <dc:creator role="ill" file-as="Benda, Wladyslaw Theodor">W. T. Benda</dc:creator> ... <dc:subject scheme="lcsh">Women immigrants--Fiction.</dc:subject> <dc:subject scheme="lcsh">Farmers’ spouses--Fiction.</dc:subject> <dc:subject scheme="lcsh">Czech Americans--Fiction.</dc:subject> <dc:subject scheme="lcsh">Women pioneers--Fiction.</dc:subject> <dc:subject scheme="lcsh">Married women--Fiction.</dc:subject> <dc:subject scheme="lcsh">Friendship--Fiction.</dc:subject> <dc:subject scheme="lcsh">Farm life--Fiction.</dc:subject> <dc:subject scheme="lcsh">Nebraska--Fiction.</dc:subject>
In the above example, the Library of Congress Subject Headings
were taken from a particular Library of Congress catalog entry for a
1986 edition of the book My Ántonia, by Willa Cather,
illustrated by W. T. Benda. The scheme is designated as
lcsh
, a value not standardized in this
specification. Since there are multiple subject headings associated
with this book, each subject heading is represented by its own
dc:subject
element.
The required User Set functional part,
headed by the non-empty userset
element, serves as a container for a number of other functional parts.
It may appear more than once in a Binder Document.
The User Set, when used more than once in a Binder Document, is an innovative feature not implemented in prior generation XML-based publication frameworks, such as OEBPS. The capability to designate multiple User Sets allows Publication authors to provide alternative “renderings,” “views” or “looks” of the Publication, while drawing from the same pool of resources listed in the Resource Manifest.
For example, some Publication authors may use the User Set mechanism to supply a Publication with multiple language versions. Or, they may provide an unencrypted “façade” book (akin to a movie “trailer”) alongside the full, encrypted version of the Publication (note: encryption is outside the scope of this specification.) Or, they may provide different versions of the Publication based on age, reading level, education level, accessibility needs, ethnic group, or some other user factor or demographic.
(Note: the User Set mechanism should not be used for bundling together different Publications; rather, it is intended to provide multiple “looks” into a particular Publication.)
When there exist multiple User Sets in a publication, user agents must provide one or more mechanisms to:
Inform the user of all the User Sets in the publication, which
includes displaying the title
attribute description for each User Set, and
Allow the user access to any one of the User Sets except when the user does not have the requisite access rights.
(Access rights is outside the scope of this specification.)
This specification does not restrict the purposes for using multiple User Sets (other than already noted), although a future version of this specification may place certain restrictions. Nor does this specification require more than one User Set. For multiple User Sets, this specification ascribes no significance to their order in the Binder Document. A future version of this specification may implement a mechanism to prioritize User Sets.
Three attributes are required for the
userset
element:
usid
,
mode
and
lang
. A fourth attribute,
title
, is
required when there are two or more User
Sets in the Binder Document.
usid
AttributeThe required
usid
attribute for the
userset
element assigns an
identifier to the User Set.
The datatype of the usid
attribute value is ID
, and the allowed
characters are the same as those specified for
xml:id
(see
Section 4.2.1.2). Each
usid
must be unique across all
ID
values in the Binder Document.
The User Set identifier enables addressing of a particular User Set within a Publication. The overarching framework which references the Binder Document specification defines the addressing scheme, and whether or not a link in one User Set may reference content in another User Set in the same Publication.
Examples:
usid="1" usid="userset1" usid="scholarly-version"
mode
AttributeThe required
mode
attribute for the
userset
element
must be assigned the value
“oeb
” or
“web
”.
Refer to Section 4.6.5 for a detailed
explanation of the mode
attribute.
Examples:
mode="oeb" mode="web"
lang
AttributeThe required
lang
attribute for the
userset
element assigns the
primary language(s) of the User Set. Section
4.2.2 provides an overview of the general purpose and requirements
of this attribute.
Since this attribute may contain more than one language assignment,
the order of the primary languages in
lang
is significant, from highest to
lowest priority or significance, but otherwise this specification does
not distinguish the relative significance between the multiple
primary languages.
Example:
lang="fr-FR de-DE"
In the example above, two languages, French and German, are listed as primary languages of the User Set. The first declared language, French, is considered to have higher, if not equal, significance — the relative significance between the two languages is not defined in this specification.
title
AttributeThe title
attribute for the
userset
element provides a
descriptive title for the User Set. While it is
optional when there is only one User Set in a
Binder Document, it is required (on all
User Sets) when there are two or more User Sets in a Binder
Document.
The attribute value of title
is
datatype text (CDATA
), with the allowed
Unicode character range the same as that for the
comment
attribute value (see
Section 4.2.1.3.)
Note that the value of the title
attribute is descriptive of the User Set itself. It is not
the same as the Publication Title, which
designates the title of the Publication specific to the User Set.
Refer to the markup example of
Section 4.6.6.
oeb
and
web
ModesThe Mode setting (mode
attribute,
see Section 4.6.2) is an innovative feature
not implemented in prior generation XML-based publication frameworks,
such as
OEBPS.
Mode essentially instructs user agents how to treat the general
presentation of the User Set.
In “oeb
” mode, the user
agent should present the User Set consistent with
the classic OEBPS paradigm, where the Spine (see
Section 4.9) expresses the primary or main part
of the content. There may be out-of-spine content referenced from the
Spine and the Navigation Set(s) (in turn,
out-of-spine content may reference other out-of-spine content as well
as reference back to any part of the Spine), but such content is
considered in the OEBPS paradigm to be fairly minor in scope,
typically auxiliary or amplificatory to the main Spine content.
The “oeb
” mode is
intended for Publication types which are essentially linear in
construction. A classic example is traditional fiction where the
content is highly linear and is intended to be read from start to
finish.
In “web
” mode, the user
agent should present the User Set consistent with
the classic web paradigm. Here the Spine is treated as the “home
page,” or “entry page” into the Publication, and the
referenced out-of-spine content documents are treated as separate
“web pages.” Unlike the
“oeb
” mode, the referenced
out-of-spine content documents (which in turn may
reference other out-of-spine content documents, as well as any part
of the Spine) are considered of equal (or even greater) importance to
the home page (Spine).
The “web
” mode is
intended for Publication types which are essentially non-linear or
composite in construction, where linear order is not important, or
where forced linearization actually harms comprehension of the
content. These include, as a partial list only, reference manuals,
encyclopedias, dictionaries, modern hypertext literature, cookbooks,
newspapers, and periodicals. And
“web
” mode is appropriate
when the Publication type is a web site whose pages and
associated resources have been conformed to the requirements of the
publication framework which references this specification.
This specification does not provide mode selection requirements or guidelines (other than the general description given above), leaving it to the Publication author to select the mode appropriate for their Publication. This specification also does not mandate how user agents are to present User Sets in each of the two modes. However, it is strongly recommended that user agents differentiate the presentation to the user based on mode.
[Informative Commentary] To further illustrate
the differences between oeb
and
web
modes, consider how a visual user
agent might present publications in both modes. In
oeb
mode, the user agent presents the
Spine in a main window in book-like fashion (e.g., as discrete,
turnable pages.) Out-of-spine content, when actuated by the user
clicking on a link, appears in a smaller popup window in front of the
Spine content. When the user has finished reading the popup window,
they perform some action causing the popup window to disappear —
they are returned to the main window which has remained untouched. In
web
mode, each link to a referenced
content document displays the new content in the main window, as a
new “page,” rather than in a popup window.
Example markup of multiple User Sets declaring different
language versions as well as both presentation modes
(“oeb
” and
“web
”):
<userset usid="english1" mode="oeb" lang="en-US" title="Complete English Version"> ... </userset> <userset usid="french2-web" mode="web" lang="fr-FR" xml:lang="fr-FR" title="Accomplissez La Version Française"> ... </userset>
The required Publication Title functional part of the User Set designates the title of the Publication.
The Publication Title is headed by the
required element
pubtitle
, which
must contain one or more
title
elements.
Each title
element (see
Section 4.2.4) represents a line of the
Publication title. The order of the
title
elements in
pubtitle
is significant, with the
first title
being the most
significant.
User agents must present to the user, in some clear manner (such as part of a “title page”), the Publication Title when the User Set is accessed and presented.
Example:
<pubtitle> <title>Dr. Strangelove</title> <title>Or: How I Learned to Stop Worrying and <xhtml:em>Love the Bomb</xhtml:em></title> </pubtitle>
A user agent may visually render this example as:
Dr. Strangelove Or: How I Learned to Stop Worrying and Love the Bomb
The optional but recommended Character Manifest functional part of the User Set lists the Unicode characters used in the User Set of the Publication.
The Character Manifest is headed by the
optional
characters
element, which
may contain three optional
elements block
,
range
and
point
. These three elements may be
used any number of times, and may be mixed in any order.
The Character Manifest allows user agents (and other processors) to immediately know the characters needed to be rendered without necessitating a scan throughout all the content documents comprising the User Set. In some situations content documents may be inaccessible at the time of query (e.g., they are encrypted — encryption is outside the scope of this specification), so the Character Manifest is important to include in the User Set.
Whether or not the Character Manifest is included in the User Set, the default in this specification is that a visual user agent must not halt processing/rendering of the User Set when encountering characters for which the user agent does not have suitable glyphs or glyph substitutes. Nevertheless, the user agent should inform the user when there are such non-renderable characters in the User Set, and during visual presentation the user agent must substitute a generic placeholding glyph (such as the ubiquitous “box” character) which communicates that the user agent does not have a suitable glyph for that character. Visual user agents should provide a mechanism by which users may, upon query, know the Unicode character associated with any generic placeholding glyph.
Publication authors may request an override of this default,
requesting that visual user agents not render a User Set when the user
agents do not have suitable glyphs (or suitable substitutes) for
specific characters. The Publication author enables this request by
including a Character Manifest and setting the value of the
render
attribute to
important
for the characters of
interest. When a visual user agent does not have suitable glyphs (or
suitable glyph substitutes) for any of the important characters, the
user agent must not automatically render
the User Set, but instead must inform the
user that the User Set contains important characters for which the
user agent does not provide glyphs, and queries the user whether or
not to proceed with rendering.
(Note: nearly all content documents use a well-defined
Unicode
character block — for example, “Basic Latin”
— associated with the primary language. Common sense dictates
that these characters should be declared
important
in the Character
Manifest.)
Although the Character Manifest is optional in this specification, a future version of this specification may elevate this to a requirement. Publication authoring tools should include a Character Manifest for each User Set in the Binder Document.
[Informative Commentary] The Character Manifest will likely be of importance to various stakeholders in the digital publication industry. For example, distributors and retailers may wish to have this information (as well as language information) to communicate to prospective customers the needed character glyph sets important for reading any particular Publication.
char
Attribute for the
range
and
point
ElementsThe required
char
attribute for the
range
and
point
elements assigns a
white space separated list of one or more
Unicode character code points.
Each Unicode character code point must be represented using the Unicode code point notational convention:
“…an individual Unicode code point can be expressed as U+n, where n is four to six hexadecimal digits, using the digits 0–9 and uppercase letters A–F (for 10 through 15, respectively). There should be no leading zeros, unless the code point would have fewer than four hexadecimal digits — for example,
U+0001
,U+0012
,U+0123
,U+1234
,U+12345
,U+102345
.”
For the specific rules governing the use of the
char
attribute for the
range
and
point
elements, refer to
Sections 4.8.4 and
4.8.5, respectively.
Example:
char="U+00A9 U+201C"
In the example above, two Unicode characters are listed:
U+00A9
(the copyright sign) and
U+201C
(left double quotation mark.) The
meaning of this attribute value depends upon which element it is
applied.
render
Attribute for the
block
,
range
and
point
ElementsThe optional
render
attribute for the
optional block
,
range
and
point
elements specifies whether
the assigned characters are important or not important (refer to
the discussion in Section 4.8.)
The render
attribute must
be assigned either the value important
or notimportant
. The default value is
notimportant
when the
render
attribute is not applied.
Examples:
render="important" render="notimportant"
block
ElementWhen the User Set includes a large number of characters from a
particular
Unicode
character block, the optional
block
element
may be used to specify that block, using the
required name
attribute.
The value of the name
attribute must be drawn from the list of
block names in the
Unicode
Character Database. The case of the characters in the block name
is not important; however, for consistency, the case
should exactly follow that given in the Unicode
Character Database.
Listing a block name rather than specifying particular code points (or a range of code points) does not imply that all the characters in the block are actually used in the User Set. However, this is usually not a problem in that glyph sets supported by user agents usually cover most, if not all, of the characters in specific Unicode character blocks. If a user agent has glyphs for nearly all the characters in a character block, it may assume it has complete coverage.
Example:
<characters> <block blockname="Basic Latin" render="important"/> <block blockname="Latin-1 Supplement" render="notimportant"/>> ... </characters>
In the above example, the Character Manifest is stating that the content documents in the User Set include characters from the “Basic Latin” and “Latin-1 Supplement” blocks. Furthermore, the Publication author deems “Basic Latin” glyph support as important (refer to the discussion in Section 4.8), while glyph support for the “Latin-1 Supplement” is deemed not important.
range
ElementThe optional
range
element
may be used to assign one or more ranges of
Unicode characters that appear in the content documents of the User
Set. This element may appear any number of times
in the Character Manifest.
The character range or ranges are actually assigned using the
required
char
attribute (for general
information on this attribute refer to Section
4.8.1.)
For the char
attribute as applied
to the range
element, the range or
ranges of Unicode characters are specified using start/end pairs of
white space separated Unicode character code
points. If an odd number of code points are listed in the attribute
value (including only one), then the last one
must be ignored.
Publication authors should only list ranges where all the characters in each range actually appear in the content documents of the User Set. User agents must assume that when a range is listed, all the characters in that range appear in the content documents, except those code points which are not yet assigned in the Unicode specification.
Examples:
<characters> <range char="U+00C0 U+00FF U+2018 U+201F" render="important"/> <range char="U+0391 U+03A9 U+03B1"/> ... </characters>
In the example above, for the first
range
element, two ranges of Unicode
characters are specified: U+00C0
to
U+00FF
, and
U+2018
to
U+201F
. In addition, the Publication author
has declared both ranges to be important (refer to the discussion in
Section 4.8.)
In the second range
element,
since there are an odd number of code points, the last one,
U+03B1
is ignored, leaving one specified
range of U+0391
to
U+03A9
. In addition, since the
render
attribute is not specified,
the default value of notimportant
is
implied.
In both examples, user agents must
assume that all the characters in all the listed ranges appear in the
content documents of the User Set, except those code points not yet
assigned in the Unicode specification. (For the second
range
element, the code point
U+03A2
happens to be unassigned in
Unicode.)
point
ElementThe optional
point
element
may be used to assign one or more Unicode
character code points appearing in the content documents of the
User Set. This element may appear any number of
times in the Character Manifest.
The character code points are actually assigned using the
required
char
attribute (for general
information on this attribute refer to Section
4.8.1.)
Publication authors should only list character code points which actually appear in the content documents of the User Set. User agents must assume that when a character code point is listed, it appears in the content documents, except when the code point is not yet assigned in the Unicode specification and added by mistake.
Examples:
<characters> <point char="U+2014 U+201C U+201D" render="important"/> <point char="U+00A9"/> ... </characters>
In the first example, three Unicode characters are listed as appearing in the content documents of the User Set. The Publication author has declared all these characters as important (refer to the discussion in Section 4.8.)
In the second example, one Unicode character is listed as
appearing in the content documents of the User Set. Since the
render
attribute is not specified,
the default value of notimportant
is
implied.
Example markup of the Character Manifest:
<characters> <block blockname="Basic Latin" render="important"/> <block blockname="Latin-1 Supplement" render="notimportant"/>> <range char="U+0391 U+03A9 U+03B1 U+03C9" render="important"/> <point char="U+2014 U+201C U+201D" render="important"/> <point char="U+0192"/> </characters>
In the example above, the elements within
characters
may
appear in any order, and may be mixed.
The required Spine, a functional part of the User Set, defines an ordered list of one or more content documents drawn from the Resource Manifest.
The Spine is headed by the spine
empty element, and the ordering of the content documents is
accomplished with the required
residrefs
attribute, whose value
must be a white
space separated list of content document resource identifiers (see
Section 4.2.3.)
Following are the general requirements for the Spine:
There must be only one
spine
element in the User
Set.
The order of the resource identifiers is significant, defining the order of the associated content documents which comprise the Spine. (When there are two or more resource identifiers, the Spine can be considered, for presentational purposes, a “composite document,” see Section 4.11.)
A content document resource identifier must not appear more than once in the Spine. (However, the same content document may appear more than once in the Spine provided each occurrence uses a different resource identifier, see Section 4.4.5.)
A content document resource identifier appearing in the Spine must not appear in a composite content document in the same User Set (see Section 4.11.)
Resource types other than content documents must not appear in the Spine.
When the User Set Mode is
“oeb
”, the Spine is the
primary reading order of the User Set, essentially the same in purpose
and function to the
OEBPS
Spine.
When the User Set Mode is
“web
”, the Spine is
essentially the “home page” of a web-site structure.
The optional
entry
attribute provides the address
of the entry point into the Spine when the User Set is first
“opened”. If not present, the entry point is the root
element of the first content document resource in the Spine. The
overarching publication framework, which references this Binder
Document specification, defines the addressing scheme and syntax.
Definition: an “out-of-spine” content document is any content document resource, not in the Spine but listed in the Resource Manifest, which is reachable by direct reference, or indirectly by a chain of references, from the Spine or Navigation Set(s) of the User Set.
User agents must enable all the link references to, and present to the user on demand (when the user has the requisite access rights), all the out-of-spine content documents in the User Set. (Access rights is outside the scope of this specification.)
[Informative Commentary] Out-of-spine content
is an important, and innovative, feature of the OEBPS paradigm,
enabling user agents to more richly present Publications by taking
advantage of digital presentation technologies. In traditional print
publishing, it is necessary, due to physical limitations, to fully
linearize content, even for quite non-linear publications. The
informative comment in Section 4.6.5, in its
discussion of both “oeb
”
and “web
” modes, provides
an example of how out-of-spine content may be presented to the
end-user. In “oeb
” mode
publications, non-linear document structures such as notes, sidebars,
and other annotative and amplificatory content,
may be placed into out-of-spine content documents
and referenced from the Spine, the Navigation
Set(s), and/or other out-of-spine content documents.
Markup examples of the Spine:
<spine residrefs="intr1 chap1 chap2" entry="intr1#titlepage"/> <spine residrefs="homepage">
The optional Linear Order, a functional part of the User Set, allows Publication authors to linearize all the content documents in the User Set, both Spine and out-of-spine. This is useful for purposes requiring full linear ordering of all the content documents in the User Set, such as printing.
The Linear Order functional part is headed by the
linear
empty element, and the
ordering of the content documents is accomplished with the
required
residrefs
attribute, whose value
must be a white
space separated list of content document resource identifiers (see
Section 4.2.3.)
Following are the general requirements for the Linear Order functional part:
There must be no more than one
linear
element in the User
Set.
The order of the resource identifiers is significant, defining the order of the associated content documents which comprise the Linear Order.
A content document resource identifier must not appear more than once in the Linear Order. (However, the same content document may appear more than once in the Linear Order provided each occurrence uses a different resource identifier, see Section 4.4.5.)
Resource types other than content documents must not appear in the Linear Order.
The Linear Order is considered advisory; user agents are not required to use the information in the Linear Order.
Example:
<linear residrefs="intro chap1 chap2 chap3 conclusion note1 note2"/>
The optional Composite Documents, a functional part of the User Set, may be used to define one or more composite documents. A composite document “bundles” together out-of-spine content documents into a single “virtual” content document — similar to the Spine.
The Composite Documents functional part is headed by the
composites
element, which may
contain zero or more composite
empty elements. Each composite
empty element must include the
residrefs
attribute, whose value
must be a white
space separated list of content document resource identifiers (see
Section 4.2.3.)
Following are the general requirements for a composite document:
All the content document resource identifiers defining a composite document must be out-of-spine in the User Set.
The order of the resource identifiers is significant, defining the order of the associated content documents which comprise the composite document.
A content document resource identifier in a composite document must not appear more than once in all the composite documents in the User Set. (However, the same content document may appear more than once in the composite documents, and also in the Spine, provided each occurrence uses a different resource identifier, see Section 4.4.5.)
Resource types other than content documents must not appear in a composite document.
Example:
<composites> <composite residrefs="note1 note2 note3"/> </composites>
In the above example, three content document resources, with
resource identifiers of note1
,
note2
and
note3
, are out-of-spine, each
individually referenced from the Spine, the
Navigation Set(s), and/or other out-of-spine
content. The Publication author would like to “bundle”
these three content documents together into a composite document, so
when the User Set is presented, they are always presented together as
if they are one content document. Importantly note that referencing is
still done to the individual content documents, not to the composite
document (the same note applies to the Spine.)
The optional Element Substitution, a functional part of the User Set, may be used to associate non-text content media resources, such as images and graphics, video, audio, etc., to particular elements in content documents.
User agents may elect to substitute the contents of a particular element with one of the associated non-text content media resources. This is especially useful for tables and other types of graphical content where, because of platform or other restrictions, the non-text content media resource will be more suitable for presentation.
The Element Substitution functional part is headed by the
elemsub
element, and
may contain zero or more
element
empty elements.
Each instance of the element
empty element must include two
attributes: elemref
and
residrefs
. The attribute value of
elemref
specifies the reference
address of the element in a particular content document (the scheme
and syntax used for element referencing is defined by the overarching
framework specification which references this specification.) The
attribute value of residrefs
must be a white
space separated list of one or more non-text content media
resource identifiers (see Section 4.2.3.)
The order of the resource identifiers in
residrefs
is significant.
Publication authors should order the resource
identifiers to communicate presentation priority, with the first
resource identifier having the highest priority. If a user agent is
able to render two or more of the listed non-text content media
resources, and plans to substitute one of them for the element
contents, the user agent should, but is
not required to, select the highest priority
resource among them.
The list of substitute non-text content media resources must not include any content documents, nor other resources that are inappropriate for substitution (such as style sheets), and user agents must not substitute such resources for elements if present in the list of resource substitutes.
At least one of the substitute non-text content media resources must be a raster image. The overarching framework specification, which references this Binder Document specification, may add further requirements.
The user agent should provide some mechanism to give the user the option to view, on demand, all the substitute non-text content media resources assigned for a given element, except for media resources which the user agent is not capable of rendering, or where the user does not have the requisite access rights. (Access rights is outside the scope of this specification.)
Example:
<elemsub> <element elemref="chap1#table1" residrefs="table1-png table1-jpg table1-gif" comment="Images in three formats for Table 1 of Chapter 1"/> </elemsub>
In the above example, three raster images in different formats have
been assigned and prioritized, by their resource identifiers, to the
element with ID
of
table1
(the element contains tabular
data) in a content document with the resource identifier of
chap1
. These three resources are raster
images of the table. The user agent, at its choosing,
may opt to either natively render the table data
markup, or substitute the table data markup with one of the three
raster images. If the user agent supports at least two of the raster
image formats, and plans to substitute the table markup with one of
them, it should select the one having the highest
priority. Regardless of what the user agent chooses, the user agent
should give the user the option to view, on
demand, any one of the three raster images, except for those images
the user agent is not capable of rendering or where the user does not
have the requisite access rights.
The optional Non-Text Content Media Equivalents, a functional part of the User Set, may be used to specify two or more non-text content media resources as being equivalent to each other in the User Set. Non-text content media includes images and graphics, video, audio, etc.
When a content document references a non-text content media
resource, during presentation a user agent may
elect to use an equivalent resource if specified in one of the
equiv
groups. This feature allows
user agents to select the optimal non-text content media resource for
the given platform, as well as to meet other framework
requirements.
The Non-Text Content Media Equivalents functional part is headed by
the equivs
element, and
may contain zero or more
equiv
empty elements. Each
equiv
forms an independent group
of equivalent non-text content media resources.
Every instance of the equiv
empty element must include the
residrefs
attribute, whose value
must be a white
space separated list of two or more resource identifiers which
represent equivalent non-text content media resources (see
Section 4.2.3.) A particular resource
identifier must not appear more than once
in all the equiv
groups in the User
Set (refer to Section 4.4.5 on assigning
multiple resource identifiers to the same resource.)
The order of the resource identifiers in
residrefs
is significant.
Publication authors should order the resource
identifiers to communicate presentation priority, with the first
resource identifier having the highest priority. If a user agent is
able to render two or more of the non-text content media resources
from the equivalent set of resources, the user agent
should, but is not required
to, select the highest priority resource among them.
The list of equivalent resources must not include any content documents, nor other resources that are inappropriate for substitution (such as style sheets), and user agents must not use such inappropriate resources if present in the list of resource equivalents. The overarching framework specification, which references this Binder Document specification, may add further requirements.
A user agent should provide the user the option, by some mechanism, of accessing the other equivalent resources to the one selected by the user agent. The exceptions are resources with media types the platform does not support, and when the user does not have the requisite access rights. (Access rights is outside the scope of this specification.)
Example:
<equivs> <equiv residrefs="sunrise-avi sunrise-png sunrise-jpg"/> <equiv residrefs="sunset-avi sunset-png sunset-jpg"/> </equivs>
In the above example, two independent groups of equivalent non-text
content media resources are defined and prioritized in the User Set.
In the first group, there are three equivalent non-text content media
resources depicting a sunrise event: an AVI video, a PNG image, and a
JPEG image — all prioritized in that order. If a content
document references the PNG image version, the user agent, at its
discretion (or because it does not support PNG),
may elect to substitute the PNG with either the
AVI video or the JPEG image version, with the request by the
Publication author that the AVI video be given presentation priority.
The second group is similar to the first group except the second group
depicts a sunset event. Each equiv
group is independent of the other, meaning the resources in one group
are not equivalent to those in the other group. The user agent
should allow, by some mechanism, the end-user to
view, on demand, the other equivalent resources, provided the user
agent is capable of rendering them and the user has the requisite
access rights.
The optional but recommended Cover, a functional part of the User Set, may be used to designate one or more non-text content media resources to represent the Publication “cover.” Non-text content media includes images and graphics, video, audio, etc. In print publishing, which is physically limited to static images, the cover is usually termed “cover art.”
A user agent may choose one or more of the designated cover resources for cover presentation purposes.
The Cover is headed by the cover
empty element. The designation of the cover resources is accomplished
with the required
residrefs
attribute, whose value
must be a white
space separated list of non-text content media resource
identifiers (see Section 4.2.3.)
At least one of the non-text content media resources must be a raster image. Although a particular resource identifier must not appear more than once in Cover, it may be referenced, as allowed, in other resource-related functional parts of the User Set.
The order of the cover resource identifiers in
residrefs
is significant.
Publication authors should order the cover
resource identifiers to communicate cover resource presentation
priority, with the first cover resource identifier having the highest
priority. If a user agent is able to present two or more of the cover
resources, the user agent should, but is
not required to, select the highest priority
resource among them.
The pool of cover resources must not include any content documents, nor other resources that are inappropriate for use as a cover (such as style sheets), and user agents must not use such inappropriate resources if present in the list of resource equivalents.
A user agent should provide the user the option, by some mechanism, of accessing all the designated cover resources. The exceptions are resources with media types the platform does not support, and when the user does not have the requisite access rights. (Access rights is outside the scope of this specification.)
This specification does not further qualify the properties of cover non-text content media resources. The overarching framework specification, which references this Binder Document specification, may add further requirements to the Cover functional part.
Example:
<cover residrefs="cover-avi cover-mp3 cover-png cover-jpg cover-small-jpg"/>
In the example above, the Publication author designates five cover resources for the User Set (one video, one audio, and three images, including one of a lower resolution), prioritized in the order designated. The user agent may use any one of these resources for the cover presentation, and should provide some mechanism to allow the user to access the other cover resources, except for resources the user agent does not support, or the user does not have the requisite access rights.
The optional but recommended Thumbnail, a functional part of the User Set, may be used to designate one or more raster image resources to represent the Publication “thumbnails.”
A user agent may choose one or more of the designated thumbnail resources for use as thumbnail images. For example, a retailer of the Publication may use one of the designated thumbnails for retailing purposes.
The Thumbnail is headed by the
thumbnail
empty element. The
designation of the thumbnail resources is accomplished with the
required
residrefs
attribute, whose value
must be a white
space separated list of raster image resource identifiers (see
Section 4.2.3.)
Although a particular thumbnail resource identifier must not appear more than once in Thumbnail, it may be referenced, as allowed, in other resource-related functional parts of the User Set.
The order of the thumbnail images in
residrefs
is significant.
Publication authors should order the thumbnail
image resource identifiers to communicate thumbnail presentation
priority, with the first thumbnail image resource identifier having
the highest priority. If a user agent is able to use two or more of
the thumbnail image resources, the user agent
should, but is not required
to, select the highest priority resource among them.
The pool of thumbnail image resources must not include any content documents, active media (such as video and audio), nor other resources that are inappropriate for use as a thumbnail image (such as style sheets.) User agents must not use such inappropriate resources if present in the list of resource equivalents.
A user agent should provide the user the option, by some mechanism, of accessing/viewing all the thumbnail image resources. The exceptions are image media types the platform does not support, and when the user does not have the requisite access rights. (Access rights is outside the scope of this specification.)
This specification does not further qualify the properties of thumbnail image resources, such as resolution and color depth. Nor does it differentiate between cover and thumbnail images. The overarching framework specification, which references this Binder Document specification, may add further requirements to the Thumbnail functional part.
Example:
<thumbnail residrefs="thumb-png thumb-jpg thumb20x20-gif"/>
In the example above, the Publication author designates and prioritizes (in the order given) three thumbnail image resources for the User Set (one PNG, one JPEG, and a GIF with a pixel resolution of 20x20.) The user agent may use any one of these image resources for a thumbnail, and should provide some mechanism to allow the user to access/view the other thumbnail images, except for image types the user agent does not support or the user does not have the requisite access rights.
The optional Styling, a functional part of the User Set, may be used to apply cascade-type styling (such as CSS) to the content document resources of the User Set.
The Styling functional part is an innovative feature not implemented in prior generation XML-based publication frameworks, such as OEBPS. Instead of having styling instructions haphazardly spread within all the content documents and in “style sheets” remotely referenced by individual content documents, the Styling functional part centralizes, for the Publication author, all the styling into a unified and powerful framework within the Binder Document. This gives Publication authors a greater degree of flexibility, simplicity, and control over Publication styling.
The overarching publication framework which references this specification defines the cascade-type styling language(s) supported, and the role, if any, that embedded and referenced styling within content documents is given, including the priority of applying the styling information.
Since the purpose of the Styling functional part is to centralize all styling for the benefit of Publication authors (as well as benefiting user agents and users), publication frameworks which reference this specification should not allow, or should ignore, styling instructions embedded within, and referenced from, content documents. It is recommended that the content document markup vocabularies supported by the publication framework are structural and semantic in focus, and do not include facilities for embedding and referencing style language information. This will assure the focus of content document markup is solely on defining document structure and content semantics rather than on presentation. Not only does this maximize the effectiveness of the Styling mechanism described in this section, but also results in content documents with a high degree of markup simplicity and compactness, readability, accessibility, and repurposeability.
Cascade-type styling languages (such as CSS) are designed to “negotiate” content document styling between the intentions of the Publication author, and the needs and preferences of the user. This negotiation is done by a “cascading” prioritization process mediated by user agents. For CSS, the negotiation process is described in great detail in CSS 2.1, section 6.4.
The purpose of the Styling functional part (which itself enables cascading prioritization), is for Publication authors to conveniently and powerfully communicate their styling intentions to the user agent.
More specifically, for the Styling functional part, Publication authors may apply one or more cascade-type styling documents (“style sheets”) to a content document. When more than one style sheet is applied to a content document, the order of application is important, with the next style sheet having higher priority over the previous style sheet. This “cascading” of multiple style sheets results in a final set of styling instructions for the content document expressing the intention of the Publication author.
A style sheet may also be applied to multiple content documents which share a common markup structure. This is a powerful feature that simplifies styling and make it easier to edit, and swap, the styling for a User Set.
The Styling functional part is headed by the
styling
element, which
may contain zero or more
styleset
elements, each of which
represents a “Style Set” (see
Section 4.16.3.)
Each styleset
element
must contain exactly one
title
element (which provides a
descriptive title for the Style Set, see Section
4.2.4), followed by one or more
style
empty elements (see
Section 4.16.4.)
styleset
ElementWithin the styling
element, there
may be any number of
styleset
elements, each of which
represents a “Style Set.” The order of multiple Style Sets
in styling
is insignificant.
A Style Set provides a particular and complete styling of the User Set. The multiple Style Set capability allows Publication authors to provide different styling presentations for the User Set.
Each styleset
element
must contain exactly one
title
element (which
should provide a unique, descriptive title for
the Style Set, see Section 4.2.4), followed by
one or more style
empty elements
(see Section 4.16.4.)
The styleset
element
must include two
required attributes:
media
and
priority
.
The required
media
attribute is used to designate
a “CSS media type” for the Style Set. The value of the
media
attribute
must be one of the ten CSS media types
listed in the
CSS 2.1
Specification:
all
,
braille
,
embossed
,
handheld
,
print
,
projection
,
screen
,
speech
,
tty
, and
tv
.
The CSS media type of all
is the
“general default” in this specification and
should be the CSS media type assigned by
Publication authors for general-purpose Style Sets. The other CSS
media type values should only be applied to Style
Sets targeting specialized user agents.
The required
priority
attribute
must be assigned either the value
primary
or
alternate
. For a given CSS media type,
a user agent should apply, by default, the
primary Style Set.
For all the Style Sets in a User Set:
There must be at least one Style
Set with a CSS media type of
all
.
For each CSS media type appearing in the User Set, there must be one and only one Style Set designated as primary — the remaining Style Sets of that CSS media type must be designated as alternate.
Based on the above requirements, there
must always be one Style Set in the User
Set with a CSS media type of all
and a
priority of primary
. For example, when
there is only one Style Set in a User Set:
<styling> <styleset media="all" priority="primary"> <title>Single Style Set</title> ... </styleset> </styling>
When user agents encounter priority and/or CSS media type errors in the User Set, the following handling rules apply:
If two or more Style Sets of a given CSS media type are
designated primary
, user agents
must designate the first Style Set among
them as primary
and the remainder
are redesignated as alternate
.
If all the Style Sets of a given CSS media type are designated
alternate
, then the first Style Set
among them is redesignated as
primary
.
If a user agent supports a certain CSS media type (and this
includes the general-purpose all
CSS
media type), but this CSS media type is not represented in the User
Set, then the user agent must assume
the Publication author did not supply a Style Set for that CSS media
type — the user agent must not
substitute another Style Set of a different CSS media type.
When there are multiple Style Sets of all the supported CSS media types in the User Set, the user agent, by some mechanism, must:
Inform the user of the existence of multiple supported Style Sets,
Provide a list on demand of all those supported Style Sets,
which includes the descriptive titles assigned by the
title
elements and the values
of the media
attribute, and
Allow the user to manually select and apply the Style Set from the supported list.
style
ElementEach Style Set must include one or
more style
empty elements which
apply cascade-type styling document resources (hereafter referred to
as “style sheets” following the
CSS
convention) to the content document resources used in the User
Set.
Each style
empty element
must include the
required attribute
cssidrefs
, and sometimes
include the optional cdidrefs
element. Both of these attributes are identical to
residrefs
(see
Section 4.2.3), except that the resource
identifiers they contain are restricted to particular resource media
types: content documents for
cdidrefs
, and style sheets for
cssidrefs
.
Order is significant for the style sheets listed in
cssidrefs
— the order
designates the “cascading” sequence of the style
sheets. Order is not significant for the content document
resources listed in cdidrefs
.
For each style
element, the
cascaded style sheet resources listed in
cssidrefs
are applied to the
content document resources listed in
cdidrefs
, if that attribute is
present.
If the cdidrefs
attribute is
not present in style
, then
the cascaded style sheet resources listed in
cssidrefs
are applied to
all of the content document resources in the User Set.
In addition, order is important for multiple
style
elements, where a particular
content document may appear in multiple
style
elements in a Style Set. This,
combined with style sheet cascading within the
cssidrefs
attribute value, allows
for quite complex, yet easy to construct, style sheet assignments, as
the example in Section 4.16.5
illustrates.
<styling> <styleset media="all" priority="primary"> <title>Acmee Publishing Contemporary Style</title> <style cdidrefs="intr1 chap1 chap2 chap3" cssidrefs="css-a css-b"/> <style cdidrefs="intr1 note1 note2" cssidrefs="css-c css-d"/> <style cdidrefs="note2" cssidrefs="css-e"/> </styleset> <styleset media="all" priority="alternate"> <title>Acmee Publishing 1920's Throwback Style</title> <style cssidrefs="css-f"/> <style cdidrefs="intr2" cssidrefs="css-g"/> </styleset> <styleset media="handheld" priority="primary"> <title>Styling For Handheld Devices</title> <style cssidrefs="css-h"/> </styleset> </styling>
In the above example, a Publication author has provided three Style
Sets for the User Set. The CSS media type for two of them are
designated all
, and the third is
designated handheld
. The first Style
Set is designated the primary one for the
all
CSS media type.
The application of the style sheets to the content documents is best illustrated by looking at particular content documents.
For example, in the first Style Set, for the content document with
resource identifier intr1
(e.g., an
introduction to the book), the style sheets (identified by their
resource identifiers) are applied cascade-fashion in the following
order of ascending priority:
css-a
,
css-b
,
css-c
, and
css-d
(notice that
intr1
appears twice in the Style Set.)
In the same Style Set, for the content document
note2
, the style sheets are applied in
this order:
css-c
,
css-d
, and
css-e
(notice that
note2
also appears twice in the Style
Set.)
In the second Style Set, the style sheet
css-f
is applied to all the
content documents in the User Set (since the
cdidrefs
attribute is not
present in the first style
element.) The style sheet css-g
is then
applied to the content document intr2
.
Thus, two style sheets are actually applied to
intr2
in this order:
css-f
(assigned globally), and
css-g
(assigned explicitly.)
In the third Style Set, the single style sheet
css-h
is applied to all the
content documents in the User Set. This is the simplest of the three
Style Set assignments.
The required Navigation, a functional part of the User Set, allows a Publication author to include one or more Navigation Sets for their User Set. A Navigation Set is an ordered, optionally hierarchical, thematic list of content document links — used for navigating through the Publication. One of the included Navigation Sets must be a primary Navigation Set (informally known as a “table of contents”.)
The Navigation functional part is influenced by, and compatible with, the “Navigation Control File” (NCX) of the Digital Talking Book Specification (DTBook), although substantially revised (a subset of DTBook, including NCX, forms the basis of the NIMAS 1.0 Specification.) Other than support for “tours” (see Section 4.17.2), the Open eBook Publication Structure does not include support for Navigation Sets in its Package (the OEBPS Package is the equivalent of the Binder Document.)
Navigation Sets are not only vitally important for accessibility — they are very useful for many other purposes. For example, Publication authors need not, and should not, include a table of contents (and other link lists) within content documents. In addition, since user agents are required to process and present Navigation Sets to the user, the user is provided with a standardized, Publication-independent interface to directly access the important structures and items within Publications.
The Navigation functional part is headed by the
required
navigation
element which
must contain one, and only one,
primarynav
element (designating the
primary Navigation Set), and any number
(including zero) of altnav
elements (each designating a non-primary or alternative Navigation
Set.) The altnav
elements can be
placed in any order before and after the
primarynav
element. Other than
their different element names, both
primarynav
and
altnav
are identical to each other
in their supported attributes and content models. In addition to
the
Common Attributes, the
primarynav
and
altnav
elements may include the
optional tour
attribute (See
Section 4.17.2.)
The primarynav
and
altnav
elements contain the
following three elements in the given order:
title
(one required),
desc
(one optional), and
pointer
(one or more required). The
required title
element contains a
brief, descriptive title for the Navigation Set, and the optional
desc
element provides a summary or
abstract of the Navigation Set. Both these elements have content
models as described in Section 4.2.4. The
pointer
element, which enables the
pointer or link to the target (the “link target”), is
described in Section 4.17.3.
tour
Attribute for the
primarynav
and
altnav
ElementsThe optional
tour
attribute for the
primarynav
and
altnav
elements allows the
Publication author to request that the user agent provide
“tour” functionality to the Navigation Set (see
Section 4.17.4.)
When used, the tour
attribute
must be assigned one of two values:
request
and
norequest
. When the
tour
attribute is not present, it
defaults to the value of norequest
.
pointer
ElementThe required
pointer
non-empty element designates
a particular link target in the Navigation Set. A Navigation Set
must have at least one
pointer
element, and the order of
multiple pointer
elements is
significant, designating the order of the link target items in the
Navigation Set.
The pointer
element contains the following three elements in the given order:
label
(one optional),
title
(one required), and
desc
(one optional).
The optional label
element, used
to designate a structural level “label” for the link
target title, is further described in Section
4.17.3.1. The required title
element contains a brief, descriptive title of the link target, and
the optional desc
element provides a
summary or abstract of the link target. All three of these elements
have content models as described in Section
4.2.4.
The link target of the pointer
element is designated by the required
elemrefs
attribute. Refer to
Section 4.17.3.2 for detailed information
on the use of this attribute.
The hierarchical level of the link target associated with the
pointer
element is designated
with the optional
level
attribute. Refer to
Section 4.17.3.3 for detailed information
on the use of this attribute.
The optional attribute
targetclass
may
be applied to the pointer
element
to designate the link target class or type (i.e.,
“Chapter,” “Level 4 Section,” etc.) This
specification does not recommend any particular system/scheme for the
targetclass
attribute value;
Publication authors should use a consistent,
uniform system. User agents may use the value
of the targetclass
, but are
not required to do so. The datatype of
targetclass
is
CDATA
.
label
ElementThe optional label
element
may be used to designate a structural level
“label” for the link target title, allowing user agents
greater flexibility in presentation of the link target title
information.
When the label
element is present,
user agents, when presenting the link target title,
must place the character content of the
label
element before the character
content of the title
element. (Note
that Publication authors, when including
label
element content,
should not include that information in the
title
element content.)
The content model of the label
element is the same as that described in
Section 4.2.4.
An example of the use of the label
element:
<pointer elemrefs="binder#sec4.17.3"> <label><xhtml:strong>4.17.3</xhtml:strong></label> <title><xhtml:em>The Pointer Element</xhtml:em></title> <desc>This section describes how to use the Pointer element</desc> </pointer>
A user agent may choose to render the above link target title simply as:
4.17.3 The Pointer Element
Or, the user agent may choose to insert
leader characters between the
label
and
title
information:
4.17.3............The Pointer Element
elemrefs
AttributeThe link target of pointer
is
designated using the required
elemrefs
attribute, whose value
must be one or two pointer references.
When there are two pointer references, they
must be separated by
white space characters.
Each pointer reference must target a
specific element within a content document resource (the content
document is identified by its resource identifier.) If an element is
not specified in the pointer reference, then the element is assumed to
be the content document root element. The first pointer reference in
the elemrefs
attribute value is
considered the “entry point” for the link target; the
purpose of the optional second pointer reference is to designate,
if needed (such as for accessibility), the full scope of the link
target, as described below. (The overarching framework, which
references the Binder Document specification, defines the pointer
reference scheme.)
The pointer reference value of
orp-nullref
is reserved in this
specification to communicate to user agents, when used as the first
pointer reference in the elemrefs
attribute value, that the associated link target is
“null.” This feature allows Binder authors to include link
target titles in the Navigation Set which do not link to anything
— useful for certain types of navigation themes such as those
based on information classification rather than document
structure.
User agents must display null link targets in the Navigation Set, at the appropriate hierarchical level (if designated), treating them like any normal link targets except that they do not link to anything. However, user agents should indicate to the user, by some means, the difference between null link targets and ordinary link targets.
The scope (or “breadth”) of the link target, which
user agents may use to enable some capability
requiring that information, depends upon the number of pointer
references in the elemrefs
attribute:
When there is only one pointer reference, the scope is assumed to be the entire contents of the referenced element.
(Note: Publication authors should appropriately markup the content documents, and properly assign the pointer references, so the scope of each link target, as assumed by user agents, is that intended by the Publication author.)
When there are two pointer references, the scope is assumed to be the individual scopes of each pointer reference, and everything in between. The two pointer references may be in different content documents provided that both documents are either in the Spine or in one of the composite documents.
The second pointer reference must appear after the first pointer reference. In addition, when the two pointer references are in the same content document, the scope of one must not contain the scope of the other (i.e., one referenced element must not contain the other referenced element.)
When any of the above requirements is not met, the user agent
must ignore the second pointer reference
and treat the elemrefs
attribute
value as a single pointer reference based upon the first pointer
reference value.
Examples:
<pointer elemrefs="chap1#para8"> ... </pointer> <pointer elemrefs="chap1#para8 chap1#para10"> ... </pointer> <pointer elemrefs="chap1#para8 chap3#para5"> ... </pointer> <pointer elemrefs="orp-nullref"> ... </pointer>
In the first pointer
example
above, the pointer reference is to the element with identifier
para8
in the content document with
resource identifier chap1
. It is
assumed the scope of this pointer
is for the entire contents of that element.
In the second pointer
example
above, the scope of the pointer reference is to all the content
within, and between, the elements
para8
and
para10
in the content document with
resource identifier chap1
. The
second pointer reference must appear
in the content document after the first, and each referenced
element may not contain the other, otherwise user agents
must ignore the second pointer reference
and treat the pointer as:
<pointer elemrefs="chap1#para8"> ... </pointer>
In the third pointer
example
above, the scope of the pointer reference is to all the content
within, and between, the element para8
in content document chap1
, and
the element para5
in content document
chap3
. This designation is valid
only if the two content documents appear in the Spine or in the
same composite document, and if the second pointer reference
appears after the first. If this is not the case, then user agents
must ignore the second pointer reference
and treat the pointer as:
<pointer elemrefs="chap1#para8"> ... </pointer>
For the last pointer
example, the
pointer reference
(“orp-nullref
”) declares
the link to be “null.” This means that the link target
information (such as the title) is included in the Navigation Set
presented to the user, but that the link target does not point to
anything. This allows the addition of non-linking information in the
navigational menu presented to users. For example, this
may be useful for Navigation Sets based on
information classification rather than document structure, as noted in
Section 4.17.3.3.
level
AttributeThe optional
level
attribute is used to
designate the hierarchical level of the link target associated with
the pointer
element.
When hierarchical information is supplied for a Navigation Set, user agents must present the hierarchical information in a fashion that allows the user to immediately grasp the hierarchical level of each link target, and the relative hierarchical levels between all of them.
The value of the level
attribute
must be a decimal integer from 1 to 12 (this allows up to 12 levels of
hierarchy, which is likely more than enough for any conceivable
Publication.) When the level
attribute is not applied to pointer
,
the default value is
“1
”.
Notes in using the level
attribute:
In a particular Navigation Set, if the
level
attribute is applied to any
pointer
element, then
level
must be applied to all the
pointer
elements.
When the level
attribute is
applied to the pointer
elements,
the value of level
for the
first pointer
element
must be
“1
”.
Proper hierarchical structure requires that the value of
level
must not increase by more than one from
one pointer
element to the
next.
For a particular Navigation Set, if the
level
attribute is not applied to
the pointer
elements, or the value
of level
is
“1
” for all the
pointer
elements, then the
Navigation Set is considered to be “non-hierarchical”
or “flat.”
If any one of the above listed requirements is not met in a Navigation Set, the user agent must process the Navigation Set as non-hierarchical.
Although hierarchy is usually associated with document structure
(e.g., chapter, section, sub-section, etc.), it
may also be used for building Navigation Sets
based on information classification (for example, refer to
Section 4.17.3.2 on the use of the reserved
orp-nullref
pointer reference value for
the elemrefs
attribute.)
Navigation set example of specifying hierarchical level using
the level
attribute:
<navigation> <primarynav> <title>Table of Contents</title> <pointer elemrefs="book#sec1" level="1"> ... </pointer> <pointer elemrefs="book#sec1.1" level="2"> ... </pointer> <pointer elemrefs="book#sec1.2" level="2"> ... </pointer> <pointer elemrefs="book#sec2" level="1"> ... </pointer> <pointer elemrefs="book#sec2.1" level="2"> ... </pointer> <pointer elemrefs="book#sec2.2" level="2"> ... </pointer> <pointer elemrefs="book#sec2.2.1" level="3"> ... </pointer> <pointer elemrefs="book#sec2.2.2" level="3"> ... </pointer> <pointer elemrefs="book#sec2.2.3" level="3"> ... </pointer> <pointer elemrefs="book#sec3" level="1"> ... </pointer> </primarynav> </navigation>
With regards to navigation, when a user accesses a User Set in a Publication, user agents must:
Present to the user, on demand, all the Navigation Sets in the
User Set. Each Navigation Set is to be identified to the user using
the content of the required Navigation
Set title
element.
Identify which Navigation Set is primary.
Present to the user, on demand (if not by default), the link
targets of each Navigation Set. Each link target is identified using
the contents of the required link target
title
and the optional
label
elements (see
Section 4.17.3.1.) Preserve and communicate
the hierarchical level of the link targets when the Navigation Set is
hierarchical (refer to
Section 4.17.3.3.)
Allow the user to actuate any link in the Navigation Set and access the link target content, except when the user does not have the requisite access rights. (Access rights is outside the scope of this specification.)
In addition, user agents should:
Enable the “tour” feature for a Navigation Set when
the tour
attribute value is set to
request
(see
Section 4.17.2.) The “tour”
feature is similar to the
OEBPS
Tours, in that all the link targets in a Navigation Set can be
visited in sequence with simple, “one button” actuation.
(Note that User agents may enable the tours
feature for all Navigation Sets.)
Allow users to access, by some means, the content in the
desc
element which
may be applied at the Navigation Set and
link target levels. The desc
element provides a summary or abstract of the associated
object that may be more descriptive and
lengthy than the contents of the
title
element.
Following is example markup of the Navigation functional part, including two Navigation Sets, one of which is the required primary Navigation Set:
<navigation> <primarynav> <title>Table of Contents</title> <pointer elemrefs="book#sec1" level="1" targetclass="Level 1 Section"> <label>1</label> <title>Introduction to Simplicity</title> <desc> This section provides an introductory overview about simplicity, and why you should care. </desc> </pointer> <pointer elemrefs="book#sec1.1" level="2" targetclass="Level 2 Section"> <label>1.1</label> <title>Conventions Used In This Book</title> <desc> This section describes the conventions used in this book. </desc> </pointer> <pointer elemrefs="book#sec1.2" level="2" targetclass="Level 2 Section"> <label>1.2</label> <title>References Consulted</title> <desc> This section discusses the various references on simplicity consulted by the authors of this book. </desc> </pointer> <pointer elemrefs="book#sec2" level="1" targetclass="Level 1 Section"> <label>2</label> <title>Simplicity Made Simple</title> <desc> This section discusses how to make simplicity simple. It is not a simple thing to do! </desc> </pointer> <pointer elemrefs="book#sec2.1" level="2" targetclass="Level 2 Section"> <label>2.1</label> <title>Simplicity Is Not So Simple</title> <desc> This section explains why simplicity is not simple at all! </desc> </pointer> <pointer elemrefs="book#sec2.2" level="2" targetclass="Level 2 Section"> <label>2.2</label> <title>Three Steps To Make Simplicity Simple</title> <desc> There are three steps that you can do to realize that simplicity is simple. Once you realize this, then all will become simpler. </desc> </pointer> <pointer elemrefs="book#sec2.2.1" level="3" targetclass="Level 3 Section"> <label>2.2.1</label> <title>Remember That Simple Is Simple</title> <desc> Remember that simple is simple! That is, simple is not complicated at all. Once you realize that, then everything gets a little bit simpler. </desc> </pointer> <pointer elemrefs="book#sec2.2.2" level="3" targetclass="Level 3 Section"> <label>2.2.2</label> <title>Simple Is Also Good</title> <desc> Simple is good! Who believes that complicated is good? </desc> </pointer> <pointer elemrefs="book#sec2.2.3" level="3" targetclass="Level 3 Section"> <label>2.2.3</label> <title>Simple Is Where It's At</title> <desc> Finally, realize that simple is cool while complicated is not. Who wants to be un-hip? </desc> </pointer> <pointer elemrefs="book#sec3" level="1" targetclass="Level 1 Section"> <label>3</label> <title>Conclusion</title> <desc> In conclusion, simplicity is simple, and simple is good, therefore simplicity is good. Don't worry, be happy (and simple)! </desc> </pointer> </primarynav> <altnav tour="request"> <title>List of Illustrations</title> <desc> This Navigation Set provides links to all the illustrations used in this Book about simplicity. The noted artist for these illustrations is John "Simple-Minded" Doe. </desc> <pointer elemrefs="book#illus1"> <title>Illustration 1: Simple Is As Simple Does</title> </pointer> <pointer elemrefs="book#illus2"> <title>Illustration 2: Simple Is Beautiful</title> </pointer> <pointer elemrefs="book#illus3"> <title>Illustration 3: Simple Simon Met a Pieman</title> </pointer> <pointer elemrefs="book#illus4"> <title>Illustration 4: We Are The Simple People</title> </pointer> </altnav> </navigation>
A user agent might choose to visually present the primary Navigation Set of the above markup example (which is hierarchical in this example), something as follows. Note that the particular formatting used in the rendering below is example only — this specification does not recommend any particular visual (or other) presentation of Navigation Sets, allowing user agent developers to innovate in this area. Each link target item in the example below must include an active (or “null”, see Section 4.17.3.2) hypertext link to the link target. The user agent should provide some mechanism to allow the user to see the longer description/abstract for each link target; for example, mousing over a link target will bring up a popup window containing the longer description.
Table of Contents 1 Introduction to Simplicity 1.1 Conventions Used In This Book 1.2 References Consulted 2 Simplicity Made Simple 2.1 Simplicity Is Not So Simple 2.2 Three Steps To Make Simplicity Simple 2.2.1 Remember That Simple Is Simple 2.2.2 Simple Is Also Good 2.2.3 Simple Is Where It's At 3 Conclusion
Likewise, the user agent might present the alternate,
non-hierarchical Navigation Set in the markup example as follows. Note
that the Binder Document author chose to keep the “Illustration
n” portion of the link target titles within
title
and not move them to
label
elements, as the Binder
Document author could have done.
List of Illustrations Illustration 1: Simple Is As Simple Does Illustration 2: Simple Is Beautiful Illustration 3: Simple Simon Met a Pieman Illustration 4: We Are The Simple People
The Resource Descriptions functional part, headed by the non-empty
resdescs
element, provides textual
descriptions for resources. All non-text content media resources used
in the User Set (including cover and
thumbnail resources)
must be provided textual descriptions
using this mechanism.
Providing textual descriptions for non-text content media resources is very important for accessibility. Nevertheless, user agents should, by one or more mechanisms, allow any user to access the textual descriptions even when the user is able to view or listen to the non-text content media resources.
The Resource Descriptions functional part may also be used to provide textual descriptions for other resources used in the User Set, such as styling documents, but this is not its primary purpose, and user agents are not required to display or use that information.
The resdescs
element
may contain any number of non-empty
resdesc
elements. Each
resdesc
element, whose content model
is identical to the title
element
(see Section 4.2.4), contains the textual
description associated with the resource identifier(s) designated
with the required residrefs
attribute (see Section 4.2.3.)
Example:
<resdescs> <resdesc residrefs="imag1"> Photo of President Reagan onboard <xhtml:em>Air Force One</xhtml:em> </resdesc> <resdesc residrefs="cover-avi cover-png cover-jpg"> Book cover, depicting a Honolulu sunset. Video and still versions. </resdesc> <resdesc residrefs="css-a"> Style sheet used for styling the Introduction. </resdesc> </resdescs>
Examples of conforming Binder Documents are located in the examples directory at the OpenReader Consortium web site.
Like any specification, the Binder Document specification will evolve to meet ever-changing needs, unforeseen developments, and new opportunities. This non-normative section details the tentative current plans (as of the date of release of this specification) of the OpenReader Publication Working Group regarding future versions of this specification. Although these plans are tentative, and subject to change, Binder Document authors and user agent developers may find this section useful for future planning.
XML technologies support:
Schema support:
Expand the Character Entity References Common Set
Improve internationalization (e.g., clarify bi-directionality)
Identifiers:
Navigation:
Improve compatibility with, and support of, NCX of the Digital Talking Book and the related NIMAS 1.0 Specifications
Standardized thematic descriptors for Navigation Sets
Resources:
Digital signatures and encryption
Namespaced Identifiers (for resources having their own “standalone” namespaced identifiers outside of the Binder)
External Metadata Support
Embedded Font Support (may require special Binder declarations)
Standardized thematic descriptors for User Sets
Additions and changes to this specification will be implemented in a careful, thoughtful and controlled fashion to maintain stability, compatibility, and conformant usage. Thus, an implementation timetable for additions and changes cannot be given.
The URL to the normative Binder Document DTD, Version 1.0, is http://openreader.org/dtd/bnd10.dtd .
This DTD includes the Character Entity References Common Set, Version 1.0, by parameter-entity reference to http://openreader.org/dtd/ent10.ent . (Refer to Section 4.2.6.)
The Binder Document DTD, Version 1.0, is reproduced below (non-normative):
<!-- Title: Binder Document DTD Version: 1.0 Date: 13 May 2006 DTD-URL: http://openreader.org/dtd/bnd10.dtd Reference: Binder Document Specification, Version 1.0 RefURL: http://openreader.org/spec/bnd10.html Rights: Copyright 2006 OpenReader Consortium. All rights reserved. Contributors: Jon Noring (editor) Usage (root level): <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE binder PUBLIC "-//OpenReader//DTD Binder Document 1.0//EN" "http://openreader.org/dtd/bnd10.dtd"> <binder xmlns="http://openreader.org/namespaces/orp-binder/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xhtml="http://www.w3.org/1999/xhtml" xml:lang="en-US"> <!== Binder content goes here ==> </binder> Usage Notes: 1. The encoding in the XML declaration must be specified, and must either be 'UTF-8' or 'UTF-16'. 2. The default and prefixed namespaces in the <binder> element must be specified, even though declared FIXED in this DTD. 3. 'xml:lang' may be any language-countrycode pair per RFC 3066. --> <!-- ************************************************************* --> <!-- ELEMENT ENTITIES ............................................ --> <!ENTITY % XHTMLInline.class "xhtml:code | xhtml:em | xhtml:kbd | xhtml:samp | xhtml:span | xhtml:strong | xhtml:sub | xhtml:sup | xhtml:var"> <!-- ATTRIBUTE ENTITIES .......................................... --> <!ENTITY % Common.attrib "xml:id ID #IMPLIED xml:lang NMTOKEN #IMPLIED comment CDATA #IMPLIED"> <!-- NAMESPACE ENTITIES .......................................... --> <!ENTITY % binder.xmlns "'http://openreader.org/namespaces/orp-binder/1.0/'"> <!ENTITY % xhtml.xmlns "'http://www.w3.org/1999/xhtml'"> <!ENTITY % dc.xmlns "'http://purl.org/dc/elements/1.1/'"> <!-- CHARACTER ENTITY REFERENCES COMMON SET 1.0 .................. --> <!ENTITY % ORPCharEnt PUBLIC "-//OpenReader//DTD Character Entities 1.0//EN" "http://openreader.org/dtd/ent10.ent"> %ORPCharEnt; <!-- DATATYPE ENTITIES ........................................... --> <!-- Single IRI --> <!ENTITY % IRI.datatype "CDATA"> <!-- Two or more IRIs, white space separated --> <!ENTITY % IRIs.datatype "CDATA"> <!-- One or more Unicode code points, white space separated, in form 'U+xxxx'. --> <!ENTITY % Unicode.datatype "CDATA"> <!-- ELEMENTS AND ATTRIBUTES ..................................... --> <!-- ROOT AND TOP LEVEL STRUCTURE ................................ --> <!ELEMENT binder (pubid, resources, metadata?, userset+)> <!ATTLIST binder xmlns %IRI.datatype; #FIXED %binder.xmlns; xmlns:dc %IRI.datatype; #FIXED %dc.xmlns; xmlns:xhtml %IRI.datatype; #FIXED %xhtml.xmlns; xml:lang NMTOKEN #REQUIRED xml:id ID #IMPLIED comment CDATA #IMPLIED> <!ELEMENT pubid (id)> <!ATTLIST pubid %Common.attrib;> <!ELEMENT resources (item)+> <!ATTLIST resources %Common.attrib; lang NMTOKENS #IMPLIED> <!ELEMENT metadata (dublincore)?> <!ATTLIST metadata %Common.attrib;> <!ELEMENT userset (pubtitle, characters?, spine, linear?, composites?, elemsub?, equivs?, cover?, thumbnail?, styling?, navigation, resdescs?)> <!ATTLIST userset usid ID #REQUIRED mode (oeb|web) #REQUIRED lang NMTOKENS #REQUIRED title CDATA #IMPLIED xml:lang NMTOKEN #IMPLIED comment CDATA #IMPLIED> <!-- CHILDREN ELEMENTS OF <pubid> ................................ --> <!ELEMENT id (#PCDATA)> <!ATTLIST id %Common.attrib; type NMTOKEN #FIXED 'primary' idns NMTOKEN #REQUIRED ver (1|2|3|4|5|6|7|8|9|10|11|12) #REQUIRED> <!-- CHILDREN ELEMENTS OF <resources> ............................ --> <!ELEMENT item EMPTY> <!ATTLIST item resid ID #REQUIRED resource %IRI.datatype; #REQUIRED media-type %IRI.datatype; #REQUIRED lang NMTOKENS #IMPLIED xml:lang NMTOKEN #IMPLIED comment CDATA #IMPLIED> <!-- DESCENDENT ELEMENTS OF <metadata>............................ --> <!ELEMENT dublincore (dc:contributor | dc:coverage | dc:creator | dc:date | dc:description | dc:format | dc:identifier | dc:language | dc:publisher | dc:relation | dc:rights | dc:source | dc:subject | dc:title | dc:type)*> <!ATTLIST dublincore xml:id ID #IMPLIED xml:lang NMTOKEN #REQUIRED comment CDATA #IMPLIED> <!ELEMENT dc:contributor (#PCDATA | %XHTMLInline.class;)*> <!ATTLIST dc:contributor %Common.attrib; role NMTOKENS #REQUIRED file-as CDATA #IMPLIED usidrefs IDREFS #IMPLIED> <!ELEMENT dc:coverage (#PCDATA | %XHTMLInline.class;)*> <!ATTLIST dc:coverage %Common.attrib;> <!ELEMENT dc:creator (#PCDATA | %XHTMLInline.class;)*> <!ATTLIST dc:creator %Common.attrib; role NMTOKENS #REQUIRED file-as CDATA #IMPLIED usidrefs IDREFS #IMPLIED> <!ELEMENT dc:date (#PCDATA | %XHTMLInline.class;)*> <!ATTLIST dc:date %Common.attrib; event CDATA #REQUIRED> <!ELEMENT dc:description (#PCDATA | %XHTMLInline.class;)*> <!ATTLIST dc:description %Common.attrib;> <!ELEMENT dc:format (#PCDATA | %XHTMLInline.class;)*> <!ATTLIST dc:format %Common.attrib;> <!ELEMENT dc:identifier (#PCDATA | %XHTMLInline.class;)*> <!ATTLIST dc:identifier %Common.attrib; idns NMTOKEN #REQUIRED ver (1|2|3|4|5|6|7|8|9|10|11|12) #IMPLIED> <!ELEMENT dc:language (#PCDATA | %XHTMLInline.class;)*> <!ATTLIST dc:language %Common.attrib; usage (primary|secondary) #REQUIRED> <!ELEMENT dc:publisher (#PCDATA | %XHTMLInline.class;)*> <!ATTLIST dc:publisher %Common.attrib;> <!ELEMENT dc:relation (#PCDATA | %XHTMLInline.class;)*> <!ATTLIST dc:relation %Common.attrib;> <!ELEMENT dc:rights (#PCDATA | %XHTMLInline.class;)*> <!ATTLIST dc:rights %Common.attrib;> <!ELEMENT dc:source (#PCDATA | %XHTMLInline.class;)*> <!ATTLIST dc:source %Common.attrib;> <!ELEMENT dc:subject (#PCDATA | %XHTMLInline.class;)*> <!ATTLIST dc:subject %Common.attrib; scheme CDATA #IMPLIED> <!ELEMENT dc:title (#PCDATA | %XHTMLInline.class;)*> <!ATTLIST dc:title %Common.attrib;> <!ELEMENT dc:type (#PCDATA | %XHTMLInline.class;)*> <!ATTLIST dc:type %Common.attrib;> <!-- DESCENDENT ELEMENTS OF <userset> ............................ --> <!-- PUBLICATION TITLE ........................................... --> <!ELEMENT pubtitle (title)+> <!ATTLIST pubtitle %Common.attrib;> <!ELEMENT title (#PCDATA | %XHTMLInline.class;)*> <!ATTLIST title %Common.attrib;> <!-- CHARACTER MANIFEST .......................................... --> <!ELEMENT characters (block | range | point)*> <!ATTLIST characters %Common.attrib;> <!ELEMENT block EMPTY> <!ATTLIST block %Common.attrib; name CDATA #REQUIRED render (important|notimportant) 'notimportant'> <!ELEMENT range EMPTY> <!ATTLIST range %Common.attrib; char %Unicode.datatype; #REQUIRED render (important|notimportant) 'notimportant'> <!ELEMENT point EMPTY> <!ATTLIST point %Common.attrib; char %Unicode.datatype; #REQUIRED render (important|notimportant) 'notimportant'> <!-- SPINE ....................................................... --> <!ELEMENT spine EMPTY> <!ATTLIST spine %Common.attrib; residrefs IDREFS #REQUIRED entry %IRI.datatype; #IMPLIED> <!-- LINEAR ORDER ................................................ --> <!ELEMENT linear EMPTY> <!ATTLIST linear %Common.attrib; residrefs IDREFS #REQUIRED> <!-- COMPOSITE DOCUMENTS ......................................... --> <!ELEMENT composites (composite)*> <!ATTLIST composites %Common.attrib;> <!ELEMENT composite EMPTY> <!ATTLIST composite %Common.attrib; residrefs IDREFS #REQUIRED> <!-- ELEMENT SUBSTITUTION ........................................ --> <!ELEMENT elemsub (element)*> <!ATTLIST elemsub %Common.attrib;> <!ELEMENT element EMPTY> <!ATTLIST element %Common.attrib; elemref %IRI.datatype; #REQUIRED residrefs IDREFS #REQUIRED> <!-- NON-TEXT MEDIA EQUIVALENTS ...................................--> <!ELEMENT equivs (equiv)*> <!ATTLIST equivs %Common.attrib;> <!ELEMENT equiv EMPTY> <!ATTLIST equiv %Common.attrib; residrefs IDREFS #REQUIRED> <!-- COVER ....................................................... --> <!ELEMENT cover EMPTY> <!ATTLIST cover %Common.attrib; residrefs IDREFS #REQUIRED> <!-- THUMBNAIL ................................................... --> <!ELEMENT thumbnail EMPTY> <!ATTLIST thumbnail %Common.attrib; residrefs IDREFS #REQUIRED> <!-- STYLING ..................................................... --> <!ELEMENT styling (styleset)*> <!ATTLIST styling %Common.attrib;> <!ELEMENT styleset (title, style+)> <!ATTLIST styleset %Common.attrib; priority (primary|alternate) #REQUIRED media (all|braille|embossed| handheld|print|projection| screen|speech|tty|tv) #REQUIRED> <!ELEMENT style EMPTY> <!ATTLIST style %Common.attrib; cdidrefs IDREFS #IMPLIED cssidrefs IDREFS #REQUIRED> <!-- NAVIGATION .................................................. --> <!ELEMENT navigation (altnav*, primarynav, altnav*)> <!ATTLIST navigation %Common.attrib;> <!ELEMENT primarynav (title, desc?, pointer+)> <!ATTLIST primarynav %Common.attrib; tour (request|norequest) 'norequest'> <!ELEMENT altnav (title, desc?, pointer+)> <!ATTLIST altnav %Common.attrib; tour (request|norequest) 'norequest'> <!ELEMENT desc (#PCDATA | %XHTMLInline.class;)*> <!ATTLIST desc %Common.attrib;> <!ELEMENT pointer (label?, title, desc?)> <!ATTLIST pointer %Common.attrib; elemrefs %IRIs.datatype; #REQUIRED level (1|2|3|4|5|6|7|8|9|10|11|12) '1' targetclass CDATA #IMPLIED> <!ELEMENT label (#PCDATA | %XHTMLInline.class;)*> <!ATTLIST label %Common.attrib;> <!-- RESOURCE DESCRIPTIONS ....................................... --> <!ELEMENT resdescs (resdesc)*> <!ATTLIST resdescs %Common.attrib;> <!ELEMENT resdesc (#PCDATA | %XHTMLInline.class;)*> <!ATTLIST resdesc %Common.attrib; residrefs IDREFS #REQUIRED> <!-- XHTML NAMESPACE INLINE ELEMENTS ............................. --> <!ELEMENT xhtml:code (#PCDATA | %XHTMLInline.class;)*> <!ATTLIST xhtml:code %Common.attrib; class NMTOKENS #IMPLIED> <!ELEMENT xhtml:em (#PCDATA | %XHTMLInline.class;)*> <!ATTLIST xhtml:em %Common.attrib; class NMTOKENS #IMPLIED> <!ELEMENT xhtml:kbd (#PCDATA | %XHTMLInline.class;)*> <!ATTLIST xhtml:kbd %Common.attrib; class NMTOKENS #IMPLIED> <!ELEMENT xhtml:samp (#PCDATA | %XHTMLInline.class;)*> <!ATTLIST xhtml:samp %Common.attrib; class NMTOKENS #IMPLIED> <!ELEMENT xhtml:span (#PCDATA | %XHTMLInline.class;)*> <!ATTLIST xhtml:span %Common.attrib; class NMTOKENS #IMPLIED> <!ELEMENT xhtml:strong (#PCDATA | %XHTMLInline.class;)*> <!ATTLIST xhtml:strong %Common.attrib; class NMTOKENS #IMPLIED> <!ELEMENT xhtml:sub (#PCDATA | %XHTMLInline.class;)*> <!ATTLIST xhtml:sub %Common.attrib; class NMTOKENS #IMPLIED> <!ELEMENT xhtml:sup (#PCDATA | %XHTMLInline.class;)*> <!ATTLIST xhtml:sup %Common.attrib; class NMTOKENS #IMPLIED> <!ELEMENT xhtml:var (#PCDATA | %XHTMLInline.class;)*> <!ATTLIST xhtml:var %Common.attrib; class NMTOKENS #IMPLIED>