dtbook-2005-1 errata proposal

This document summarizes proposed fixes to issues reported for dtbook-2005-1.dtd.

The proposal covers issues reported up to 2006-04-01.

Intended outcomes: release of dtbook-2005-2.dtd, accompanied by noted issue resolution at zed issue tracking system.

Issue list with links to summary and proposed solution

[45]:bridgehead not allowed in div [closed]
[51]:Suggested content model change for front matter [closed]
[52]:Title attribute does not allow an id [closed]
[113]:Extend DTD for inline or block elements [closed]
[117]:Support namespaces in dtbook extensions [closed]
[102]:idref attribute of noteref and annoref is CDATA [closed]
[122]:Nested prodnotes [closed]
[123]:Block elements in inline context [closed]
[48]:Specification reference wrong - RFC 1556 [closed]
[50]|[68]:Add xml:space to div attlist|Preserve Whitepace in Block Element [closed]
[65]:DTD problem and missing spec definition [closed]
[119]:lang attribute [closed]
[120]:XML PI - isn't a pi [closed]
[121]:xml:space [closed]
[92]:Change content model for the showin attribute [closed]
[93]:Add notshowin attribute to DTD [closed]
[129]:style attribute in coreattrs entity [closed]

Summaries and proposed solutions

[45]:bridgehead not allowed in div

issue 45 at zed tracker

proposed solution (JP)

Per the comments in the DTD, bridgehead "may occur only subsidiary to one of the hierarchic elements." (that is, level1, etc.) It currently can only be a direct sibling of these elements. We could just add to the div content model, if we feel that doesn't violate the intent of bridgehead. div content model would then be:

(%block; | %inlineinblock; | doctitle | docauthor | covertitle | bridgehead)+

At that point, we might as well use %docblockorinline; which expands to the same thing, and hence divs become exactly the same as levels (minus the hierarchy).

Causes backwards incompatibility: no: this is a content model extension

agreed solution

Use %docblockorinline to add bridgehead to div content model

[51]:Suggested content model change for front matter

issue 51 at zed tracker

proposed solution (JP)

The content model provided does not mandate doctitle, and suggests that doctitle and covertitle are mutually exclusive alternatives (not true). Suggest this content model instead:

(doctitle+, (covertitle | docauthor | level | level1)*)

This mandates that doctitle be the first element. Current content model is:

(doctitle | docauthor | covertitle | level | level1)+

Causes backwards incompatibility: yes, any existing files with no doctitle, or with anything other than doctitle at the start will be broken by this.

agreed solution

Modify the content model to the following: (doctitle,covertitle?,docauthor*,(level|level1*))

[52]:Title attribute does not allow an id

issue 52 at zed tracker
The report mistakenly refers to the title element as the "title attribute" - the report regards the title element.

proposed solution (MG)

Add reference to %coreattrs in title attlist. (dtd line 1763)

Causes backwards incompatibility: no, this is a content model extension.

agreed solution

Add reference to %coreattrs in title attlist. (dtd line 1763)

[113]:Extend DTD for inline or block elements

issue 113 at zed tracker

proposed solution (JP)

The problem here is the result of the expansion of the %flow entity in the DTD. %flow represents the (almost) full set of inlines and blocks for those elements whose content models encompass both (e.g., prodnote). %flow is made up of %inlinenoprodnote and %blocknoimggroup, which themselves include %externalinline and %externalblock (respectively). Therefore, if an extension declares the same element to be in both %externalinline and %externalblock, any element using %flow will have duplicate items in the content model.

To fix this, we can follow Neil's suggestion of having three entities for external element inclusion: %externalinline, %externalblock, and %externalFlow. These are referenced as follows:

  1. New entity %inlineFlow -- just like %inlinenoprodnote, but minus %externalinline
  2. New entity %blockFlow -- just like %blocknoimggroup, but minus %externalblock
  3. Content model for %flow uses %inlineFlow, %blockFlow, and %externalFlow
  4. Content models for all places where %externalinline is used add %externalFlow as well
  5. Content models for all places where %externalblock is used add %externalFlow as well

A similar fix will need to be made to %flownopagenum, which uses %inlinenopagenum.

agreed solution

(This decision was based on 20060405 committee concall)

To have four parameter entities defined that provide means to allow an individual book to modularly extend the content models:

Revise documentation comment (section 3) in the DTD.

Causes backwards incompatibility: no

[117]:Support namespaces in dtbook extensions

issue 117 at zed tracker

proposed solution (JP)

The answer here, as indicated above, is to add another entity -- %externalNamespaces -- that is defined by the extension within the internal DTD subset. The content would be the attribute declaration for a namespace prefix declaration. This is added to the attribute list for <dtbook> so that the prefix can be referenced throughout the dtbook document.

(The other change we might want to include here would be dtbsmil changes to support namespaces as well: use of the systemRequired attribute, for example. Note that the latest version of the MathML extension use this. Is that out of scope for us?)

