Skip to content

OCF Document: RFC3986 or RFC3987? #808

Description

@iherman

(I know this is a huge can of worms, and I regularly get it wrong; maybe it is the case this time, too...)

The issue is what the allowed characters are for file names. More specifically, what the allowed characters are for the value of full-path in the container.xml file.

  • In Section 3.3, the reference is to RFC3986 (URI) and RFC3987 (IRI) are both listed. Which sounds about right; this means a file name of the form /téléphone is all right, although this would not be acceptable via RFC3986. (Although I wonder whether the reference to RFC3986 is necessary in the first place; in this respect RFC3987 supersedes RFC3986, doesn't it)
  • In 3.5.3.1, towards the end, only RFC3986 is reference in the defintion of full-path. This seems to be in contradiction with what is in Section 3.3
  • Section 3.4 seems to give a specific definition for file names; it is not clear to me whether this is necessary. Isn't it enough to refer to the same RFC3987 (well, the path portion thereof) to avoid mixup? Isn't it enough to quote RFC3987 and, if necessary, list the possible restrictions (I have not checked which of the characters listed in the 4th bullet point are excluded from the path segment of an IRI anyway) when it comes to file name? (Yes, of course, we have to refer to the last portion of an IRI path as the file name.)
  • And here is the rub: I think there is a discrepancy at this moment. If I correctly interpret either RFC3986 or RFC3987, the space (i.e., U+0020) character is excluded from the path, whereas Section 3.4 does not exclude it. This means that the examples are also wrong, because full-path="EPUB/Great Expectation.opf" is not a valid value for @full-path, although it is indeed a valid file name per Section 3.4:-(

As i said, it is a can of worm, and one of you guys may prove me wrong in my interpretation... But if I am right, my proposal would be:

  1. Use RFC3987 only in the references (with a possible note relating it to RFC3986)
  2. Reduce section 3.4 by saying that a file name should be conform to the path of RFC3987, minus a number of characters (if necessary, ie, check whether all those entries are necessary)
  3. Change the examples...

Metadata

Metadata

Labels

Spec-EPUB3The issue affects the core EPUB 3.X Recommendation

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions