Load cups into easysw/current.
[thirdparty/cups.git] / standards / rfc3382.txt
1
2
3
4
5
6
7 Network Working Group                                           R. deBry
8 Request for Comments: 3382                     Utah Valley State College
9 Updates: 2910, 2911                                           R. Herriot
10 Category: Standards Track                                     Consultant
11                                                              T. Hastings
12                                                                  K. Ocke
13                                                                P. Zehler
14                                                        Xerox Corporation
15                                                           September 2002
16
17
18                    Internet Printing Protocol (IPP):
19                    The 'collection' attribute syntax
20
21 Status of this Memo
22
23    This document specifies an Internet standards track protocol for the
24    Internet community, and requests discussion and suggestions for
25    improvements.  Please refer to the current edition of the "Internet
26    Official Protocol Standards" (STD 1) for the standardization state
27    and status of this protocol.  Distribution of this memo is unlimited.
28
29 Copyright Notice
30
31    Copyright (C) The Internet Society (2002).  All Rights Reserved.
32
33 Abstract
34
35    This document specifies an OPTIONAL attribute syntax called
36    'collection' for use with the Internet Printing Protocol (IPP/1.0 and
37    IPP/1.1).  A 'collection' is a container holding one or more named
38    values, which are called "member" attributes.  A collection allows
39    data to be grouped like a PostScript dictionary or a Java Map.  This
40    document also specifies the conformance requirements for a definition
41    document that defines a collection attribute.  Finally, this document
42    gives some illustrative example collection attribute definitions that
43    are not intended as actual attribute specifications.
44
45 Table of Contents
46
47    1 Introduction.....................................................3
48    1.1 Problem Statement..............................................3
49    1.2 Solution.......................................................3
50    2 Terminology......................................................4
51    2.1 Conformance Terminology........................................4
52    2.2 Other terminology..............................................5
53    3 Definition of a Collection Attribute.............................5
54    3.1 Information to Include.........................................5
55
56
57
58 deBry, et. al.              Standards Track                     [Page 1]
59 \f
60 RFC 3382         IPP: The 'collection' attribute syntax   September 2002
61
62
63    3.2 Nested Collections.............................................9
64    4 Collection Attributes as Attributes in Operations................9
65    4.1 General Rules..................................................9
66    4.2 Unsupported Values.............................................9
67    5 Example definition of a collection attribute.....................9
68    5.1 media-col (collection)........................................10
69    5.1.1 media-color (type3 keyword | name(MAX)......................10
70    5.1.2 media-size (collection).....................................11
71    5.2 media-col-default (collection)................................11
72    5.3 media-col-ready (1setOf collection)...........................12
73    5.4 media-col-supported (1setOf type2 keyword)....................12
74    6 A Second Example Definition Of A Collection Attribute...........12
75    7 Encoding........................................................13
76    7.1 Additional tags defined for representing a collection
77        attribute value...............................................13
78    7.2 Example encoding: "media-col" (collection)....................14
79    8 Legacy issues...................................................20
80    9 IANA Considerations.............................................20
81    10 Internationalization Considerations............................20
82    11 Security Considerations........................................21
83    12 References.....................................................21
84    Appendix A: Encoding Example of a Simple Collection (Informative).22
85    Appendix B: Encoding Example of 1setOf Collection (Informative)...25
86    Appendix C: Encoding Example of Collection containing 1setOf XXX
87                attribute (Informative)...............................31
88    Appendix D: Description of the Base IPP Documents (Informative)...35
89    Authors' Addresses................................................36
90    Full Copyright Statement..........................................38
91
92 Table of Tables
93
94    Table 1 - "media-col" member attributes...........................10
95    Table 2 - "media-size" collection member attributes...............11
96    Table 3 - Tags defined for encoding the 'collection' attribute
97              syntax .................................................13
98    Table 4 - Overview Encoding of "media-col" collection.............15
99    Table 5 - Example Encoding of "media-col" collection..............16
100    Table 6 - Overview Encoding of simple collection..................22
101    Table 7 - Example Encoding of simple collection...................22
102    Table 8 - Overview Encoding of 1setOf collection..................25
103    Table 9 - Example Encoding of 1setOf collection...................26
104    Table 10 - Overview Encoding of collection with 1setOf value......31
105    Table 11 - Example Encoding of collection with 1setOf value.......32
106
107
108
109
110
111
112
113
114 deBry, et. al.              Standards Track                     [Page 2]
115 \f
116 RFC 3382         IPP: The 'collection' attribute syntax   September 2002
117
118
119 1 Introduction
120
121    This document is an OPTIONAL extension to IPP/1.0 [RFC2565, RFC2566]
122    and IPP/1.1 [RFC2911, RFC2910].  For a description of the base IPP
123    documents see Appendix D.
124
125 1.1 Problem Statement
126
127    The IPP Model and Semantics [RFC2911] supports most of the common
128    data structures that are available in programming languages.  It
129    lacks a mechanism for grouping several attributes of different types.
130    The Java language uses the Map to solve this problem and PostScript
131    has a dictionary.  The new mechanism for grouping attributes together
132    (called 'collection' mechanism) must allow for optional members and
133    the subsequent addition of new members.
134
135    The 'collection' mechanism must be encoded in a manner consistent
136    with existing 1.0 and 1.1 parsing rules (see [RFC2910]).  Current 1.0
137    and 1.1 parsers that don't support the 'collection' mechanism must
138    not confuse collections or parts of a collection they receive with
139    other attributes.
140
141 1.2 Solution
142
143    The new mechanism is a new IPP attribute syntax called a
144    'collection'.  As such, each collection value is a value of an
145    attribute whose attribute syntax type is defined to be a
146    'collection'.  Such an attribute is called a collection attribute.
147    The name of the collection attribute serves to identify the
148    collection value in an operation request or response, as with any
149    attribute value.
150
151    The 'collection' attribute syntax is a container holding one or more
152    named values (i.e., attributes), which are called member attributes.
153    Each collection attribute definition document lists the mandatory and
154    optional member attributes of each collection value.  A collection
155    value is similar to an IPP attribute group in a request or a
156    response, such as the operation attributes group.  They both consist
157    of a set of attributes.
158
159    As with any attribute syntax, the document that defines a collection
160    attribute specifies whether the attribute is single-valued
161    (collection) or multi-valued (1setOf collection).  If the attribute
162    is multi-valued (1setOf collection), each collection value MUST be a
163    separate instance of a single definition of a collection, i.e., it
164    MUST have the same member attributes except for OPTIONAL member
165    attributes.  If we view each collection definition as a separate
166    syntax type, this rule continues the IPP/1.1 notion that each
167
168
169
170 deBry, et. al.              Standards Track                     [Page 3]
171 \f
172 RFC 3382         IPP: The 'collection' attribute syntax   September 2002
173
174
175    attribute has a single type or pattern (e.g., "keyword | name" is a
176    pattern).  Without this rule, the supported values would be more
177    difficult to describe and the mechanism defined in item 4 of section
178    3.1 would not be sufficient.
179
180    The name of each member attribute MUST be unique for a collection
181    attribute, but MAY be the same as the name of a member attribute in
182    another collection attribute and/or MAY be the same as the name of an
183    attribute that is not a member of a collection.  The rules for naming
184    member attributes are given in section 3.1.
185
186    Each member attribute can have any attribute syntax type, including
187    'collection', and can be either single-valued or multi-valued.  The
188    length of a collection value is not limited.  However, the length of
189    each member attribute MUST NOT exceed the limit of its attribute
190    syntax.
191
192    The member attributes in a collection MAY be in any order in a
193    request or response.  When a client sends a collection attribute to
194    the Printer, the order that the Printer stores the member attributes
195    of the collection value and the order returned in a response MAY be
196    different from the order sent by the client.
197
198    A collection value MUST NOT contain two or more member attributes
199    with the same attribute name.  Such a collection is mal-formed.
200    Clients MUST NOT submit such malformed requests and Printers MUST NOT
201    return such malformed responses.  If such a malformed request is
202    submitted to a Printer, the Printer MUST (depending on
203    implementation) either (1) reject the request with the 'client-
204    error-bad-request' status code (see [RFC2911] section 13.1.4.1), or
205    (2) accept the request and use only one of each duplicate member
206    attributes.
207
208 2 Terminology
209
210    This section defines terminology used throughout this document.
211
212 2.1 Conformance Terminology
213
214    Capitalized terms, such as MUST, MUST NOT, REQUIRED, SHOULD, SHOULD
215    NOT, MAY, NEED NOT, and OPTIONAL, have special meaning relating to
216    conformance as defined in BCP 14, RFC 2119 [RFC2119] and [RFC2911],
217    section 12.1.  If an implementation supports the extension defined in
218    this document, then these terms apply; otherwise, they do not.  These
219    terms define conformance to this document only; they do not affect
220    conformance to other documents, unless explicitly stated otherwise.
221
222
223
224
225
226 deBry, et. al.              Standards Track                     [Page 4]
227 \f
228 RFC 3382         IPP: The 'collection' attribute syntax   September 2002
229
230
231 2.2 Other terminology
232
233    This document uses terms such as Job object (or Job), IPP Printer
234    object (or Printer), "operation", "request", response", "attributes",
235    "keywords", and "support".  These terms have special meaning and are
236    defined in the model terminology [RFC2911] section 12.2.  The
237    following additional terms are introduced in this document:
238
239       collection: an attribute syntax in which each attribute value is a
240          set of attributes, called member attributes.
241
242       member attribute: an attribute that is defined to be used as one
243          of the attributes in a collection.
244
245       collection attribute: an attribute whose definition specifies the
246          'collection' attribute syntax and each of the member attributes
247          that MAY occur in a collection attribute value.
248
249 3 Definition of a Collection Attribute
250
251    This section describes the requirements for any collection attribute
252    definition.
253
254 3.1 Information to Include
255
256    When a specification document defines an "xxx" collection attribute,
257    i.e., an attribute whose attribute syntax type is 'collection' or
258    '1setOf collection'; the definition document MUST include the
259    following aspects of the attribute semantics.  Suppose the "xxx"
260    collection attribute contains N member attributes named  "aaa1",
261    "aaa2", ..., "aaaN" ("aaaI" represents any one of these N member
262    attributes).
263
264    1. The name of the collection attribute MUST be specified  (e.g.,
265       "xxx").  The selection of the name "xxx" MUST follow the same
266       rules for uniqueness as for attributes of any other syntax type,
267       (as defined by IPP/1.1) unless "xxx" is a member attribute of
268       another collection.  Then the selection of the name "xxx" MUST
269       follow the rules for uniqueness defined in item 5a) of this list.
270
271    2. The collection attribute syntax MUST be of type 'collection' or
272       '1setOf collection'.
273
274    3. The context of the collection attribute MUST be specified, i.e.,
275       whether the attribute is an operation attribute, a Job Template
276       attribute, a Job Description attribute, a Printer Description
277       attribute, a member attribute of a particular collection
278       attribute, etc.
279
280
281
282 deBry, et. al.              Standards Track                     [Page 5]
283 \f
284 RFC 3382         IPP: The 'collection' attribute syntax   September 2002
285
286
287    4. An "xxx-supported" attribute MUST be specified and it has one of
288       the following two forms:
289
290       a) "xxx-supported" is a "1setOf collection", which enumerates all
291          of the supported collection values of "xxx".  If a collection
292          of this form contains a nested collection, it MUST be of the
293          same form.
294
295          For example, "media-size-supported" might have the values {{x-
296          dimension:210, y-dimension:297},{x-dimension:297, y-
297          dimension:420}} to show that it supports two values of "media
298          size": A4 (210x297) and A3 (297x420).  It does not support
299          other combinations of "x-dimension" and "y-dimension" member
300          attributes, such as 210x420 or 297x297, and it does not support
301          non-enumerated values, such as 420x595.
302
303       b) "xxx-supported" is a "1setOf type2 keyword", which enumerates
304          the names of all of the member attributes of "xxx": "aaa1",
305          "aaa2", ..., "aaaN".  If a collection of this form contains a
306          nested collection, it MAY be of either form.  See item 5f)
307          below for details on supported values of member attributes.
308
309          For example, "media-col-supported" might have the keyword
310          values: "media-size" and "media-color".
311
312    5. The member attributes MUST be defined.  For each member attribute,
313       the definition document MUST provide the following information:
314
315       a) The member attribute's name (e.g., "aaa") MUST be unique within
316          the collection being defined and MUST either:
317
318            i) reuse the attribute name of another attribute (that is
319               unique across the entire IPP attribute name space) and
320               have the same syntax and semantics as the reused attribute
321               (if the condition of item 4b) above is met).  For example,
322               a member attribute definition could reuse the IPP/1.1
323               "media" attribute.
324
325           ii) potentially occur elsewhere in the entire IPP attribute
326               name space.  (if the condition of item 4a) above is met).
327               For example, a member attribute could be "x-dimension",
328               which could potentially occur in another collection or as
329               an attribute outside of a collection.
330
331          iii) be unique across the entire IPP attribute name space (if
332               the condition of item 4b) above is met).  For example, a
333               member attribute could be "media-color" which must be
334               unique across the entire IPP attribute name space.
335
336
337
338 deBry, et. al.              Standards Track                     [Page 6]
339 \f
340 RFC 3382         IPP: The 'collection' attribute syntax   September 2002
341
342
343       b) Whether the member attribute is REQUIRED or OPTIONAL for the
344          Printer to support.
345
346       c) Whether the member attribute is REQUIRED or OPTIONAL for the
347          client to supply in a request.
348
349       d) The member attribute's syntax type, which can be any attribute
350          syntax, including '1setOf X', 'collection', and '1setOf
351          collection'.  If this attribute name reuses the name of another
352          attribute (case of item a1 above), it MUST have the same
353          attribute syntax, including cardinality (whether or not
354          1setOf).
355
356       e) The semantics of the "aaa" member attribute.  The semantic
357          definition MUST include a description of any constraint or
358          boundary conditions the member attribute places on the
359          associated attribute, especially if the attribute reuses the
360          name of another attribute (case of item a1 above).
361
362       f) The supported values for each "aaaI" member attribute (of the
363          member attributes  "aaa1", "aaa2", ..., "aaaN") is specified by
364          one of two mechanisms.
365
366            i) If "xxx-supported" is a "1setOf collection" (see item 4a)
367               above), the value for each "aaaI" is specified in each
368               collection value of "xxx-supported", in the context of
369               other member attributes.  That is, "xxx-supported"
370               enumerates all supported values of "xxx".
371
372           ii) If the value of "xxx-supported" is a "1setOf type2
373               keyword" (see item 4b) above), the supported values of
374               "aaaI" are the values specified by either i) the "aaaI-
375               supported" attribute or ii) the definition of the member
376               attribute "aaaI" within the document defining the "xxx"
377               attribute.  The values of each member attribute "aaaI" are
378               specified independently of other member attributes, though
379               a Printer is not required to support all combinations of
380               supported values.
381
382               For example, "media-col-supported" might have the keyword
383               values: "media-size" and "media-color".  Using the first
384               method for defining supported values (an "aaaI-supported"
385               attribute), the collection values of "media-col" are
386               combinations of values of "media-size-supported" and
387               "media-color-supported".  If "media-size-supported" has
388               the values of '210x297' and '297x420' and "media-color-
389               supported" has the values of 'white' and 'pink', the
390
391
392
393
394 deBry, et. al.              Standards Track                     [Page 7]
395 \f
396 RFC 3382         IPP: The 'collection' attribute syntax   September 2002
397
398
399               Printer might support only the combinations 'white-
400               210x297', 'pink-210x297' and 'white-297x420', and not
401               'pink-297x420'.
402
403               If a collection contains a member "aaaI", whose syntax
404               type is "text", the supported values would probably be
405               defined by the definition of "xxx" rather than by the
406               attribute "aaaI-supported".
407
408       g) the default value of each "aaaI" member attribute if it is
409          OPTIONAL for a client to supply the "aaa" member attribute in a
410          request.  The default value is specified by the attribute's
411          definition within a document and MUST be one of the following:
412
413            i) a fixed default
414
415           ii) a mechanism by which the Printer determines default
416
417          iii) an indefinite default that is left to the implementation.
418
419           iv) an attribute that the Printer uses to determine the
420               default
421
422    6. The default value of "xxx", if a client does not supply it.  The
423       default value is specified by the attribute's definition within a
424       document and MUST be one of the following:
425
426       a) a fixed default
427
428       b) a mechanism by which the Printer determines default
429
430       c) an indefinite default that is left to the implementation
431
432       d) a Printer attribute "xxx-default" which is a collection with
433          the same member attributes as "xxx".  If optional member
434          attributes are absent, the Printer uses the defaulting rules of
435          item 5g) above.
436
437    7. The "xxx-ready (1setOf collection)" attribute, if human
438       intervention is required to make many of the supported values
439       available.  For example, "media-col" is an attribute which has a
440       "ready" attribute.  Most attributes do not have a "ready"
441       attribute.
442
443
444
445
446
447
448
449
450 deBry, et. al.              Standards Track                     [Page 8]
451 \f
452 RFC 3382         IPP: The 'collection' attribute syntax   September 2002
453
454
455 3.2 Nested Collections
456
457    A member attribute may have a syntax type of 'collection' or '1setOf
458    collection', in which case it is called a nested collection
459    attribute.  The rules for a nested collection attribute are the same
460    as for a collection attribute as specified in section 3.1.
461
462 4 Collection Attributes as Attributes in Operations
463
464 4.1 General Rules
465
466    A collection value is like any other IPP/1.1 value, except that it is
467    structured.  The rules for attributes with collection values are the
468    same as for attributes of any other syntax type (see IPP/1.1), be
469    they in any group of a request of a response.
470
471 4.2 Unsupported Values
472
473    The rules for returning an unsupported collection attribute are an
474    extension to the current rules:
475
476    1. If the entire collection attribute is unsupported, then the
477       Printer returns just the collection attribute name with the
478       'unsupported' out-of-band value (see the beginning of [RFC2911]
479       section 4.1) in the Unsupported Attributes Group.
480
481    2. If a collection contains unrecognized, unsupported member
482       attributes and/or conflicting values, the attribute returned in
483       the Unsupported Group is a collection containing the unrecognized,
484       unsupported member attributes, and/or conflicting values.  The
485       unrecognized member attributes have an out-of-band value of
486       'unsupported' (see the beginning of [RFC2911] section 4.1).  The
487       unsupported member attributes and conflicting values have their
488       unsupported or conflicting values.
489
490 5 Example definition of a collection attribute
491
492    In some printing environments, it is desirable to allow the client to
493    select the media by its properties, e.g., weight, color, size, etc.,
494    instead of by name.  In IPP/1.1 (see [RFC2911]), the "media (type3
495    keyword | name) Job Template attribute allows selection by name.  It
496    is tempting to extend the "media" attribute syntax to include
497    "collection", but then existing clients could not understand default
498    or supported media values that use the collection value.  To preserve
499    interoperability, a new attribute MUST BE added, e.g., "media-col
500    (collection)".  The following subsections contain a sample definition
501    of a simplified "media-col" attribute.  The definition follows the
502    rules in section 3.
503
504
505
506 deBry, et. al.              Standards Track                     [Page 9]
507 \f
508 RFC 3382         IPP: The 'collection' attribute syntax   September 2002
509
510
511    All of the example attribute definitions in this document are
512    illustrative examples, rather than actual definitions.  These
513    examples are intended to illustrate how to define collection
514    attributes.  Other documents MUST define collection attributes for
515    use in actual interchange.  Such definitions may be very similar to
516    the examples in this document, since we attempted to pick useful
517    examples.
518
519    Note: we picked the name "media-col" because the name "media" is
520    already in use.  Ordinarily the collection attribute would have a
521    name like any other attribute and would not end in "col".
522
523    The member attributes of "media-col" attribute ("media-color (type 3
524    keyword)" and "media-size (collection)") both follow the naming rules
525    of item 4a3 of section 3, i.e., the names are unique across the
526    entire IPP attribute name space.  The member attributes of the
527    "media-size (collection)" member attribute ("x-dimension
528    (integer(0:MAX))" and "y-dimension (integer(0:MAX))") both follow the
529    naming rules of item 4a2 of section 3, i.e., they potentially occur
530    elsewhere in the IPP attribute name space.
531
532 5.1 media-col (collection)
533
534    The "media-col" (collection) attribute augments the IPP/1.1 [RFC2911]
535    "media" attribute.  This collection attribute enables a client end
536    user to submit a list of media characteristics to the Printer.  When
537    the client specifies media using the "media-col" collection
538    attribute, the Printer object MUST match the requested media exactly.
539    The 'collection' consists of the following member attributes:
540
541                   Table 1 - "media-col" member attributes
542
543         Attribute name  attribute syntax             request  Printer
544                                                               Support
545
546         media-color     type3 keyword | name (MAX)   MAY      MUST
547
548         media-size      collection                   MUST     MUST
549
550    The definitions for the member attributes is given in the following
551    sub-sections:
552
553 5.1.1 media-color (type3 keyword | name(MAX)
554
555    This member attribute identifies the color of the media.  Valid
556    values are 'red', 'white' and 'blue'.
557
558
559
560
561
562 deBry, et. al.              Standards Track                    [Page 10]
563 \f
564 RFC 3382         IPP: The 'collection' attribute syntax   September 2002
565
566
567    The "media-color-supported" (1setOf (type3 keyword | name(MAX)))
568    Printer attribute identifies the values of this "media-color" member
569    attribute that the Printer supports, i.e., the colors supported.
570
571    If the client omits this member attribute, the Printer determines the
572    value in an implementation dependent manner.
573
574 5.1.2 media-size (collection)
575
576    This member attribute identifies the size of the media.  The
577    'collection' consists of the member attributes shown in Table 2:
578
579             Table 2 - "media-size" collection member attributes
580
581         Attribute name    attribute syntax      request   Printer
582                                                           Support
583
584         x-dimension       integer (0:MAX)       MUST      MUST
585
586         y-dimension       integer (0:MAX)       MUST      MUST
587
588    The definitions for the member attributes are given in the following
589    sub-sections:
590
591 5.1.2.1  x-dimension (integer(0:MAX))
592
593    This attribute identifies the width of the media in inch units along
594    the X axis.
595
596 5.1.2.2  y-dimension (integer(0:MAX))
597
598    This attribute identifies the height of the media in inch units along
599    the Y axis.
600
601    The "media-size-supported" (1setOf collection) Printer attribute
602    identifies the values of this "media-size" member attribute that the
603    Printer supports, i.e., the size combinations supported.  The names
604    of the member attributes are the same as the member attributes of the
605    "media-size" collection attribute, namely "x-dimension", and "y-
606    dimension", since they have the same attribute syntax and the same
607    semantics.
608
609 5.2 media-col-default (collection)
610
611    The "media-col-default" Printer attribute specifies the media that
612    the Printer uses, if any, if the client omits the "media-col" and
613    "media".  Job Template attributes in the Job Creation operation and
614    the PDL do not include a media specification.  The member attributes
615
616
617
618 deBry, et. al.              Standards Track                    [Page 11]
619 \f
620 RFC 3382         IPP: The 'collection' attribute syntax   September 2002
621
622
623    are defined in Table 1.  A Printer MUST support the same member
624    attributes for this default collection attribute as it supports for
625    the corresponding "media-col" Job Template attribute.
626
627 5.3 media-col-ready (1setOf collection)
628
629    The "media-col-ready" Printer attribute identifies the media that are
630    available for use without human intervention, i.e., the media that
631    are ready to be used without human intervention.  The collection
632    value MUST have all of the member attributes that are supported in
633    Table 1.
634
635 5.4 media-col-supported (1setOf type2 keyword)
636
637    The "media-col-supported" Printer attribute identifies the keyword
638    names of the member attributes supported in the "media-col"
639    collection Job Template attribute, i.e., the keyword names of the
640    member attributes in Table 1 that the Printer supports.
641
642 6 A Second Example Definition Of A Collection Attribute
643
644    All of the example attribute definitions in this document are
645    illustrative examples, rather than actual definitions.  These
646    examples are intended to illustrate how to define collection
647    attributes.  Other documents MUST define collection attributes for
648    use in actual interchange.  Such definitions may be very similar to
649    the examples in this document, since we attempted to pick useful
650    examples.
651
652    In some printing environments, it is desirable to allow the client to
653    select the media for the job start sheet.  The reason for not adding
654    the 'collection' attribute syntax to the existing "job-sheets" Job
655    Template attribute is the same as for "media".  Instead, a new Job
656    Template attribute is introduced, e.g., "job-sheet-col (collection)".
657
658    The member attributes of "job-sheet-col" attribute ("job-sheets (type
659    3 keyword)" and "media (type3 keyword | name)") both follow the
660    naming rules of item 4a1 of section 3, i.e., they reuse existing IPP
661    attributes.  According to the rules, their supported values come from
662    the existing IPP attributes: "job-sheets-supported" and "media-
663    supported".  However, their default values do not come from "job-
664    sheets-default" and "media-default", respectively.  Rather, the
665    definition of "job-sheet-col" says that "job-sheets (type 3 keyword)"
666    is required and if "media (type3 keyword | name)" is absent, the
667    Printer uses the same media as the rest of the job uses.
668
669
670
671
672
673
674 deBry, et. al.              Standards Track                    [Page 12]
675 \f
676 RFC 3382         IPP: The 'collection' attribute syntax   September 2002
677
678
679    If "job-sheet-col" attribute was defined to contain the member
680    attribute "job-sheet-media (type3 keyword | name)" instead of "media
681    (type3 keyword | name)", then the definition would also have to
682    specify a "job-sheet-media-supported (1setOf (type3 keyword | name))"
683    whose values would be independent of "media-supported (1setOf (type3
684    keyword | name))" and would be set separately by a System
685    Administrator.
686
687    The actual text for the definition of the attribute is left as an
688    exercise for the reader.
689
690 7 Encoding
691
692    This section defines the additional encoding tags used according to
693    [RFC2910] and gives an example of their use.  The encoding tags
694    defined in this document MUST be used by all collection attributes
695    defined in other documents.  However, the example of their use is
696    illustrative only.
697
698 7.1 Additional tags defined for representing a collection attribute
699     value
700
701    The 'collection' attribute syntax uses the tags defined in Table 3.
702
703    Table 3 - Tags defined for encoding the 'collection' attribute syntax
704
705         Tag name         Tag
706                          value     Meaning
707
708         begCollection    0x34      Begin the collection attribute value.
709
710         endCollection    0x37      End the collection attribute value.
711
712         memberAttrName   0x4A      The value is the name of the
713                                    collection member attribute
714
715    When encoding a collection attribute "xxx" that contains an attribute
716    "aaa" and is not inside another collection, the encoding follows
717    these rules:
718
719    1. The beginning of the collection is indicated with a value tag that
720       MUST be syntax type 'begCollection' (0x34) with a name length and
721       Name field that represent the name of the collection attribute
722       ("xxx") as with any attribute, followed by a value.  The Printer
723       MAY ignore the value and its length MAY be 0.  In the future,
724       however, this field MAY contain useful information, such as the
725       collection name (cf. the name of a C struct).
726
727
728
729
730 deBry, et. al.              Standards Track                    [Page 13]
731 \f
732 RFC 3382         IPP: The 'collection' attribute syntax   September 2002
733
734
735    2. Each member attribute is encoded as a sequence of two or more
736       values that appear to be part of a single multi-valued attribute,
737       i.e., 1setOf.  The first value after the 'begCollection' value has
738       the attribute syntax, 'memberAttrName' (0x4A), and its value holds
739       the name of the first member attribute (e.g., "aaa").  The second
740       value holds the first member's attribute value, which can be of
741       any attribute syntax, except 'memberAttrName' or 'endCollection'.
742       If the first member's attribute value is multi-valued, the third
743       value holds the second value of the first member's value.
744       Otherwise, the third value holds the name of second member
745       attribute (e.g., "bbb"), and its attribute syntax is
746       'memberAttrName'.  In this case, the fourth member's value is the
747       value of "bbb".
748
749       Note that the technique of encoding a 'collection' as a '1setOf'
750       makes it easy for a Printer that doesn't support a particular
751       collection attribute (or the collection attribute syntax at all)
752       to simply skip over the entire collection value.
753
754    3. The end of the collection is indicated with a value tag that MUST
755       be syntax type 'endCollection' (e.g., 0x37) and MAY have a zero
756       name length and a zero value length.  In the future, this field
757       MAY contain useful information, such as the collection name that
758       matches the one in the 'begCollection' .
759
760    4. It is valid to have a member attribute that is itself, a
761       collection attribute, i.e., collections can be nested within
762       collections.  This is represented by the occurrence of a member
763       attribute that is of attribute syntax type 'begCollection'.  Such
764       a collection is terminated by a matching 'endCollection'.  The
765       name of such a member attribute is in the immediately preceding
766       value, whose syntax type is 'memberAttrName'.
767
768    5. It is valid for a collection attribute to be multi-valued, i.e.,
769       have more than one collection value.  If the next attribute
770       immediately following the 'endCollection' has a zero name length
771       and a tag of 'begCollection', then the collection attribute is a
772       multi-valued collection, as with any attribute.  This statement
773       applies to collections within collections and collections that are
774       not in collections.
775
776 7.2 Example encoding: "media-col" (collection)
777
778    The collection specified in section 5 is used for the encoding
779    example shown in Table 5.  The example also shows nested collections,
780    since the "media-size" member attribute is a 'collection.  The
781    encoding example represents a blue 4x6-index card and takes 216
782    octets.  The Appendices contain more complex examples.
783
784
785
786 deBry, et. al.              Standards Track                    [Page 14]
787 \f
788 RFC 3382         IPP: The 'collection' attribute syntax   September 2002
789
790
791    Additional examples have been included in the appendices.
792
793    The overall structure of the two collection values can be pictorially
794    represented as:
795
796       "media-col" =
797         {  "media-color" =  'blue';
798            "media-size" =
799            {    "x-dimension" = 6;
800                 "y-dimension" = 4
801              }
802         },
803
804    The full encoding is in table 5.  A simplified view of the encoding
805    looks like this:
806
807            Table 4 - Overview Encoding of "media-col" collection
808
809       Tag Value             Name                  Value
810
811       begCollection         media-col             ""
812
813       memberAttrName        ""                    media-color
814
815       keyword               ""                    blue
816
817       memberAttrName        ""                    media-size
818
819       begCollection         ""                    ""
820
821       memberAttrName        ""                    x-dimension
822
823       integer               ""                    6
824
825       memberAttrName        ""                    y-dimension
826
827       integer               ""                    4
828
829       endCollection         ""                    ""
830
831       endCollection         ""                    ""
832
833
834
835
836
837
838
839
840
841
842 deBry, et. al.              Standards Track                    [Page 15]
843 \f
844 RFC 3382         IPP: The 'collection' attribute syntax   September 2002
845
846
847            Table 5 - Example Encoding of "media-col" collection
848
849       Octets       Symbolic Value  Protocol   comments
850                                    field
851
852       0x34         begCollection   value-tag  beginning of the "media-
853                                               col" collection attribute
854
855       0x0009                       name-      length of (collection)
856                                    length     attribute name
857
858       media-col    media-col       name       name of (collection)
859                                               attribute
860
861       0x0000                       value-     defined to be 0 for this
862                                    length     type
863
864                                               no value (since value-
865                                               length was 0)
866
867       0x4A         memberAttrName  value-tag  starts a new member
868                                               attribute: "media-color"
869
870       0x0000                       name-      defined to be 0 for this
871                                    length     type, so part of 1setOf
872
873                                               no name (since name-length
874                                               was 0)
875
876       0x000B                       value-     length of "media-color"
877                                    length     keyword
878
879       media-color  media-color     value      value is name of 1st
880                                               member attribute
881
882
883       0x44         keyword type    value-tag  keyword type
884
885       0x0000                       name-      0 indicates 1setOf
886                                    length
887
888                                               no name (since name-length
889                                               was 0)
890
891
892
893
894
895
896
897
898 deBry, et. al.              Standards Track                    [Page 16]
899 \f
900 RFC 3382         IPP: The 'collection' attribute syntax   September 2002
901
902
903       Octets       Symbolic Value  Protocol   comments
904                                    field
905
906       0x0004                       value-
907                                    length
908
909       blue         blue            value      value of 1st member
910                                               attribute
911
912
913       0x4A         memberAttrName  value-tag  starts a new member
914                                               attribute: "media-size"
915
916       0x0000                       name-      defined to be 0 for this
917                                    length     type, so part of 1setOf
918
919                                               no name (since name-length
920                                               was 0)
921
922       0x000A                       value-     length of "media-size"
923                                    length     keyword
924
925       media-size   media-size      value      Name of 2nd member
926                                               attribute
927
928       0x34         begCollection   value-tag  Beginning of the "media-
929                                               size" collection attribute
930                                               which is a sub-collection
931
932       0x0000                       name-      0 indicates 1setOf
933                                    length
934
935                                               no name (since name-length
936                                               was 0)
937
938       0x0000                       value-     collection attribute names
939                                    length     have no value
940
941                                               no value (since value-
942                                               length was 0)
943
944       0x4A         memberAttrName  value-tag  starts a new member
945                                               attribute: "x-dimension"
946
947
948
949
950
951
952
953
954 deBry, et. al.              Standards Track                    [Page 17]
955 \f
956 RFC 3382         IPP: The 'collection' attribute syntax   September 2002
957
958
959       Octets       Symbolic Value  Protocol   comments
960                                    field
961
962       0x0000                       name-      defined to be 0 for this
963                                    length     type, so part of 1setOf
964
965                                               no name (since name-length
966                                               was 0)
967
968       0x000B                       value-     length of "x-dimension"
969                                    length     keyword
970
971       x-dimension  x-dimension     value      name of  1st sub-
972                                               collection member
973                                               attribute
974
975
976       0x21         integer type    value-tag  attribute type
977
978       0x0000                       name-      0 indicates 1setOf
979                                    length
980
981                                               no name (since name-length
982                                               was 0)
983
984       0x0004                       value-     length of an integer = 4
985                                    length
986
987       0x0006                       value      value of  1st sub-
988                                               collection member
989                                               attribute
990
991       0x4A         memberAttrName  value-tag  starts a new member
992                                               attribute: "y-dimension"
993
994       0x0000                       name-      defined to be 0 for this
995                                    length     type, so part of 1setOf
996
997                                               no name (since name-length
998                                               was 0)
999
1000       0x000B                       value-     length of the "y-
1001                                    length     dimension" keyword
1002
1003
1004
1005
1006
1007
1008
1009
1010 deBry, et. al.              Standards Track                    [Page 18]
1011 \f
1012 RFC 3382         IPP: The 'collection' attribute syntax   September 2002
1013
1014
1015       Octets       Symbolic Value  Protocol   comments
1016                                    field
1017
1018       y-dimension  y-dimension     value      name of  2nd sub-
1019                                               collection member
1020                                               attribute
1021
1022       0x21         integer type    value-tag  attribute type
1023
1024       0x0000                       name-      0 indicates 1setOf
1025                                    length
1026
1027                                               no name (since name-length
1028                                               was 0)
1029
1030       0x0004                       value-     length of an integer = 4
1031                                    length
1032
1033       0x0004                       value      value of  2nd sub-
1034                                               collection member
1035                                               attribute
1036
1037       0x37         endCollection   value-tag  end of the sub-collection
1038
1039       0x0000                       name-      defined to be 0 for this
1040                                    length     type, so part of 1setOf
1041
1042                                               no name (since name-length
1043                                               was 0)
1044
1045       0x0000                       value-     defined to be 0 for this
1046                                    length     type
1047
1048                                               no value (since value-
1049                                               length was 0)
1050
1051       0x37         endCollection   value-tag  end of the 1st collection
1052                                               value in 1setOf
1053
1054       0x0000                       name-      defined to be 0 for this
1055                                    length     type, so part of 1setOf
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066 deBry, et. al.              Standards Track                    [Page 19]
1067 \f
1068 RFC 3382         IPP: The 'collection' attribute syntax   September 2002
1069
1070
1071       Octets       Symbolic Value  Protocol   comments
1072                                    field
1073
1074                                               no name (since name-length
1075                                               was 0)
1076
1077       0x0000                       value-     defined to be 0 for this
1078                                    length     type
1079
1080                                               no value (since value-
1081                                               length was 0)
1082
1083 8 Legacy issues
1084
1085    IPP 1.x Printers and Clients will gracefully ignore collections and
1086    its member attributes if it does not understand the collection.  The
1087    begCollection and endCollection elements each look like an attribute
1088    with an attribute syntax that the recipient doesn't support and so
1089    should ignore the entire attribute.  The individual member attributes
1090    and their values will look like a 1setOf values of the collection
1091    attribute, so that the Printer simply ignores the entire attribute
1092    and all of its values.  Returning unsupported attributes is also
1093    simple, since only the name of the collection attribute is returned
1094    with the 'unsupported' out-of-band value (see section 4.2).
1095
1096 9 IANA Considerations
1097
1098    The following table provides registration for the 'collection'
1099    attribute syntax defined in this document.  This is to be registered
1100    according to the procedures in RFC 2911 [RFC2911] section 6.3.
1101
1102    Tag value:      Attribute Syntaxes:            Ref.      Section:
1103    collection                                     RFC 3382         3
1104      0x34          begCollection                  RFC 3382       7.1
1105      0x37          endCollection                  RFC 3382       7.1
1106      0x4A          memberAttrName                 RFC 3382       7.1
1107
1108    The resulting attribute syntax registration will be published in the
1109    http://www.iana.org/assignments/ipp-registrations registry.
1110
1111 10 Internationalization Considerations
1112
1113    This attribute syntax by itself has no impact on
1114    internationalization.  However, the member attributes that are
1115    subsequently defined for use in a collection may have
1116    internationalization considerations, as may any attribute, according
1117    to [RFC2911].
1118
1119
1120
1121
1122 deBry, et. al.              Standards Track                    [Page 20]
1123 \f
1124 RFC 3382         IPP: The 'collection' attribute syntax   September 2002
1125
1126
1127 11 Security Considerations
1128
1129    This attribute syntax causes no more security concerns than any other
1130    attribute syntax.  It is only the attributes that are subsequently
1131    defined, to use this or any other attribute syntax, that may have
1132    security concerns, depending on the semantics of the attribute,
1133    according to [RFC2911].
1134
1135 12 References
1136
1137 12.1 Normative References
1138
1139    [RFC2910] Herriot, R., Butler, S., Moore, P. and R. Turner, "Internet
1140              Printing Protocol/1.1: Encoding and Transport", RFC 2910,
1141              September 2000.
1142
1143    [RFC2911] Isaacson, S., deBry, R., Hastings, T., Herriot, R. and P.
1144              Powell, "Internet Printing Protocol/1.1: Model and
1145              Semantics", RFC 2911, September 2000.
1146
1147 12.2 Informative References
1148
1149    [RFC2565] Herriot, R., Butler, S., Moore, P. and R. Tuner, "Internet
1150              Printing Protocol/1.0: Encoding and Transport", RFC 2565,
1151              April 1999.
1152
1153    [RFC2566] deBry, R., Hastings, T., Herriot, R., Isaacson, S. and P.
1154              Powell, "Internet Printing Protocol/1.0: Model and
1155              Semantics", RFC 2566, April 1999.
1156
1157    [RFC2567] Wright, D., "Design Goals for an Internet Printing
1158              Protocol", RFC 2567, April 1999.
1159
1160    [RFC2568] Zilles, S., "Rationale for the Structure and Model and
1161              Protocol for the Internet Printing Protocol", RFC 2568,
1162              April 1999.
1163
1164    [RFC2569] Herriot, R., Hastings, T., Jacobs, N. and J. Martin,
1165              "Mapping between LPD and IPP Protocols", RFC 2569, April
1166              1999.
1167
1168    [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter,
1169              L., Leach, P. and T. Berners-Lee, "Hypertext Transfer
1170              Protocol - HTTP/1.1", RFC 2616, June 1999.
1171
1172    [RFC3196] Hastings, T., Manros, C., Zehler, P., Kugler, C. and H.
1173              Holst, "Internet Printing Protocol/1.1: Implementor's
1174              Guide", RFC 3196, November 2001.
1175
1176
1177
1178 deBry, et. al.              Standards Track                    [Page 21]
1179 \f
1180 RFC 3382         IPP: The 'collection' attribute syntax   September 2002
1181
1182
1183 Appendix A: Encoding Example of a Simple Collection (Informative)
1184
1185    The overall structure of the collection value can be pictorially
1186    represented as:
1187
1188       "media-size" =
1189         {  "x-dimension" = 6;
1190            "y-dimension" = 4
1191         }
1192
1193    A simplified view of the encoding would look like this:
1194
1195              Table 6 - Overview Encoding of simple collection
1196
1197       Tag Value             Name                  Value
1198
1199       begCollection         media-size            ""
1200
1201       memberAttrName        ""                    x-dimension
1202
1203       integer               ""                    6
1204
1205       memberAttrName        ""                    y-dimension
1206
1207       integer               ""                    4
1208
1209       endCollection         ""                    ""
1210
1211       Note: "" represents a name or value whose length is 0.
1212
1213               Table 7 - Example Encoding of simple collection
1214
1215       Octets       Symbolic Value  Protocol   comments
1216                                    field
1217
1218       0x34         begCollection   value-tag  beginning of the "media-
1219                                               size" collection attribute
1220
1221       0x000A                       name-      length of (collection)
1222                                    length     attribute name
1223
1224       media-size   media-size      name       name of (collection)
1225                                               attribute
1226
1227
1228
1229
1230
1231
1232
1233
1234 deBry, et. al.              Standards Track                    [Page 22]
1235 \f
1236 RFC 3382         IPP: The 'collection' attribute syntax   September 2002
1237
1238
1239       Octets       Symbolic Value  Protocol   comments
1240                                    field
1241
1242       0x0000                       value-     defined to be 0 for this
1243                                    length     type
1244
1245                                               no value (since value-
1246                                               length was 0)
1247
1248       0x4A         memberAttrName  value-tag  starts member attribute:
1249                                               "x-dimension"
1250
1251       0x0000                       name-      defined to be 0 for this
1252                                    length     type, so part of 1setOf
1253
1254                                               no name (since name-length
1255                                               was 0)
1256
1257       0x000B                       value-     length of "x-dimension"
1258                                    length     keyword
1259
1260       x-dimension  x-dimension     value      name of  1st collection
1261                                               member attribute
1262
1263
1264       0x21         integer type    value-tag  attribute type
1265
1266       0x0000                       name-      0 indicates 1setOf
1267                                    length
1268
1269                                               no name (since name-length
1270                                               was 0)
1271
1272       0x0004                       value-     length of an integer = 4
1273                                    length
1274
1275       0x0006                       value      value of  1st collection
1276                                               member attribute
1277
1278       0x4A         memberAttrName  value-tag  starts a new member
1279                                               attribute: "y-dimension"
1280
1281       0x0000                       name-      defined to be 0 for this
1282                                    length     type, so part of 1setOf
1283
1284                                               no name (since name-length
1285                                               was 0)
1286
1287
1288
1289
1290 deBry, et. al.              Standards Track                    [Page 23]
1291 \f
1292 RFC 3382         IPP: The 'collection' attribute syntax   September 2002
1293
1294
1295       Octets       Symbolic Value  Protocol   comments
1296                                    field
1297
1298       0x000B                       value-     length of the "y-
1299                                    length     dimension" keyword
1300
1301       y-dimension  y-dimension     value      name of  2nd collection
1302                                               member attribute
1303
1304       0x21         integer type    value-tag  attribute type
1305
1306       0x0000                       name-      0 indicates 1setOf for
1307                                    length     media-size
1308
1309                                               no name (since name-length
1310                                               was 0)
1311
1312       0x0004                       value-     length of an integer = 4
1313                                    length
1314
1315       0x0004                       value      value of  2nd collection
1316                                               member attribute
1317
1318       0x37         endCollection   value-tag  end of the collection
1319
1320       0x0000                       name-      defined to be 0 for this
1321                                    length     type, so part of 1setOf
1322
1323                                               no name (since name-length
1324                                               was 0)
1325
1326       0x0000                       value-     defined to be 0 for this
1327                                    length     type
1328
1329                                               no value (since value-
1330                                               length was 0)
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346 deBry, et. al.              Standards Track                    [Page 24]
1347 \f
1348 RFC 3382         IPP: The 'collection' attribute syntax   September 2002
1349
1350
1351 Appendix B: Encoding Example of 1setOf Collection (Informative)
1352
1353    The overall structure of the collection value can be pictorially
1354    represented as:
1355
1356       "media-size-supported" =
1357         {  "x-dimension" = 6;
1358            "y-dimension" = 4
1359         },
1360         {  "x-dimension" = 3;
1361            "y-dimension" = 5
1362         };
1363
1364    A simplified view of the encoding would look like this:
1365
1366              Table 8 - Overview Encoding of 1setOf collection
1367
1368       Tag Value              Name                 Value
1369
1370       begCollection          media-size-          ""
1371                              supported
1372
1373       memberAttrName         ""                   x-dimension
1374
1375       integer                ""                   6
1376
1377       memberAttrName         ""                   y-dimension
1378
1379       integer                ""                   4
1380
1381       endCollection          ""                   ""
1382
1383       begCollection          ""                   ""
1384
1385       memberAttrName         ""                   x-dimension
1386
1387       integer                ""                   3
1388
1389       memberAttrName         ""                   y-dimension
1390
1391       integer                ""                   5
1392
1393       endCollection          ""                   ""
1394
1395
1396
1397
1398
1399
1400
1401
1402 deBry, et. al.              Standards Track                    [Page 25]
1403 \f
1404 RFC 3382         IPP: The 'collection' attribute syntax   September 2002
1405
1406
1407               Table 9 - Example Encoding of 1setOf collection
1408
1409       Octets       Symbolic Value  Protocol   comments
1410                                    field
1411
1412       0x34         begCollection   value-tag  beginning of the "media-
1413                                               size-supported (1setOf
1414                                               collection" attribute
1415
1416       0x00014                      name-      length of (collection)
1417                                    length     attribute name
1418
1419       media-size-  media-size-     name       name of (collection)
1420       supported    supported                  attribute
1421
1422       0x0000                       value-     defined to be 0 for this
1423                                    length     type
1424
1425                                               no value (since value-
1426                                               length was 0)
1427
1428       0x4A         memberAttrName  value-tag  starts member attribute:
1429                                               "x-dimension"
1430
1431       0x0000                       name-      defined to be 0 for this
1432                                    length     type, so part of 1setOf
1433
1434                                               no name (since name-length
1435                                               was 0)
1436
1437       0x000B                       value-     length of "x-dimension"
1438                                    length     keyword
1439
1440       x-dimension  x-dimension     value      name of  1st collection
1441                                               member attribute
1442
1443       0x21         integer type    value-tag  attribute type
1444
1445       0x0000                       name-      0 indicates 1setOf
1446                                    length
1447
1448                                               no name (since name-length
1449                                               was 0)
1450
1451
1452
1453
1454
1455
1456
1457
1458 deBry, et. al.              Standards Track                    [Page 26]
1459 \f
1460 RFC 3382         IPP: The 'collection' attribute syntax   September 2002
1461
1462
1463       Octets       Symbolic Value  Protocol   comments
1464                                    field
1465
1466       0x0004                       value-     length of an integer = 4
1467                                    length
1468
1469       0x0006                       value      value of  1st collection
1470                                               member attribute
1471
1472       0x4A         memberAttrName  value-tag  starts member attribute:
1473                                               "y-dimension"
1474
1475       0x0000                       name-      defined to be 0 for this
1476                                    length     type, so part of 1setOf
1477
1478                                               no name (since name-length
1479                                               was 0)
1480
1481       0x000B                       value-     length of the "y-
1482                                    length     dimension" keyword
1483
1484       y-dimension  y-dimension     value      name of  2nd collection
1485                                               member attribute
1486
1487       0x21         integer type    value-tag  attribute type
1488
1489       0x0000                       name-      0 indicates 1setOf
1490                                    length
1491
1492                                               no name (since name-length
1493                                               was 0)
1494
1495       0x0004                       value-     length of an integer = 4
1496                                    length
1497
1498       0x0004                       value      value of  2nd collection
1499                                               member attribute
1500
1501       0x37         endCollection   value-tag  end of the collection
1502
1503       0x0000                       name-      defined to be 0 for this
1504                                    length     type, so part of 1setOf
1505
1506                                               no name (since name-length
1507                                               was 0)
1508
1509
1510
1511
1512
1513
1514 deBry, et. al.              Standards Track                    [Page 27]
1515 \f
1516 RFC 3382         IPP: The 'collection' attribute syntax   September 2002
1517
1518
1519       Octets       Symbolic Value  Protocol   comments
1520                                    field
1521
1522       0x0000                       value-     defined to be 0 for this
1523                                    length     type
1524
1525                                               no value (since value-
1526                                               length was 0)
1527
1528       0x34         begCollection   value-tag  beginning of the 2nd
1529                                               member of the 1setOf
1530                                               "sizes-avail " collection
1531                                               attribute
1532
1533       0x0000                       name-      Zero length name indicates
1534                                    length     this is member of previous
1535                                               attribute
1536
1537                                    name       no name (since name-length
1538                                               was 0)
1539
1540       0x0000                       value-     defined to be 0 for this
1541                                    length     type
1542
1543                                               no value (since value-
1544                                               length was 0)
1545
1546       0x4A         memberAttrName  value-tag  starts member attribute:
1547                                               "x-dimension"
1548
1549       0x0000                       name-      defined to be 0 for this
1550                                    length     type, so part of 1setOf
1551
1552                                               no name (since name-length
1553                                               was 0)
1554
1555       0x000B                       value-     length of "x-dimension"
1556                                    length     keyword
1557
1558       x-dimension  x-dimension     value      name of  1st collection
1559                                               member attribute
1560
1561       0x21         integer type    value-tag  attribute type
1562
1563
1564
1565
1566
1567
1568
1569
1570 deBry, et. al.              Standards Track                    [Page 28]
1571 \f
1572 RFC 3382         IPP: The 'collection' attribute syntax   September 2002
1573
1574
1575       Octets       Symbolic Value  Protocol   comments
1576                                    field
1577
1578       0x0000                       name-      0 indicates 1setOf
1579                                    length
1580
1581                                               no name (since name-length
1582                                               was 0)
1583
1584       0x0004                       value-     length of an integer = 4
1585                                    length
1586
1587       0x0003                       value      value of  1st collection
1588                                               member attribute
1589
1590       0x4A         memberAttrName  value-tag  starts member attribute:
1591                                               "y-dimension"
1592
1593       0x0000                       name-      defined to be 0 for this
1594                                    length     type, so part of 1setOf
1595
1596                                               no name (since name-length
1597                                               was 0)
1598
1599       0x000B                       value-     length of the "y-
1600                                    length     dimension" keyword
1601
1602       y-dimension  y-dimension     value      name of  2nd collection
1603                                               member attribute
1604
1605       0x21         integer type    value-tag  attribute type
1606
1607       0x0000                       name-      0 indicates 1setOf
1608                                    length
1609
1610                                               no name (since name-length
1611                                               was 0)
1612
1613       0x0004                       value-     length of an integer = 4
1614                                    length
1615
1616       0x0005                       value      value of  2nd collection
1617                                               member attribute
1618
1619
1620
1621
1622
1623
1624
1625
1626 deBry, et. al.              Standards Track                    [Page 29]
1627 \f
1628 RFC 3382         IPP: The 'collection' attribute syntax   September 2002
1629
1630
1631       Octets       Symbolic Value  Protocol   comments
1632                                    field
1633
1634       0x37         endCollection   value-tag  end of the 1setOf
1635                                               collection value
1636
1637       0x0000                       name-      defined to be 0 for this
1638                                    length     type, so part of 1setOf
1639
1640                                               no name (since name-length
1641                                               was 0)
1642
1643       0x0000                       value-     defined to be 0 for this
1644                                    length     type
1645
1646                                               no value (since value-
1647                                               length was 0)
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682 deBry, et. al.              Standards Track                    [Page 30]
1683 \f
1684 RFC 3382         IPP: The 'collection' attribute syntax   September 2002
1685
1686
1687 Appendix C: Encoding Example of Collection containing 1setOf XXX
1688             attribute (Informative)
1689
1690    The overall structure of the collection value can be pictorially
1691    represented as:
1692
1693       "wagons" =
1694         {  "colors" = red, blue;
1695            "sizes" = 4, 6, 8
1696         }
1697
1698    A simplified view of the encoding would look like this:
1699
1700        Table 10 - Overview Encoding of collection with 1setOf value
1701
1702             Tag Value                Name                Value
1703
1704             begCollection            wagons              ""
1705
1706             memberAttrName           ""                  colors
1707
1708             keyword                  ""                  red
1709
1710             keyword                  ""                  blue
1711
1712             memberAttrName           ""                  sizes
1713
1714             integer                  ""                  4
1715
1716             integer                  ""                  6
1717
1718             integer                  ""                  8
1719
1720             endCollection            ""                  ""
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738 deBry, et. al.              Standards Track                    [Page 31]
1739 \f
1740 RFC 3382         IPP: The 'collection' attribute syntax   September 2002
1741
1742
1743         Table 11 - Example Encoding of collection with 1setOf value
1744
1745       Octets       Symbolic Value  Protocol   comments
1746                                    field
1747
1748       0x34         begCollection   value-tag  beginning of the "wagons"
1749                                               collection attribute
1750
1751       0x0005                       name-      length of (collection)
1752                                    length     attribute name
1753
1754       wagons       wagons          name       name of (collection)
1755                                               attribute
1756
1757       0x0000                       value-     defined to be 0 for this
1758                                    length     type
1759
1760                                               no value (since value-
1761                                               length was 0)
1762
1763       0x4A         memberAttrName  value-tag  starts a new member
1764                                               attribute: "colors"
1765
1766       0x0000                       name-      defined to be 0 for this
1767                                    length     type, so part of 1setOf
1768
1769                                               no name (since name-length
1770                                               was 0)
1771
1772       0x0006                       value-     length of "colors" keyword
1773                                    length
1774
1775       colors       colors          value      value is name of 1st
1776                                               member attribute
1777
1778       0x44         keyword type    value-tag  keyword type
1779
1780       0x0000                       name-      0 indicates 1setOf wagons
1781                                    length
1782
1783                                               no name (since name-length
1784                                               was 0)
1785
1786       0x0004                       value-
1787                                    length
1788
1789
1790
1791
1792
1793
1794 deBry, et. al.              Standards Track                    [Page 32]
1795 \f
1796 RFC 3382         IPP: The 'collection' attribute syntax   September 2002
1797
1798
1799       Octets       Symbolic Value  Protocol   comments
1800                                    field
1801
1802       blue         blue            value      value of 1st member
1803                                               attribute
1804
1805       0x44         keyword type    value-tag  keyword type
1806
1807       0x0000                       name-      0 indicates 1setOf wagons
1808                                    length
1809
1810                                               no name (since name-length
1811                                               was 0)
1812
1813       0x0003                       value-
1814                                    length
1815
1816       red          red             value      value of 1st member
1817                                               attribute
1818
1819       0x4A         memberAttrName  value-tag  starts a new member
1820                                               attribute: "sizes"
1821
1822       0x0000                       name-      defined to be 0 for this
1823                                    length     type, so part of 1setOf
1824
1825                                               no name (since name-length
1826                                               was 0)
1827
1828       0x0005                       value-     length of "length-avail"
1829                                    length     keyword
1830
1831       sizes        sizes           value      Name of 2nd member
1832                                               attribute
1833
1834       0x21         integer type    value-tag  attribute type
1835
1836       0x0000                       name-      0 indicates 1setOf wagons
1837                                    length
1838
1839                                               no name (since name-length
1840                                               was 0)
1841
1842       0x0004                       value-     length of an integer = 4
1843                                    length
1844
1845
1846
1847
1848
1849
1850 deBry, et. al.              Standards Track                    [Page 33]
1851 \f
1852 RFC 3382         IPP: The 'collection' attribute syntax   September 2002
1853
1854
1855       Octets       Symbolic Value  Protocol   comments
1856                                    field
1857
1858       0x0004                       value      1st value for 1setOf
1859                                               integer attribute
1860
1861       0x21         integer type    value-tag  attribute type
1862
1863       0x0000                       name-      0 indicates 1setOf
1864                                    length
1865
1866                                               no name (since name-length
1867                                               was 0)
1868
1869       0x0004                       value-
1870                                    length     length of an integer = 4
1871
1872       0x0006                       value      2nd value for 1setOf
1873                                               integer attribute
1874
1875       0x21         integer type    value-tag  attribute type
1876
1877       0x0000                       name-      0 indicates 1setOf
1878                                    length
1879
1880                                               no name (since name-length
1881                                               was 0)
1882
1883       0x0004                       value-     length of an integer = 4
1884                                    length
1885
1886       0x0008                       value      3rd  value for 1setOf
1887                                               integer attribute
1888
1889       0x37         endCollection   value-tag  end of the collection
1890
1891       0x0000                       name-      defined to be 0 for this
1892                                    length     type, so part of 1setOf
1893
1894                                               no name (since name-length
1895                                               was 0)
1896
1897       0x0000                       value-     defined to be 0 for this
1898                                    length     type
1899
1900
1901
1902
1903
1904
1905
1906 deBry, et. al.              Standards Track                    [Page 34]
1907 \f
1908 RFC 3382         IPP: The 'collection' attribute syntax   September 2002
1909
1910
1911       Octets       Symbolic Value  Protocol   comments
1912                                    field
1913
1914                                               no value (since value-
1915                                               length was 0)
1916
1917 Appendix D: Description of the Base IPP Documents (Informative)
1918
1919    The base set of IPP documents includes:
1920
1921       Design Goals for an Internet Printing Protocol [RFC2567]
1922       Rationale for the Structure and Model and Protocol for the
1923       Internet Printing Protocol [RFC2568]
1924       Internet Printing Protocol/1.1: Model and Semantics [RFC2911]
1925       Internet Printing Protocol/1.1: Encoding and Transport [RFC2910]
1926       Internet Printing Protocol/1.1: Implementer's Guide [RFC3196]
1927       Mapping between LPD and IPP Protocols [RFC2569]
1928
1929    The "Design Goals for an Internet Printing Protocol" document takes a
1930    broad look at distributed printing functionality, and it enumerates
1931    real-life scenarios that help to clarify the features that need to be
1932    included in a printing protocol for the Internet.  It identifies
1933    requirements for three types of users: end users, operators, and
1934    administrators.  It calls out a subset of end user requirements that
1935    are satisfied in IPP/1.0 [RFC2566, RFC2565].  A few OPTIONAL operator
1936    operations have been added to IPP/1.1 [RFC2911, RFC2910].
1937
1938    The "Rationale for the Structure and Model and Protocol for the
1939    Internet Printing Protocol" document describes IPP from a high level
1940    view, defines a roadmap for the various documents that form the suite
1941    of IPP specification documents, and gives background and rationale
1942    for the IETF IPP working group's major decisions.
1943
1944    The "Internet Printing Protocol/1.1: Model and Semantics" document
1945    describes a simplified model with abstract objects, their attributes,
1946    and their operations.  The model introduces a Printer and a Job.  The
1947    Job supports multiple documents per Job.  The model document also
1948    addresses how security, internationalization, and directory issues
1949    are addressed.
1950
1951    The "Internet Printing Protocol/1.1: Encoding and Transport" document
1952    is a formal mapping of the abstract operations and attributes defined
1953    in the model document onto HTTP/1.1 [RFC2616].  It also defines the
1954    encoding rules for a new Internet MIME media type called
1955    "application/ipp".  This document also defines the rules for
1956    transporting over HTTP a message body whose Content-Type is
1957    "application/ipp".  This document defines the 'ipp' scheme for
1958    identifying IPP printers and jobs.
1959
1960
1961
1962 deBry, et. al.              Standards Track                    [Page 35]
1963 \f
1964 RFC 3382         IPP: The 'collection' attribute syntax   September 2002
1965
1966
1967    The "Internet Printing Protocol/1.1: Implementer's Guide" document
1968    gives insight and advice to implementers of IPP clients and IPP
1969    objects.  It is intended to help them understand IPP/1.1 and some of
1970    the considerations that may assist them in the design of their client
1971    and/or IPP object implementations.  For example, a typical order of
1972    processing requests is given, including error checking.  Motivation
1973    for some of the specification decisions is also included.
1974
1975    The "Mapping between LPD and IPP Protocols" document gives some
1976    advice to implementers of gateways between IPP and LPD (Line Printer
1977    Daemon) implementations.
1978
1979 Authors' Addresses
1980
1981    Roger deBry
1982    Utah Valley State College
1983    Orem, UT 84058
1984
1985    Phone: (801) 222-8000
1986    EMail: debryro@uvsc.edu
1987
1988
1989    Tom Hastings
1990    Xerox Corporation
1991    737 Hawaii St.  ESAE 231
1992    El Segundo, CA  90245
1993
1994    Phone: 310-333-6413
1995    Fax: 310-333-5514
1996    EMail: hastings@cp10.es.xerox.com
1997
1998
1999    Robert Herriot
2000    Consultant
2001    706 Colorado Ave
2002    Palo Alto, CA 94303
2003
2004    Phone: 650-327-4466
2005    Fax: 650-327-4466
2006    EMail: bob@herriot.com
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018 deBry, et. al.              Standards Track                    [Page 36]
2019 \f
2020 RFC 3382         IPP: The 'collection' attribute syntax   September 2002
2021
2022
2023    Kirk Ocke
2024    Xerox Corp.
2025    800 Phillips Rd
2026    M/S 128-30E
2027    Webster, NY 14580
2028
2029    Phone: (585) 442-4832
2030    EMail: KOcke@crt.xerox.com
2031
2032
2033    Peter Zehler
2034    Xerox Corp.
2035    800 Phillips Rd
2036    M/S 128-30E
2037    Webster, NY 14580
2038
2039    Phone: (585) 265-8755
2040    EMail: PZehler@crt.xerox.com
2041
2042    IPP Web Page:  http://www.pwg.org/ipp/
2043    IPP Mailing List:  ipp@pwg.org
2044
2045    To subscribe to the ipp mailing list, send the following email:
2046
2047      1) send it to majordomo@pwg.org
2048      2) leave the subject line blank
2049      3) put the following two lines in the message body:
2050           subscribe ipp
2051           end
2052
2053    Implementers of this specification document are encouraged to join
2054    the IPP Mailing List in order to participate in any discussions of
2055    clarification issues and review of registration proposals for
2056    additional attributes and values.  In order to reduce spam the
2057    mailing list rejects mail from non-subscribers, so you must subscribe
2058    to the mailing list in order to send a question or comment to the
2059    mailing list.
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074 deBry, et. al.              Standards Track                    [Page 37]
2075 \f
2076 RFC 3382         IPP: The 'collection' attribute syntax   September 2002
2077
2078
2079 Full Copyright Statement
2080
2081    Copyright (C) The Internet Society (2002).  All Rights Reserved.
2082
2083    This document and translations of it may be copied and furnished to
2084    others, and derivative works that comment on or otherwise explain it
2085    or assist in its implementation may be prepared, copied, published
2086    and distributed, in whole or in part, without restriction of any
2087    kind, provided that the above copyright notice and this paragraph are
2088    included on all such copies and derivative works.  However, this
2089    document itself may not be modified in any way, such as by removing
2090    the copyright notice or references to the Internet Society or other
2091    Internet organizations, except as needed for the purpose of
2092    developing Internet standards in which case the procedures for
2093    copyrights defined in the Internet Standards process must be
2094    followed, or as required to translate it into languages other than
2095    English.
2096
2097    The limited permissions granted above are perpetual and will not be
2098    revoked by the Internet Society or its successors or assigns.
2099
2100    This document and the information contained herein is provided on an
2101    "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
2102    TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
2103    BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
2104    HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
2105    MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
2106
2107 Acknowledgement
2108
2109    Funding for the RFC Editor function is currently provided by the
2110    Internet Society.
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130 deBry, et. al.              Standards Track                    [Page 38]
2131 \f