Tom,
It should be pointed out that this does change the current syntax for custom
size names, in that the "size-name" will be mandatory. This part is
optional in the current draft.
Also, I would like a clarification. Does this proposal completely remove
the size ABNF from the document? Or, is the ABNF included with a note
indicating where to get the latest? Although it may be somewhat confusing,
it would be cleaner to only include the reference to the ABNF.
Ron
-----Original Message-----
From: Hastings, Tom N [mailto:hastings at cp10.es.xerox.com]
Sent: Monday, July 09, 2001 10:57 AM
To: ipp (E-mail)
Subject: IPP> MED - Proposed final ABNF for Media Size Self Describing
Names
Ron and I want to publish a final version of the Media Standardized Name
standard for Last Call. There are three standards that require its use, so
we need to complete the Media standard. One is UPnP Basic Printing
Template. Another is IPP FAX.
Please send any comments on this proposed ABNF BEFORE we publish the next
draft. Silence will be interpreted as agreeing with the ABNF.
****************************************************************
Please send any comments by Tuesday, July 17, 2001.
****************************************************************
There has been the suggestion on the mailing list that the ABNF should be a
single production, including the custom part and the future registered class
name part as is common practice.
We are also agreeing to retain the explicit list of class names in the ABNF.
When a new size name is registered which needs a new class name, then the
ABNF will be updated to include the new class name. The updated ABNF will
be available on the PWG site as a flat text file in a published and stable
URL.
Advantages of this approach:
1. All of the ABNF for the Media Size Self Describing Name is specified as a
single ABNF production, so that code can be written that will be stable,
even as new media size names are registered with new class names. This is
the common practice for other standards that use ABNF.
2. Which class names go with which units is part of the ABNF, so that it is
clear that using the wrong set of units with a class name violates the ABNF
and permits a parser to detect such mal-formed ABNF.
3. Using a single "custom" class name (rather than one for in and one for
mm) simplifies the parsing for custom names because the parser needs to look
for one special prefix ("custom"), as with Media Type and Media Color,
rather than for, say, "custom-in" and "custom-mm" class names. Since
administrators are defining the custom sizes, not vendors, whether they
choose in or mm units will depend on their users.
Disadvantages of this approach:
1. When new class names are registered, the existing parsers won't be able
to validate that the units are correct, unless they access the PWG web site
for the current ABNF. (The standard will NOT require implementations to
access the PWG web site to get the current ABNF, nor does it require that
implementations detect corrupt names that use the wrong units).
The ABNF flat file will have comments at the beginning to identify the date
and version of the standard and the date and version of the ABNF. The ABNF
date and minor version number will be updated every time it is updated. The
ABNF follows RFC 2234.
Here is the proposed final ABNF as it will appear in the flat file on the
PWG site in:
ftp://ftp.pwg.org/pub/pwg/standards/pwg5101-abnf.txt:
; ABNF for the Media Size Self-Describing Name
; Part of the IEEE/ISTO 5101.1 Media Standardized Names standard
; For use with the IEEE/ISTO 5101.1 Standard Version 1.0, July 9, 2001
; ABNF version 1.0, July 9, 2001
; This ABNF is updated whenever a new media size class name is registered
; according to the procedures of IEEE/ISTO 5101.1.
media-size-self-describing-name =
( class-in "_" size-name "_" short-dim "x" long-dim "in" ) |
( class-mm "_" size-name "_" short-dim "x" long-dim "mm" )
class-in = "na" | "asme" | "oe" | "custom" | reg-class-in-name
class-mm = "iso" | "jis" | "jpn" | "prc" | "roc" | "om" | "custom" |
reg-class-mm-name
reg-class-in-name = ( lowalpha | digit ) *( lowalpha | digit | "." )
reg-class-mm-name = ( lowalpha | digit ) *( lowalpha | digit | "." )
size-name = ( lowalpha | digit ) *( lowalpha | digit | "-" )
short-dim = dim
long-dim = dim
dim = integer-part [fraction-part] | "0" fraction-part
integer-part = non-zero-digit *digit
fraction-part = "." *digit non-zero-digit
lowalpha = "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" |
"j" | "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r" |
"s" | "t" | "u" | "v" | "w" | "x" | "y" | "z"
non-zero-digit = "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"