Causes backwards incompatibility: no, this is a content model extension

agreed solution

Add the %externalNamespaces entity to the %coreattrs entity to, in alignment with namespace aware contexts, allow namespace declarations or redeclarations to appear on any element node in the document entity. Consequently, the Dtbook DTD itself does not enforce root element declaration; this is instead considered a constraint that if wanted should be enforced by higher level rulesetting instances.

Note that the DTD defaulting prohibitions as per section 16.1 of the Z3986-2005 specification apply to this construct. Further and consequently, documentation must explain that the basic use pattern of the %externalNamespaces entity is for example to expand "xmlns:m #IMPLIED" into the attlist.

karlmarkus

[102]:idref attribute of noteref and annoref is CDATA

issue 102 at zed tracker

proposed solution (LE)

Two things needs to be decided. First of all, what is the intention of the 2005-1 DTD (and the 2002 version) regarding the idref attribute? Is it an IDREF or an URI? The upcoming version of ZedVal currently treats the attributes as IDREFs.

For an updated DTD, there are two main options:

1. Make idref attribute IDREF The links will be validated by the DTD itself, but there will be no support for inter-document links, such as in a book containing one DTBook file per chapter. Are there any multi-document books available today?

2. Make idref attribute %URI This will support inter-document links, but the link between a noteref and its note will not be validated by the DTD.

The basic question here is: Should inter-document references between noterefs and notes be supported for multi-document books? As the size of a DTBook document increases, the performance of players degrade. Hence there might be a reason to allow for multi-document books. But if a noteref is in one document and the corresonding note is in another document, when following the note reference (and going back), a player must either:

a. Keep both documents in memory, which would lose some of the benefits of having more than one textual document.

or

b. (Re)parse the document when switching, which could lead to performance degradation.

idref is not a good name for an attribute that is not of type IDREF. One option would be to rename the attribute to href or similar if we are going for the %URI version to support inter-document links. This change would of course not be backward compatible.

Causes backwards incompatibility: possibly, depending on which route is taken

agreed solution

The z3986-2005 spec explicitly allows for multi-content-doc DTBs. Therefore: clarify that the idref attribute is a URI; both in DTD and in SG. SG to clarify that both internal "#idref" and external "doc.xml#idref" are allowed. DMFC provided schematron schema will include value valiation.

[122]:Nested prodnotes

issue 122 at zed tracker

proposed solution (LE)

Prodnotes may be used in inline (as well as block) context, and since prodnotes may contain inline content, they are easily nested. It would be fairly straight forward to disallow the direct nesting of prodnote elements (see below), but is there any benefit in doing that? Indirect nesting would still be possible (i.e. via another element, such as div).

  1. New entity %dtbookblocknoimggroupnoprodnote, like %dtbookblocknoimggroup but no prodnote
  2. New entity %blocknoimggroupnoprodnote, like %blocknoimggroup but with %dtbookblocknoimggroupnoprodnote instead of %dtbookblocknoimggroup
  3. New entity %flownoprodnote, like %flow but with %blocknoimggroupnoprodnote instead of %blocknoimggroup
  4. Change content model of prodnote to %flownoprodnote

This change would not be backwards compatible since documents having directly nested prodnotes would not validate against a modified DTD. However, I suspect very few (if any) documents have directly nested prodnotes.

Suggested change: None for now. This issue is better solved using schemas.

Causes backwards incompatibility: no, if the suggestion on postponed action is followed [MG: We can publish an informal Schematron schema right now that generates warning for issues like these]

agreed solution

No change in this minor version upgrade. This issue is placed in the future direction category, and will be adressed when we move from DTDs to a schema language.

[123]:Block elements in inline context

issue 123 at zed tracker

proposed solution (LE)

"Once you go inline, you can never go back"

The prodnote and imggroup elements can be used in an inline context, but may contain block elements.

One way to solve this would be to have separate elements for block and inline use. Another way would be to switch to a schema based description of the content model where the content of a element may depend on the context.

Yet another way for fixing this issue would be to only allow prodnotes in block (or flow) context. Then, a prodref element is introduced to point to a prodnote, just like a noteref is pointing to a note. In all inline context, only prodref would be allowed. Now only the content model of caption in imggroup would have to be changed from flow to inline and all block elements in inline context would be gone. This change would however be a major change in the way prodnotes work, so I don't think this change should be made in an updated DTD.

Suggested change: None for now. This issue can better be solved in the next (schema based) version of Daisy.

Causes backwards incompatibility: no, if the suggestion on postponed action is followed [MG: We can publish an informal Schematron schema right now that generates warning for issues like these]

agreed solution

No change in this minor version upgrade. This issue is placed in the future direction category, and will be adressed when we move from DTDs to a schema language.

[48]:Specification reference wrong - RFC 1556

issue 48 at zed tracker

proposed solution (MG)

RFC1556 "Handling of Bi-directional Texts in MIME" is not the primary reference for the generic mime 'type' attribute, although 1556 is still the correct reference for expression of charsets/bidi.

The reference should be changed to RFC2046 as suggested.

Causes backwards incompatibility: no, both RFCs describe syntaxii valid in mime space

agreed solution

The reference will be changed to RFC2046.

[50]|[68]:Add xml:space to div attlist|Preserve Whitepace in Block Element

issue 50 at zed tracker

issue 68 at zed tracker

proposed solution (MG)

xml:space is a core xml attribute, and should be allowed on any element, by extension of the %coreattrs entity.

agreed solution

extend the %coreattrs entity and %attrsrqd entity the with the xml:space attribute.

Causes backwards incompatibility: no, this is a attribute model extension

[65]:DTD problem and missing spec definition

issue 65 at zed tracker

proposed solution (MG)

  1. fix case diff in dtd comments at line 656; case to use is dc:Title (only first char in localname uppercased) and no other.
  2. fix the 'As a minumum the dc:title meta is required.' comment at line 1144 to include all minimum requirements
  3. Add dublin core normative spec reference to both these spots. The URL to use is "http://purl.org/dc/"

Causes backwards incompatibility: no, based on the assumption that spec prose wins over DTD comments when incompatible.

agreed solution

  1. fix case diff in dtd comments by using 'Dc' instead of 'dc' at line 656
  2. fix the 'As a minumum the dc:title meta is required.' comment at line 1144 to include all minimum requirements
  3. Add dublin core normative spec reference to both these spots. The URL suggested to use is "http://purl.org/dc/"

[119]:lang attribute

issue 119 at zed tracker

proposed solution (MG)

change ATTLIST for bdo to allow xml:lang and not allow lang.

Causes backwards incompatibility: yes.

agreed solution

change ATTLIST for bdo to allow xml:lang and not allow lang.

[120]:XML PI - isn't a pi

issue 120 at zed tracker

proposed solution (MG)

The part of the very verbose and sometimes redundant comment prose referred to starts at 2.1 (line 108) and refers to what is canonically dubbed the "XML Declaration" (production 23 of xml spec).

Propose change to use the term "XML Declaration" instead of current wording.

Heading 2 text needs fixing too; currently "Document tagging content". Suggest using "Document prolog" instead.

When moving to schema, we should make sure to use inline prose as little as possible; maintaining local versions of externally defined constructs is not a good use of time.

agreed solution

Use the term "XML Declaration" instead of current wording at 2.1 (line 108).
Use "Document prolog" instead of "Document tagging content" in heading 2 text.

Causes backwards incompatibility:

[121]:xml:space (MG)

issue 121 at zed tracker

proposed solution

remove this comment and add external reference when doing the coreattrs append described in #i5068.

Causes backwards incompatibility: no

agreed solution

remove this comment and add external reference when doing the coreattrs append described in #i5068.

[92]:Change content model for the showin attribute (LR)

issue 92 at zed tracker

proposed solution

It is my opinion that we should not expand the options for the showin attribute at this time. What are the use cases for it? Will we be using showin as part of the "braille in DTBook" work? How are alternative (conditional) presentation versions handled in the Open Document Format or the Microsoft-ECMA document format?

If I had thought more carefully about this DTD as it currently exists, I would have recommended that showin be required on <book> and that "blp" be the recommended value for it.

We have to decide whether dtbook should be seriously considered as a universal e-book format, or whether it should specialize in being the standard for accessible e-books.

Causes backwards incompatibility: no

agreed solution

No changes to the showin attribute. The showin attribute is being marked as deprecated in the 2005-2 version of the Dtbook DTD. Following more modern conventions that has evolved since showin was added some years ago, the committes intention is for output format specific information to be maintained in separate namespaces, a.k.a. extension modules.

[93]:Add notshowin attribute to DTD (LR)

issue 93 at zed tracker

proposed solution

I have no response to issue 93 at this time, but it would be similar to what I am attaching below for 92. Perhaps I need to become more imaginative, but I feel that we need to implement what we have, as well as solve the math inclusion problem, before we can open up more and more dtbook presentation choices.

Causes backwards incompatibility: no

agreed solution

No addition of a notshowin attribute. The showin attribute is being marked as deprecated in the 2005-2 version of the Dtbook DTD. Following more modern conventions that has evolved since showin was added some years ago, the committes intention is for output format specific information to be maintained in separate namespaces, a.k.a. extension modules.

[129]:style attribute in coreattrs entity

issue 129 at zed tracker

proposed solution

Remove the style attribute from the coreattrs entity.

Causes backwards incompatibility: yes, this is a content model restriction

agreed solution

Remove the style attribute from the coreattrs entity and the attrsrqd entity. The stylesheet entity is no longer referenced and will be deleted.