| < draft-ietf-ipp-collection-03.txt | draft-ietf-ipp-collection-04.txt > | |||
|---|---|---|---|---|
| INTERNET-DRAFT Roger deBry | INTERNET-DRAFT Roger deBry | |||
| <draft-ietf-ipp-collection-03.txt> Utah Valley State College | <draft-ietf-ipp-collection-04.txt> Utah Valley State College | |||
| T. Hastings | T. Hastings | |||
| Xerox Corporation | Xerox Corporation | |||
| R. Herriot | R. Herriot | |||
| Xerox Corporation | Xerox Corporation | |||
| K. Ocke | K. Ocke | |||
| Xerox Corporation | Xerox Corporation | |||
| P. Zehler | P. Zehler | |||
| Xerox Corporation | Xerox Corporation | |||
| June 29, 2000 | January 24, 2001 | |||
| Internet Printing Protocol (IPP): | ||||
| The 'collection' attribute syntax | ||||
| Copyright (C) The Internet Society (2000). All Rights Reserved. | Internet Printing Protocol (IPP): | |||
| The 'collection' attribute syntax | ||||
| Copyright (C) The Internet Society (2001). All Rights Reserved. | ||||
| Status of this Memo: | Status of this Memo: | |||
| This document is an Internet-Draft and is in full conformance with | ||||
| all provisions of Section 10 of [RFC2026]. Internet-Drafts are | ||||
| working documents of the Internet Engineering Task Force (IETF), its | ||||
| areas, and its working groups. Note that other groups may also | ||||
| distribute working documents as Internet-Drafts. | ||||
| This document is an Internet-Draft and is in full conformance with all | Internet-Drafts are draft documents valid for a maximum of six months | |||
| provisions of Section 10 of [RFC2026]. Internet-Drafts are working | and may be updated, replaced, or obsoleted by other documents at any | |||
| documents of the Internet Engineering Task Force (IETF), its areas, and | time. It is inappropriate to use Internet-Drafts as reference | |||
| its working groups. Note that other groups may also distribute working | material or to cite them other than as "work in progress". | |||
| documents as Internet-Drafts. | ||||
| Internet-Drafts are draft documents valid for a maximum of six months | ||||
| and may be updated, replaced, or obsoleted by other documents at any | ||||
| time. It is inappropriate to use Internet-Drafts as reference material | ||||
| or to cite them other than as "work in progress". | ||||
| The list of current Internet-Drafts can be accessed at | ||||
| http://www.ietf.org/ietf/1id-abstracts.txt | ||||
| The list of Internet-Draft Shadow Directories can be accessed as | The list of current Internet-Drafts can be accessed at | |||
| http://www.ietf.org/shadow.html. | http://www.ietf.org/ietf/1id-abstracts.txt | |||
| Abstract | The list of Internet-Draft Shadow Directories can be accessed as | |||
| http://www.ietf.org/shadow.html. | ||||
| Abstract | ||||
| This document specifies an OPTIONAL attribute syntax called | This document specifies an OPTIONAL attribute syntax called | |||
| 'collection' for use with the Internet Printing Protocol/1.0 | 'collection' for use with the Internet Printing Protocol/1.0 | |||
| (IPP) [RFC2565, RFC2566], IPP/1.1 [ipp-mod, ipp-pro], and | (IPP) [RFC2565, RFC2566], IPP/1.1 [RFC2911, RFC2910], and | |||
| subsequent versions. A 'collection' is a container holding one or | subsequent versions. A 'collection' is a container holding one or | |||
| more named values, which are called "member" attributes. A | more named values, which are called "member" attributes. A | |||
| collection allows data to be grouped like a PostScript dictionary | collection allows data to be grouped like a PostScript dictionary | |||
| or a Java Map. This document also specifies the conformance | or a Java Map. This document also specifies the conformance | |||
| requirements for a definition document that defines a collection | requirements for a definition document that defines a collection | |||
| attribute. | attribute. Finally, this document gives some illustrative | |||
| example collection attribute definitions that are not intended as | ||||
| actual attribute specifications. | ||||
| deBry, Hastings, Herriot, Ocke, Zehler Expires: December 29, 2000 [1] | The full set of IPP documents includes: | |||
| The full set of IPP documents includes: | ||||
| Design Goals for an Internet Printing Protocol [RFC2567] | Design Goals for an Internet Printing Protocol [RFC2567] | |||
| Rationale for the Structure and Model and Protocol for the Internet | Rationale for the Structure and Model and Protocol for the Internet | |||
| Printing Protocol [RFC2568] | Printing Protocol [RFC2568] | |||
| Internet Printing Protocol/1.1: Model and Semantics (this document) | Internet Printing Protocol/1.1: Model and Semantics [RFC2911] | |||
| Internet Printing Protocol/1.1: Encoding and Transport [IPP-PRO] | Internet Printing Protocol/1.1: Encoding and Transport [RFC2910] | |||
| Internet Printing Protocol/1.1: Implementer's Guide [IPP-IIG] | Internet Printing Protocol/1.1: Implementer's Guide [IPP-IIG] | |||
| Mapping between LPD and IPP Protocols [RFC2569] | Mapping between LPD and IPP Protocols [RFC2569] | |||
| The "Design Goals for an Internet Printing Protocol" document takes a | The "Design Goals for an Internet Printing Protocol" document takes a | |||
| broad look at distributed printing functionality, and it enumerates | broad look at distributed printing functionality, and it enumerates | |||
| real-life scenarios that help to clarify the features that need to be | real-life scenarios that help to clarify the features that need to be | |||
| included in a printing protocol for the Internet. It identifies | included in a printing protocol for the Internet. It identifies | |||
| requirements for three types of users: end users, operators, and | requirements for three types of users: end users, operators, and | |||
| administrators. It calls out a subset of end user requirements that are | administrators. It calls out a subset of end user requirements that | |||
| satisfied in IPP/1.0. A few OPTIONAL operator operations have been | are satisfied in IPP/1.0. A few OPTIONAL operator operations have | |||
| added to IPP/1.1. | been added to IPP/1.1. | |||
| The "Rationale for the Structure and Model and Protocol for the Internet | The "Rationale for the Structure and Model and Protocol for the | |||
| Printing Protocol" document describes IPP from a high level view, | Internet Printing Protocol" document describes IPP from a high level | |||
| defines a roadmap for the various documents that form the suite of IPP | view, defines a roadmap for the various documents that form the suite | |||
| specification documents, and gives background and rationale for the IETF | of IPP specification documents, and gives background and rationale | |||
| working group's major decisions. | for the IETF working group's major decisions. | |||
| The "Internet Printing Protocol/1.1: Encoding and Transport" document is | The "Internet Printing Protocol/1.1: Encoding and Transport" document | |||
| a formal mapping of the abstract operations and attributes defined in | is a formal mapping of the abstract operations and attributes defined | |||
| the model document onto HTTP/1.1 [RFC2616]. It defines the encoding | in the model document onto HTTP/1.1 [RFC2616]. It defines the | |||
| rules for a new Internet MIME media type called "application/ipp". This | encoding rules for a new Internet MIME media type called | |||
| document also defines the rules for transporting over HTTP a message | "application/ipp". This document also defines the rules for | |||
| body whose Content-Type is "application/ipp". This document defines a | transporting over HTTP a message body whose Content-Type is | |||
| new scheme named 'ipp' for identifying IPP printers and jobs. | "application/ipp". This document defines a new scheme named 'ipp' | |||
| for identifying IPP printers and jobs. | ||||
| The "Internet Printing Protocol/1.1: Implementer's Guide" document gives | The "Internet Printing Protocol/1.1: Implementer's Guide" document | |||
| insight and advice to implementers of IPP clients and IPP objects. It | gives insight and advice to implementers of IPP clients and IPP | |||
| is intended to help them understand IPP/1.1 and some of the | objects. It is intended to help them understand IPP/1.1 and some of | |||
| considerations that may assist them in the design of their client and/or | the considerations that may assist them in the design of their client | |||
| IPP object implementations. For example, a typical order of processing | and/or IPP object implementations. For example, a typical order of | |||
| requests is given, including error checking. Motivation for some of the | processing requests is given, including error checking. Motivation | |||
| specification decisions is also included. | for some of the specification decisions is also included. | |||
| The "Mapping between LPD and IPP Protocols" document gives some advice | The "Mapping between LPD and IPP Protocols" document gives some | |||
| to implementers of gateways between IPP and LPD (Line Printer Daemon) | advice to implementers of gateways between IPP and LPD (Line Printer | |||
| implementations. | Daemon) implementations. | |||
| Table of Contents | Table of Contents | |||
| 1 Problem Statement.................................................5 | 1 Introduction....................................................5 | |||
| 2 Solution..........................................................5 | 1.1 Problem Statement ............................................5 | |||
| 3 Definition of a Collection Attribute..............................6 | 1.2 Solution .....................................................5 | |||
| 3.1 Information to Include.........................................6 | ||||
| 3.2 Nested Collections.............................................9 | ||||
| 4 Collection Attributes as Attributes in Operations.................9 | ||||
| 4.1 General Rules..................................................9 | ||||
| 4.2 Unsupported Values.............................................9 | ||||
| 5 Example definition of a collection attribute.....................10 | ||||
| 5.1 media-col (collection)........................................10 | ||||
| 5.1.1media-color (type3 keyword | name(MAX)......................11 | ||||
| 5.1.2media-size (collection).....................................11 | ||||
| 5.2 media-col-default (collection)................................12 | ||||
| 5.3 media-col-ready (1setOf collection)...........................12 | ||||
| 5.4 media-col-supported (1setOf type2 keyword)....................12 | ||||
| 6 A Second Example Definition Of A Collection Attribute............12 | ||||
| 7 Encoding.........................................................13 | ||||
| 7.1 Additional tags defined for representing a collection attribute | ||||
| value..............................................................13 | ||||
| 7.2 Example encoding: "media-col" (collection)....................14 | ||||
| 8 Legacy issues....................................................17 | ||||
| 9 IANA Considerations..............................................18 | ||||
| 10 Internationalization Considerations..............................18 | ||||
| 11 Security Considerations..........................................18 | ||||
| 12 References.......................................................18 | ||||
| 13 Author's Addresses...............................................19 | ||||
| 14 Appendix A: Encoding Example of a Simple Collection..............20 | ||||
| 15 Appendix B: Encoding Example of 1setOf Collection................22 | ||||
| 16 Appendix C: Encoding Example of Collection containing 1setOf XXX | ||||
| attribute............................................................26 | ||||
| 17 Appendix D: Full Copyright Statement.............................28 | ||||
| Table of Tables | 2 Terminology.....................................................6 | |||
| 2.1 Conformance Terminology ......................................6 | ||||
| 2.2 Other terminology ............................................7 | ||||
| Table 1 - "media-col" member attributes..............................11 | 3 Definition of a Collection Attribute............................7 | |||
| 3.1 Information to Include .......................................7 | ||||
| 3.2 Nested Collections ..........................................11 | ||||
| Table 2 - "media-size" collection member attributes..................11 | 4 Collection Attributes as Attributes in Operations..............11 | |||
| 4.1 General Rules ...............................................11 | ||||
| 4.2 Unsupported Values ..........................................11 | ||||
| Table 3 - Tags defined for encoding the 'collection' attribute syntax13 | 5 Example definition of a collection attribute...................12 | |||
| 5.1 media-col (collection) ......................................12 | ||||
| 5.1.1media-color (type3 keyword | name(MAX) ......................13 | ||||
| 5.1.2media-size (collection) .....................................13 | ||||
| 5.2 media-col-default (collection) ..............................14 | ||||
| 5.3 media-col-ready (1setOf collection) .........................14 | ||||
| 5.4 media-col-supported (1setOf type2 keyword) ..................14 | ||||
| Table 4 - Overview Encoding of "media-col" collection................15 | 6 A Second Example Definition Of A Collection Attribute..........15 | |||
| Table 5 - Example Encoding of "media-col" collection.................15 | 7 Encoding.......................................................15 | |||
| 7.1 Additional tags defined for representing a collection attribute | ||||
| value16 | ||||
| 7.2 Example encoding: "media-col" (collection) ..................17 | ||||
| Table 6 - Overview Encoding of simple collection.....................21 | 8 Legacy issues..................................................23 | |||
| Table 7 - Example Encoding of simple collection......................21 | 9 IANA Considerations............................................23 | |||
| 9.1 Attribute Syntax Registration ...............................23 | ||||
| Table 8 - Overview Encoding of 1setOf collection.....................23 | 10 Internationalization Considerations............................23 | |||
| Table 9 - Example Encoding of 1setOf collection......................23 | 11 Security Considerations........................................24 | |||
| Table 10 - Overview Encoding of collection with 1setOf value.........26 | ||||
| Table 11 - Example Encoding of collection with 1setOf value..........26 | 12 References.....................................................24 | |||
| 1 Problem Statement | ||||
| The IPP Model and Semantics [ipp-mod] supports most of the common data | 13 Author's Addresses.............................................25 | |||
| structures that are available in programming languages. It lacks a | ||||
| mechanism for grouping several attributes of different types. The Java | ||||
| language uses the Map to solve this problem and PostScript has a | ||||
| dictionary. The new mechanism for grouping attributes together (called | ||||
| 'collection' mechanism) must allow for optional members and subsequent | ||||
| addition of new members. | ||||
| The 'collection' mechanism must be encoded in a manner consistent with | 14 Appendix A: Encoding Example of a Simple Collection............26 | |||
| existing 1.0 and 1.1 parsing rules (see [ipp-pro]). Current 1.0 and 1.1 | 15 Appendix B: Encoding Example of 1setOf Collection..............29 | |||
| parsers that don't support the 'collection' mechanism must not confuse | ||||
| collections or parts of collection they receive with other attributes. | ||||
| 2 Solution | 16 Appendix C: Encoding Example of Collection containing 1setOf XXX | |||
| attribute.........................................................34 | ||||
| The new mechanism is a new IPP attribute syntax called a 'collection'. | 17 Appendix D: Full Copyright Statement...........................38 | |||
| As such, each collection value is a value of an attribute whose | ||||
| attribute syntax type is defined to be a 'collection'. Such an | ||||
| attribute is called a collection attribute. The name of the collection | ||||
| attribute serves to identify the collection value in an operation | ||||
| request or response, as with any attribute value. | ||||
| The 'collection' attribute syntax is a container holding one or more | Table of Tables | |||
| named values (i.e., attributes), which are called member attributes. | ||||
| Each collection attribute definition document lists the mandatory and | ||||
| optional member attributes of each collection value. A collection value | ||||
| is similar to an IPP attribute group in a request or a response, such as | ||||
| the operation attributes group. They both consist of a set of | ||||
| attributes. | ||||
| As with any attribute syntax, the document that defines a collection | Table 1 - "media-col" member attributes...........................13 | |||
| attribute specifies whether the attribute is single-value (collection) | Table 2 - "media-size" collection member attributes...............13 | |||
| or multi-valued (1setOf collection). If the attribute is multi-valued | Table 3 - Tags defined for encoding the 'collection' attribute syntax | |||
| (1setOf collection) each collection value MUST be a separate instance of | ..............................................................16 | |||
| a single definition of a collection, i.e. it MUST have the same member | Table 4 - Overview Encoding of "media-col" collection.............18 | |||
| attributes except for OPTIONAL member attributes. If we view each | Table 5 - Example Encoding of "media-col" collection..............18 | |||
| collection definition as a separate syntax type, this rule continues the | Table 6 - Overview Encoding of simple collection..................26 | |||
| IPP/1.1 notion that each attribute has a single type or pattern (e.g. | Table 7 - Example Encoding of simple collection...................26 | |||
| "keyword | name" is a pattern). Without this rule, the supported values | Table 8 - Overview Encoding of 1setOf collection..................29 | |||
| would be more difficult to describe and the mechanism defined in item 4 | Table 9 - Example Encoding of 1setOf collection...................30 | |||
| of section 3.1would not be sufficient. | Table 10 - Overview Encoding of collection with 1setOf value......34 | |||
| Table 11 - Example Encoding of collection with 1setOf value.......35 | ||||
| The name of each member attribute MUST be unique for a collection | 1 Introduction | |||
| attribute, but MAY be the same as the name of a member attribute in | ||||
| another collection attribute and/or MAY be the same as the name of an | ||||
| attribute that is not a member of a collection. The rules for naming | ||||
| member attributes are given in section 3.1. | ||||
| Each member attribute can have any attribute syntax type, including | 1.1 Problem Statement | |||
| 'collection', and can be either single-valued or multi-valued. The | ||||
| length of a collection value is not limited. However, the length of each | ||||
| member attribute MUST NOT exceed the limit of its attribute syntax. | ||||
| The member attributes in a collection MAY be in any order in a request | The IPP Model and Semantics [RFC2911] supports most of the common | |||
| or response. When a client sends a collection attribute to the Printer, | data structures that are available in programming languages. It lacks | |||
| the order that the Printer stores the member attributes of the | a mechanism for grouping several attributes of different types. The | |||
| collection value and the order returned in a response MAY be different | Java language uses the Map to solve this problem and PostScript has a | |||
| from the order sent by the client. | dictionary. The new mechanism for grouping attributes together | |||
| (called 'collection' mechanism) must allow for optional members and | ||||
| subsequent addition of new members. | ||||
| A collection value MUST NOT contains two or more member attributes with | The 'collection' mechanism must be encoded in a manner consistent | |||
| the same attribute name. Such a collection is mal-formed. Clients MUST | with existing 1.0 and 1.1 parsing rules (see [RFC2910]). Current 1.0 | |||
| NOT submit such malformed requests and Printers MUST NOT return such | and 1.1 parsers that don't support the 'collection' mechanism must | |||
| malformed responses. If such a malformed request is submitted to a | not confuse collections or parts of collection they receive with | |||
| Printer, the Printer MUST (depending on implementation) either (1) | other attributes. | |||
| reject the request with the 'client-error-bad-request' status code (see | ||||
| section 13.1.4.1), or (2) accept the request and use only one of each | 1.2 Solution | |||
| duplicate member attribute.. | ||||
| The new mechanism is a new IPP attribute syntax called a | ||||
| 'collection'. As such, each collection value is a value of an | ||||
| attribute whose attribute syntax type is defined to be a | ||||
| 'collection'. Such an attribute is called a collection attribute. | ||||
| The name of the collection attribute serves to identify the | ||||
| collection value in an operation request or response, as with any | ||||
| attribute value. | ||||
| The 'collection' attribute syntax is a container holding one or more | ||||
| named values (i.e., attributes), which are called member attributes. | ||||
| Each collection attribute definition document lists the mandatory and | ||||
| optional member attributes of each collection value. A collection | ||||
| value is similar to an IPP attribute group in a request or a | ||||
| response, such as the operation attributes group. They both consist | ||||
| of a set of attributes. | ||||
| As with any attribute syntax, the document that defines a collection | ||||
| attribute specifies whether the attribute is single-value | ||||
| (collection) or multi-valued (1setOf collection). If the attribute is | ||||
| multi-valued (1setOf collection) each collection value MUST be a | ||||
| separate instance of a single definition of a collection, i.e. it | ||||
| MUST have the same member attributes except for OPTIONAL member | ||||
| attributes. If we view each collection definition as a separate | ||||
| syntax type, this rule continues the IPP/1.1 notion that each | ||||
| attribute has a single type or pattern (e.g. "keyword | name" is a | ||||
| pattern). Without this rule, the supported values would be more | ||||
| difficult to describe and the mechanism defined in item 4 of section | ||||
| 3.1 would not be sufficient. | ||||
| The name of each member attribute MUST be unique for a collection | ||||
| attribute, but MAY be the same as the name of a member attribute in | ||||
| another collection attribute and/or MAY be the same as the name of an | ||||
| attribute that is not a member of a collection. The rules for naming | ||||
| member attributes are given in section 3.1. | ||||
| Each member attribute can have any attribute syntax type, including | ||||
| 'collection', and can be either single-valued or multi-valued. The | ||||
| length of a collection value is not limited. However, the length of | ||||
| each member attribute MUST NOT exceed the limit of its attribute | ||||
| syntax. | ||||
| The member attributes in a collection MAY be in any order in a | ||||
| request or response. When a client sends a collection attribute to | ||||
| the Printer, the order that the Printer stores the member attributes | ||||
| of the collection value and the order returned in a response MAY be | ||||
| different from the order sent by the client. | ||||
| A collection value MUST NOT contains two or more member attributes | ||||
| with the same attribute name. Such a collection is mal-formed. | ||||
| Clients MUST NOT submit such malformed requests and Printers MUST NOT | ||||
| return such malformed responses. If such a malformed request is | ||||
| submitted to a Printer, the Printer MUST (depending on | ||||
| implementation) either (1) reject the request with the 'client-error- | ||||
| bad-request' status code (see section 13.1.4.1), or (2) accept the | ||||
| request and use only one of each duplicate member attribute. | ||||
| 2 Terminology | ||||
| This section defines terminology used throughout this document. | ||||
| 2.1 Conformance Terminology | ||||
| Capitalized terms, such as MUST, MUST NOT, REQUIRED, SHOULD, SHOULD | ||||
| NOT, MAY, NEED NOT, and OPTIONAL, have special meaning relating to | ||||
| conformance. These terms are defined in [RFC2911] section 12.1 on | ||||
| conformance terminology, most of which is taken from RFC 2119 | ||||
| [RFC2119]. | ||||
| The following specialization of these terms apply to this document: | ||||
| REQUIRED: if an implementation supports the extensions described in | ||||
| this document, it MUST support a REQUIRED feature. | ||||
| OPTIONAL: if an implementation supports the extensions described in | ||||
| this document, it MAY support an OPTIONAL feature. | ||||
| 2.2 Other terminology | ||||
| This document uses terms such as Job object (or Job), IPP Printer | ||||
| object (or Printer), "operation", "request", response", "attributes", | ||||
| "keywords", and "support". These terms have special meaning and are | ||||
| defined in the model terminology [RFC2911] section 12.2. The | ||||
| following additional terms are introduced in this document: | ||||
| collection: an attribute syntax in which each attribute value is a | ||||
| set of attributes, called member attributes. | ||||
| member attribute: an attribute that is defined to be used as one | ||||
| of the attributes in a collection. | ||||
| collection attribute: an attribute whose definition specifies the | ||||
| 'collection' attribute syntax and each of the member attributes | ||||
| that MAY occur in a collection attribute value. | ||||
| 3 Definition of a Collection Attribute | 3 Definition of a Collection Attribute | |||
| This section describes the requirements for any collection attribute | This section describes the requirements for any collection attribute | |||
| definition. | definition. | |||
| 3.1 Information to Include | 3.1 Information to Include | |||
| When a specification document defines an "xxx" collection attribute, | When a specification document defines an "xxx" collection attribute, | |||
| i.e., an attribute whose attribute syntax type is 'collection' or | i.e., an attribute whose attribute syntax type is 'collection' or | |||
| '1setOf collection'; the definition document MUST include the following | '1setOf collection'; the definition document MUST include the | |||
| aspects of the attribute semantics. Suppose the "xxx" collection | following aspects of the attribute semantics. Suppose the "xxx" | |||
| attribute contains N member attributes named "aaa1", "aaa2", ., "aaaN" | collection attribute contains N member attributes named "aaa1", | |||
| ("aaaI" represents any one of these N member attributes). | "aaa2", _, "aaaN" ("aaaI" represents any one of these N member | |||
| attributes). | ||||
| 1. The name of the collection attribute MUST be specified (e.g. | 1. The name of the collection attribute MUST be specified (e.g. | |||
| "xxx"). The selection of the name "xxx" MUST follow the same rules | "xxx"). The selection of the name "xxx" MUST follow the same rules | |||
| for uniqueness as for attributes of any other syntax type (as | for uniqueness as for attributes of any other syntax type (as | |||
| defined by IPP/1.1) unless "xxx" is a member attribute of another | defined by IPP/1.1) unless "xxx" is a member attribute of another | |||
| collection. Then the selection of the name "xxx" MUST follow the | collection. Then the selection of the name "xxx" MUST follow the | |||
| rules for uniqueness defined in item 5a) of this list. | rules for uniqueness defined in item 5a) of this list. | |||
| 2. The collection attribute syntax MUST be of type 'collection' or | 2. The collection attribute syntax MUST be of type 'collection' or | |||
| '1setOf collection'. | '1setOf collection'. | |||
| skipping to change at page 7, line 20 ¶ | skipping to change at page 8, line 32 ¶ | |||
| For example, "media-size-supported" might have the values {{x- | For example, "media-size-supported" might have the values {{x- | |||
| dimension:210, y-dimension:297},{x-dimension:297, y- | dimension:210, y-dimension:297},{x-dimension:297, y- | |||
| dimension:420}} to show that it supports two values of "media | dimension:420}} to show that it supports two values of "media | |||
| size": A4 (210x297) and A3 (297x420). It does not support other | size": A4 (210x297) and A3 (297x420). It does not support other | |||
| combinations of "x-dimension" and "y-dimension" member | combinations of "x-dimension" and "y-dimension" member | |||
| attributes, such as 210x420 or 297x297 and it does not supported | attributes, such as 210x420 or 297x297 and it does not supported | |||
| non-enumerated values, such as 420x595. | non-enumerated values, such as 420x595. | |||
| b)"xxx-supported" is a "1setOf type2 keyword" which enumerates | b)"xxx-supported" is a "1setOf type2 keyword" which enumerates | |||
| the names of all of the member attributes of "xxx": "aaa1", | the names of all of the member attributes of "xxx": "aaa1", | |||
| "aaa2", ., "aaaN". If a collection of this form contains a | "aaa2", _, "aaaN". If a collection of this form contains a | |||
| nested collection, it MAY be of either form. See item 5f) below | nested collection, it MAY be of either form. See item 5f) below | |||
| for details on supported values of member attributes. | for details on supported values of member attributes. | |||
| For example, "media-col-supported" might have the keyword | For example, "media-col-supported" might have the keyword | |||
| values: "media-size" and "media-color". | values: "media-size" and "media-color". | |||
| 5. The member attributes MUST be defined. For each member attribute | 5. The member attributes MUST be defined. For each member attribute | |||
| the definition document MUST provide the following information: | the definition document MUST provide the following information: | |||
| a)The member attribute's name (e.g., "aaa") MUST be unique within | a)The member attribute's name (e.g., "aaa") MUST be unique within | |||
| the collection being defined and MUST either | the collection being defined and MUST either | |||
| i) reuse the attribute name of another attribute (that is unique | i) reuse the attribute name of another attribute (that is unique | |||
| across the entire IPP attribute name space) and have the same | across the entire IPP attribute name space) and have the same | |||
| syntax and semantics as the reused attribute (if the condition | syntax and semantics as the reused attribute (if the condition | |||
| of item 4b) above is met). For example, a member attribute | of item 4b) above is met). For example, a member attribute | |||
| definition could reuse the IPP/1.1 "media" attribute. | definition could reuse the IPP/1.1 "media" attribute. | |||
| ii) potentially occur elsewhere in the entire IPP attribute | ii) potentially occur elsewhere in the entire IPP attribute | |||
| name space. (if the condition of item 4a) above is met). For | name space. (if the condition of item 4a) above is met). For | |||
| example, a member attribute could be "x-dimension" which could | example, a member attribute could be "x-dimension" which could | |||
| potentially occur in another collection or as an attribute | potentially occur in another collection or as an attribute | |||
| outside of a collection. | outside of a collection. | |||
| iii) be unique across the entire IPP attribute name space (if | iii) be unique across the entire IPP attribute name space (if | |||
| the condition of item 4b) above is met). For example, a member | the condition of item 4b) above is met). For example, a member | |||
| attribute could be "media-color" which must unique be across | attribute could be "media-color" which must unique be across | |||
| the entire IPP attribute name space. | the entire IPP attribute name space. | |||
| b)Whether the member attribute is REQUIRED or OPTIONAL for the | b)Whether the member attribute is REQUIRED or OPTIONAL for the | |||
| Printer to support | Printer to support | |||
| c)Whether the member attribute is REQUIRED or OPTIONAL for the | c)Whether the member attribute is REQUIRED or OPTIONAL for the | |||
| client to supply in a request | client to supply in a request | |||
| skipping to change at page 8, line 14 ¶ | skipping to change at page 9, line 35 ¶ | |||
| attribute (case of item a1 above), it MUST have the same | attribute (case of item a1 above), it MUST have the same | |||
| attribute syntax, including cardinality (whether or not 1setOf). | attribute syntax, including cardinality (whether or not 1setOf). | |||
| e)The semantics of the "aaa" member attribute. The semantic | e)The semantics of the "aaa" member attribute. The semantic | |||
| definition MUST include a description of any constraint or | definition MUST include a description of any constraint or | |||
| boundary conditions the member attribute places on the | boundary conditions the member attribute places on the | |||
| associated attribute, especially if the attribute reuses the | associated attribute, especially if the attribute reuses the | |||
| name of another attribute (case of item a1 above) | name of another attribute (case of item a1 above) | |||
| f)The supported values for the each "aaaI" member attribute (of | f)The supported values for the each "aaaI" member attribute (of | |||
| the member attributes "aaa1", "aaa2", ., "aaaN") is specified | the member attributes "aaa1", "aaa2", _, "aaaN") is specified | |||
| by one of two mechanisms. | by one of two mechanisms. | |||
| i) If "xxx-supported" is a "1setOf collection" (see item 4a) | i) If "xxx-supported" is a "1setOf collection" (see item 4a) | |||
| above), the value for each "aaaI" is specified in each | above), the value for each "aaaI" is specified in each | |||
| collection value of "xxx-supported" in the context of other | collection value of "xxx-supported" in the context of other | |||
| member attributes. That is, "xxx-supported" enumerates all | member attributes. That is, "xxx-supported" enumerates all | |||
| supported values of "xxx". | supported values of "xxx". | |||
| ii) If the value of "xxx-supported" is a "1setOf type2 | ii) If the value of "xxx-supported" is a "1setOf type2 | |||
| keyword" (see item 4b) above), the supported values of "aaaI" | keyword" (see item 4b) above), the supported values of "aaaI" | |||
| skipping to change at page 9, line 30 ¶ | skipping to change at page 11, line 12 ¶ | |||
| attributes may be absent in which case the Printer uses the | attributes may be absent in which case the Printer uses the | |||
| defaulting rules of item 5g) above. | defaulting rules of item 5g) above. | |||
| 7. The "xxx-ready (1setOf collection)" attribute if human intervention | 7. The "xxx-ready (1setOf collection)" attribute if human intervention | |||
| is required to make many of the supported values available. For | is required to make many of the supported values available. For | |||
| example, "media-col" is an attribute which has a "ready" attribute. | example, "media-col" is an attribute which has a "ready" attribute. | |||
| Most attributes do not have a "ready" attribute. | Most attributes do not have a "ready" attribute. | |||
| 3.2 Nested Collections | 3.2 Nested Collections | |||
| A member attribute may have a syntax type of 'collection' or '1setOf | A member attribute may have a syntax type of 'collection' or '1setOf | |||
| collection', in which case it is called a nested collection attribute. | collection', in which case it is called a nested collection | |||
| The rules for a nested collection attribute are the same as for a | attribute. The rules for a nested collection attribute are the same | |||
| collection attribute as specified in section 3.1. | as for a collection attribute as specified in section 3.1. | |||
| 4 Collection Attributes as Attributes in Operations | 4 Collection Attributes as Attributes in Operations | |||
| 4.1 General Rules | 4.1 General Rules | |||
| A collection value is like any other IPP/1.1 value, except that it is | A collection value is like any other IPP/1.1 value, except that it is | |||
| structured. The rules for attributes with collection values are the same | structured. The rules for attributes with collection values are the | |||
| as for attributes of any other syntax type (see IPP/1.1), be they in any | same as for attributes of any other syntax type (see IPP/1.1), be | |||
| group of a request of a response. | they in any group of a request of a response. | |||
| 4.2 Unsupported Values | 4.2 Unsupported Values | |||
| The rules for returning an unsupported collection attribute are an | The rules for returning an unsupported collection attribute are an | |||
| extension to the current rules: | extension to the current rules: | |||
| 1. If the entire collection attribute is unsupported, then the | 1. If the entire collection attribute is unsupported, then the | |||
| Printer returns just the collection attribute name with the | Printer returns just the collection attribute name with the | |||
| 'unsupported' out-of-band value (see the beginning of [ipp-mod] | 'unsupported' out-of-band value (see the beginning of [RFC2911] | |||
| section 4.1) in the Unsupported Attributes Group. | section 4.1) in the Unsupported Attributes Group. | |||
| 2. If a collection contains unrecognized, unsupported member | 2. If a collection contains unrecognized, unsupported member | |||
| attributes and/or conflicting values, the attribute returned in | attributes and/or conflicting values, the attribute returned in | |||
| the Unsupported Group is a collection containing the | the Unsupported Group is a collection containing the | |||
| unrecognized, unsupported member attributes, and/or conflicting | unrecognized, unsupported member attributes, and/or conflicting | |||
| values. The unrecognized member attributes have an out-of-band | values. The unrecognized member attributes have an out-of-band | |||
| value of 'unsupported' (see the beginning of [ipp-mod] section | value of 'unsupported' (see the beginning of [RFC2911] section | |||
| 4.1). The unsupported member attributes and conflicting values | 4.1). The unsupported member attributes and conflicting values | |||
| have their unsupported or conflicting values. | have their unsupported or conflicting values. | |||
| 5 Example definition of a collection attribute | 5 Example definition of a collection attribute | |||
| In some printing environments, it is desirable to allow the client to | In some printing environments, it is desirable to allow the client to | |||
| select the media by its properties, e.g., weight, color, size, etc., | select the media by its properties, e.g., weight, color, size, etc., | |||
| instead of by name. In IPP/1.1 (see [ipp-mod]), the "media (type3 | instead of by name. In IPP/1.1 (see [RFC2911]), the "media (type3 | |||
| keyword | name) Job Template attribute allows selection by name. It is | keyword | name) Job Template attribute allows selection by name. It | |||
| tempting to extend the "media" attribute syntax to include "collection", | is tempting to extend the "media" attribute syntax to include | |||
| but then existing clients could not understand default or supported | "collection", but then existing clients could not understand default | |||
| media values that use the collection value. To preserve | or supported media values that use the collection value. To preserve | |||
| interoperability, a new attribute MUST BE added, e.g., "media-col | interoperability, a new attribute MUST BE added, e.g., "media-col | |||
| (collection)". The following subsections contain a sample definition of | (collection)". The following subsections contain a sample definition | |||
| a simplified "media-col" attribute. The definition follows the rules in | of a simplified "media-col" attribute. The definition follows the | |||
| section 3. | rules in section 3. | |||
| Note: we picked the name "media-col" because the name "media" is already | All of the example attribute definitions in this document are | |||
| in use. Ordinarily the collection attribute would have a name like any | illustrative examples, rather than actual definitions. These | |||
| other attribute and would not end in "col". | examples are intended to illustrate how to define collection | |||
| attributes. Other documents MUST define collection attributes for | ||||
| use in actual interchange. Such definitions may be very similar to | ||||
| the examples in this document, since we attempted to pick useful | ||||
| examples. | ||||
| The member attributes of "media-col" attribute ("media-color (type 3 | Note: we picked the name "media-col" because the name "media" is | |||
| keyword)" and "media-size (collection)") both follow the naming rules of | already in use. Ordinarily the collection attribute would have a name | |||
| item 4a3 of section 3, i.e. the names are unique across the entire IPP | like any other attribute and would not end in "col". | |||
| attribute name space. The member attributes of the "media-size | ||||
| (collection)" member attribute ("x-dimension (integer(0,MAX))" and "y- | ||||
| dimension (integer(0,MAX))") both follow the naming rules of item 4a2 of | ||||
| section 3, i.e. they potentially occur elsewhere in the IPP attribute | ||||
| name space. | ||||
| 5.1 media-col (collection) | The member attributes of "media-col" attribute ("media-color (type 3 | |||
| keyword)" and "media-size (collection)") both follow the naming rules | ||||
| of item 4a3 of section 3, i.e. the names are unique across the entire | ||||
| IPP attribute name space. The member attributes of the "media-size | ||||
| (collection)" member attribute ("x-dimension (integer(0,MAX))" and | ||||
| "y-dimension (integer(0,MAX))") both follow the naming rules of item | ||||
| 4a2 of section 3, i.e. they potentially occur elsewhere in the IPP | ||||
| attribute name space. | ||||
| The "media-col" (collection) attribute augments the IPP/1.1 [ipp-mod] | 5.1 media-col (collection) | |||
| "media" attribute. This collection attribute enables a client end user | ||||
| to submit a list of media characteristics to the Printer. When the | ||||
| client specifies media using the "media-col" collection attribute, the | ||||
| Printer object MUST match the requested media exactly. The 'collection' | ||||
| consists of the following member attributes: | ||||
| Table 1 - "media-col" member attributes | The "media-col" (collection) attribute augments the IPP/1.1 [RFC2911] | |||
| "media" attribute. This collection attribute enables a client end | ||||
| user to submit a list of media characteristics to the Printer. When | ||||
| the client specifies media using the "media-col" collection | ||||
| attribute, the Printer object MUST match the requested media exactly. | ||||
| The 'collection' consists of the following member attributes: | ||||
| Attribute name attribute syntax request Printer | Table 1 - "media-col" member attributes | |||
| Support | ||||
| media-color type3 keyword | name (MAX) MAY MUST | Attribute name attribute syntax reque Printer | |||
| st Support | ||||
| media-size collection MUST MUST | media-color type3 keyword | name (MAX) MAY MUST | |||
| The definitions for the member attributes is given in the following | media-size collection MUST MUST | |||
| sub-sections: | The definitions for the member attributes is given in the following | |||
| sub-sections: | ||||
| 5.1.1 media-color (type3 keyword | name(MAX) | 5.1.1 media-color (type3 keyword | name(MAX) | |||
| This member attribute identifies the color of the media. Valid | This member attribute identifies the color of the media. Valid | |||
| values are 'red', 'white' and 'blue' | values are 'red', 'white' and 'blue' | |||
| The "media-color-supported" (1setOf (type3 keyword | name(MAX))) | The "media-color-supported" (1setOf (type3 keyword | name(MAX))) | |||
| Printer attribute identifies the values of this "media-color" | Printer attribute identifies the values of this "media-color" | |||
| member attribute that the Printer supports, i.e., the colors | member attribute that the Printer supports, i.e., the colors | |||
| supported. | supported. | |||
| If the client omits this member attribute, the Printer determines | If the client omits this member attribute, the Printer determines | |||
| the value in an implementation dependent manner. | the value in an implementation dependent manner. | |||
| 5.1.2 media-size (collection) | 5.1.2 media-size (collection) | |||
| This member attribute identifies the size of the media. The | This member attribute identifies the size of the media. The | |||
| 'collection' consists of the member attributes shown in Table 2: | 'collection' consists of the member attributes shown in Table 2: | |||
| Table 2 - "media-size" collection member attributes | Table 2 - "media-size" collection member attributes | |||
| Attribute attribute syntax request Printer | ||||
| name Support | ||||
| x-dimension integer (0:MAX) MUST MUST | Attribute attribute syntax request Printer | |||
| name Support | ||||
| y-dimension integer (0:MAX) MUST MUST | x-dimension integer (0:MAX) MUST MUST | |||
| y-dimension integer (0:MAX) MUST MUST | ||||
| The definitions for the member attributes is given in the | The definitions for the member attributes is given in the | |||
| following sub-sections: | following sub-sections: | |||
| 5.1.2.1 x-dimension (integer(0:MAX)) | 5.1.2.1 x-dimension (integer(0:MAX)) | |||
| This attribute identifies the width of the media in inch units | This attribute identifies the width of the media in inch units | |||
| along the X axis. | along the X axis. | |||
| 5.1.2.2 y-dimension (integer(0:MAX)) | 5.1.2.2 y-dimension (integer(0:MAX)) | |||
| This attribute identifies the height of the media in inch | This attribute identifies the height of the media in inch | |||
| units along the Y axis. | units along the Y axis. | |||
| The "media-size-supported" (1setOf collection) Printer | The "media-size-supported" (1setOf collection) Printer | |||
| attribute identifies the values of this "media-size" member | attribute identifies the values of this "media-size" member | |||
| attribute that the Printer supports, i.e., the size | attribute that the Printer supports, i.e., the size | |||
| combinations supported. The names of the member attributes | combinations supported. The names of the member attributes | |||
| are the same as the member attributes of the "media-size" | are the same as the member attributes of the "media-size" | |||
| collection attribute, namely "x-dimension", and "y-dimension", | collection attribute, namely "x-dimension", and "y-dimension", | |||
| since they have the same attribute syntax and the same | since they have the same attribute syntax and the same | |||
| semantics. | semantics. | |||
| 5.2 media-col-default (collection) | 5.2 media-col-default (collection) | |||
| The "media-col-default" Printer attribute specifies the media that the | The "media-col-default" Printer attribute specifies the media that | |||
| Printer uses, if any, if the client omits the "media-col" and "media". | the Printer uses, if any, if the client omits the "media-col" and | |||
| Job Template attribute in the Job Creation operation (and the PDL | "media". Job Template attribute in the Job Creation operation (and | |||
| doesn't include a media specification). The member attributes are | the PDL doesn't include a media specification). The member | |||
| defined in Table 1. A Printer MUST support the same member attributes | attributes are defined in Table 1. A Printer MUST support the same | |||
| for this default collection attribute as it supports for the | member attributes for this default collection attribute as it | |||
| corresponding "media-col" Job Template attribute. | supports for the corresponding "media-col" Job Template attribute. | |||
| 5.3 media-col-ready (1setOf collection) | 5.3 media-col-ready (1setOf collection) | |||
| The "media-col-ready" Printer attribute identifies the media that are | The "media-col-ready" Printer attribute identifies the media that are | |||
| available for use without human intervention, i.e., the media that are | available for use without human intervention, i.e., the media that | |||
| ready to be used without human intervention. The collection value MUST | are ready to be used without human intervention. The collection | |||
| have all of the member attributes that are supported in Table 1. | value MUST have all of the member attributes that are supported in | |||
| Table 1. | ||||
| 5.4 media-col-supported (1setOf type2 keyword) | 5.4 media-col-supported (1setOf type2 keyword) | |||
| The "media-col-supported" Printer attribute identifies the keyword names | The "media-col-supported" Printer attribute identifies the keyword | |||
| of the member attributes supported in the "media-col" collection Job | names of the member attributes supported in the "media-col" | |||
| Template attribute, i.e., the keyword names of the member attributes in | collection Job Template attribute, i.e., the keyword names of the | |||
| Table 1 that the Printer supports. | member attributes in Table 1 that the Printer supports. | |||
| 6 A Second Example Definition Of A Collection Attribute | 6 A Second Example Definition Of A Collection Attribute | |||
| In some printing environments, it is desirable to allow the client to | All of the example attribute definitions in this document are | |||
| select the media for the job start sheet. The reason for not adding the | illustrative examples, rather than actual definitions. These | |||
| 'collection' attribute syntax to the existing "job-sheets" Job Template | examples are intended to illustrate how to define collection | |||
| attribute is the same as for "media". Instead, a new Job Template | attributes. Other documents MUST define collection attributes for | |||
| attribute is introduced, e.g. "job-sheet-col (collection)". | use in actual interchange. Such definitions may be very similar to | |||
| the examples in this document, since we attempted to pick useful | ||||
| examples. | ||||
| The member attributes of "job-sheet-col" attribute ("job-sheets (type 3 | In some printing environments, it is desirable to allow the client to | |||
| keyword)" and "media (type3 keyword | name)") both follow the naming | select the media for the job start sheet. The reason for not adding | |||
| rules of item 4a1 of section 3, i.e they reuse existing IPP attributes. | the 'collection' attribute syntax to the existing "job-sheets" Job | |||
| According to the rules, their supported values come from the existing | Template attribute is the same as for "media". Instead, a new Job | |||
| IPP attributes: "job-sheets-supported" and "media-supported". However, | Template attribute is introduced, e.g. "job-sheet-col (collection)". | |||
| their default values do not come from "job-sheets-default" and "media- | ||||
| default", respectively. Rather the definition of "job-sheet-col" says | ||||
| that "job-sheets (type 3 keyword)" is required and if "media (type3 | ||||
| keyword | name)" is absent, the Printer uses the same media as the rest | ||||
| of the job uses. | ||||
| If "job-sheet-col" attribute were defined to contain the member | The member attributes of "job-sheet-col" attribute ("job-sheets | |||
| attribute "job-sheet-media (type3 keyword | name)" instead of "media | (type 3 keyword)" and "media (type3 keyword | name)") both follow | |||
| (type3 keyword | name)", then the definition would also have to specify | the naming rules of item 4a1 of section 3, i.e they reuse existing | |||
| a "job-sheet-media-supported (1setOf (type3 keyword | name))" whose | IPP attributes. According to the rules, their supported values come | |||
| values would be independent of "media-supported (1setOf (type3 keyword | from the existing IPP attributes: "job-sheets-supported" and "media- | |||
| | name))" and would be set separately by a System Administrator. | supported". However, their default values do not come from "job- | |||
| sheets-default" and "media-default", respectively. Rather the | ||||
| definition of "job-sheet-col" says that "job-sheets (type 3 keyword)" | ||||
| is required and if "media (type3 keyword | name)" is absent, the | ||||
| Printer uses the same media as the rest of the job uses. | ||||
| The actual text for the definition of the attribute is left as an | If "job-sheet-col" attribute were defined to contain the member | |||
| exercise for the reader. | attribute "job-sheet-media (type3 keyword | name)" instead of "media | |||
| (type3 keyword | name)", then the definition would also have to | ||||
| specify a "job-sheet-media-supported (1setOf (type3 keyword | | ||||
| name))" whose values would be independent of "media-supported | ||||
| (1setOf (type3 keyword | name))" and would be set separately by a | ||||
| System Administrator. | ||||
| The actual text for the definition of the attribute is left as an | ||||
| exercise for the reader. | ||||
| 7 Encoding | 7 Encoding | |||
| This section defines the additional encoding tags used according to | This section defines the additional encoding tags used according to | |||
| [ipp-pro] and gives an example of their use. | [RFC2910] and gives an example of their use. The encoding tags | |||
| define in this document MUST be used by all collection attributes | ||||
| defined in other documents. However, the example of their use is | ||||
| illustrative only. | ||||
| 7.1 Additional tags defined for representing a collection attribute | 7.1 Additional tags defined for representing a collection attribute | |||
| value | value | |||
| The 'collection' attribute syntax uses the tags defined in Table 3. | The 'collection' attribute syntax uses the tags defined in Table 3. | |||
| Table 3 - Tags defined for encoding the 'collection' attribute syntax | Table 3 - Tags defined for encoding the 'collection' attribute syntax | |||
| Tag name Tag Meaning | Tag name Tag Meaning | |||
| value | value | |||
| begCollection 0x34 Begin the collection attribute value. | begCollection 0x34 Begin the collection attribute value. | |||
| endCollection 0x37 End the collection attribute value. | endCollection 0x37 End the collection attribute value. | |||
| memberAttrName 0x4A The value is the name of the | memberAttrName 0x4A The value is the name of the | |||
| collection member attribute | collection member attribute | |||
| When encoding a collection attribute "xxx" that contains an attribute | When encoding a collection attribute "xxx" that contains an attribute | |||
| "aaa" and is not inside another collection, the encoding follows these | "aaa" and is not inside another collection, the encoding follows | |||
| rules: | these rules: | |||
| 1. The beginning of the collection is indicated with a value tag that | 1. The beginning of the collection is indicated with a value tag | |||
| MUST be syntax type 'begCollection' (0x34) with a name length and | that MUST be syntax type 'begCollection' (0x34) with a name | |||
| Name field that represent the name of the collection attribute | length and Name field that represent the name of the collection | |||
| ("xxx") as with any attribute, followed by a value. The Printer MAY | attribute ("xxx") as with any attribute, followed by a value. The | |||
| ignore the value and its length of MAY be 0. In the future, however, | Printer MAY ignore the value and its length of MAY be 0. In the | |||
| this field MAY contain useful information, such as the collection | future, however, this field MAY contain useful information, such | |||
| name (cf. the name of a C struct). | as the collection name (cf. the name of a C struct). | |||
| 2. Each member attribute is encoded as a sequence of two or more values | 2. Each member attribute is encoded as a sequence of two or more | |||
| that appear to be part of a single multi-valued attribute, i.e. | values that appear to be part of a single multi-valued attribute, | |||
| 1setOf. The first value after the 'begCollection' value has the | i.e. 1setOf. The first value after the 'begCollection' value has | |||
| attribute syntax 'memberAttrName' (0x4A) and its value holds the | the attribute syntax 'memberAttrName' (0x4A) and its value holds | |||
| name of the first member attribute (e.g. "aaa"). The second value | the name of the first member attribute (e.g. "aaa"). The second | |||
| holds the first member's attribute value, which can be of any | value holds the first member's attribute value, which can be of | |||
| attribute syntax, except 'memberAttrName' or 'endCollection'. If the | any attribute syntax, except 'memberAttrName' or 'endCollection'. | |||
| first member's attribute value is multi-valued, the third value | If the first member's attribute value is multi-valued, the third | |||
| holds the second value of the first member's value. Otherwise, the | value holds the second value of the first member's value. | |||
| third value holds the name of second member attribute (e.g. "bbb") | Otherwise, the third value holds the name of second member | |||
| and its attribute syntax is 'memberAttrName'. In this case, the | attribute (e.g. "bbb") and its attribute syntax is | |||
| fourth member's value is the value of "bbb". | 'memberAttrName'. In this case, the fourth member's value is the | |||
| value of "bbb". | ||||
| Note that the technique of encoding a 'collection' as a '1setOf' | Note that the technique of encoding a 'collection' as a '1setOf' | |||
| makes it easy for a Printer that doesn't support a particular | makes it easy for a Printer that doesn't support a particular | |||
| collection attribute (or the collection attribute syntax at all) to | collection attribute (or the collection attribute syntax at all) | |||
| simply skip over the entire collection value. | to simply skip over the entire collection value. | |||
| 3. The end of the collection is indicated with a value tag that MUST be | 3. The end of the collection is indicated with a value tag that MUST | |||
| syntax type 'endCollection' (e.g. 0x37) and MAY have a zero name | be syntax type 'endCollection' (e.g. 0x37) and MAY have a zero | |||
| length and a zero value length. In the future, this field MAY | name length and a zero value length. In the future, this field | |||
| contain useful information,such as the collection name that matches | MAY contain useful information,such as the collection name that | |||
| the one in the 'begCollection' . | matches the one in the 'begCollection' . | |||
| 4. It is valid to have a member attribute that is, itself, a collection | 4. It is valid to have a member attribute that is, itself, a | |||
| attribute, i.e., collections can be nested within collections. This | collection attribute, i.e., collections can be nested within | |||
| is represented by the occurrence of a member attribute that is of | collections. This is represented by the occurrence of a member | |||
| attribute syntax type 'begCollection'. Such a collection is | attribute that is of attribute syntax type 'begCollection'. Such | |||
| terminated by a matching 'endCollection'. The name of such a member | a collection is terminated by a matching 'endCollection'. The | |||
| attribute is in the immediately preceding value whose syntax type is | name of such a member attribute is in the immediately preceding | |||
| 'memberAttrName'. | value whose syntax type is 'memberAttrName'. | |||
| 5. It is valid for a collection attribute to be multi-valued, i.e., | 5. It is valid for a collection attribute to be multi-valued, i.e., | |||
| have more than one collection value. If the next attribute | have more than one collection value. If the next attribute | |||
| immediately following the 'endCollection' has a zero name length and | immediately following the 'endCollection' has a zero name length | |||
| a tag of 'begCollection', then the collection attribute is a multi- | and a tag of 'begCollection', then the collection attribute is a | |||
| valued collection, as with any attribute. This statement applies to | multi-valued collection, as with any attribute. This statement | |||
| collections within collections and collections that are not in | applies to collections within collections and collections that | |||
| collections. | are not in collections. | |||
| 7.2 Example encoding: "media-col" (collection) | 7.2 Example encoding: "media-col" (collection) | |||
| The collection specified in section 5is used for the encoding example | The collection specified in section 5 is used for the encoding | |||
| shown in Table 5. The example also shows nested collections, since the | example shown in Table 5. The example also shows nested collections, | |||
| "media-size" member attribute is a 'collection. The encoding example | since the "media-size" member attribute is a 'collection. The | |||
| represents a blue 4x6-index cards and takes 216 octets. The Appendices | encoding example represents a blue 4x6-index cards and takes 216 | |||
| contains more complex examples. | octets. The Appendices contains more complex examples. | |||
| Additional examples have been included in the appendices. | Additional examples have been included in the appendices. | |||
| The overall structure of the two collection values can be pictorially | The overall structure of the two collection values can be pictorially | |||
| represented as: | represented as: | |||
| "media-col" = | "media-col" = | |||
| { "media-color" = 'blue'; | { "media-color" = 'blue'; | |||
| "media-size" = | "media-size" = | |||
| { "x-dimension" = 6; | { "x-dimension" = 6; | |||
| "y-dimension" = 4 | "y-dimension" = 4 | |||
| } | } | |||
| }, | }, | |||
| The full encoding is in table 4. A simplified view of the encoding | The full encoding is in table 4. A simplified view of the encoding | |||
| looks like this: | looks like this: | |||
| Table 4 - Overview Encoding of "media-col" collection | Table 4 - Overview Encoding of "media-col" collection | |||
| Tag Value Name Value | Tag Value Name Value | |||
| begCollection media-col "" | begCollection media-col "" | |||
| memberAttrName "" media-color | ||||
| keyword "" blue | ||||
| memberAttrName "" media-size | ||||
| begCollection "" "" | ||||
| memberAttrName "" x-dimension | ||||
| integer "" 6 | ||||
| memberAttrName "" y-dimension | ||||
| integer "" 4 | ||||
| endCollection "" "" | ||||
| endCollection "" "" | ||||
| Table 5 - Example Encoding of "media-col" collection | memberAttrName "" media-color | |||
| Octets Symbolic Protocol comments | keyword "" blue | |||
| Value field | ||||
| 0x34 begCollection value-tag beginning of the "media- | memberAttrName "" media-size | |||
| begCollection "" "" | ||||
| memberAttrName "" x-dimension | ||||
| integer "" 6 | ||||
| memberAttrName "" y-dimension | ||||
| integer "" 4 | ||||
| endCollection "" "" | ||||
| endCollection "" "" | ||||
| Table 5 - Example Encoding of "media-col" collection | ||||
| Octets Symbolic Value Protocol comments | ||||
| field | ||||
| 0x34 begCollection value-tag beginning of the "media- | ||||
| col" collection attribute | col" collection attribute | |||
| 0x0009 name- length of (collection) | ||||
| 0x0009 name- length of (collection) | ||||
| length attribute name | length attribute name | |||
| media-col media-col name name of (collection) | ||||
| Octets Symbolic Value Protocol comments | ||||
| field | ||||
| media-col media-col name name of (collection) | ||||
| attribute | attribute | |||
| 0x0000 value- defined to be 0 for this | ||||
| 0x0000 value- defined to be 0 for this | ||||
| length type | length type | |||
| no value (since value- | no value (since value- | |||
| length was 0) | length was 0) | |||
| 0x4A memberAttrNam value-tag starts a new member | 0x4A memberAttrName value-tag starts a new member | |||
| e attribute: "media-color" | attribute: "media-color" | |||
| 0x0000 name- defined to be 0 for this | 0x0000 name- defined to be 0 for this | |||
| length type, so part of 1setOf | length type, so part of 1setOf | |||
| no name (since name-length | no name (since name-length | |||
| was 0) | was 0) | |||
| 0x000B value- length of "media-color" | ||||
| 0x000B value- length of "media-color" | ||||
| length keyword | length keyword | |||
| st | ||||
| media-color media-color value value is name of 1 member | ||||
| attribute | ||||
| 0x44 keyword type value-tag keyword type | media-color media-color value value is name of 1st | |||
| Octets Symbolic Protocol comments | member attribute | |||
| Value field | ||||
| 0x0000 name- 0 indicates 1setOf | 0x44 keyword type value-tag keyword type | |||
| 0x0000 name- 0 indicates 1setOf | ||||
| length | length | |||
| no name (since name-length | no name (since name-length | |||
| was 0) | was 0) | |||
| 0x0004 value- | ||||
| 0x0004 value- | ||||
| length | length | |||
| st | ||||
| blue blue value value of 1 member | blue blue value value of 1st member | |||
| attribute | attribute | |||
| 0x4A memberAttrNam value-tag starts a new member | 0x4A memberAttrName value-tag starts a new member | |||
| e attribute: "media-size" | attribute: "media-size" | |||
| 0x0000 name- defined to be 0 for this | Octets Symbolic Value Protocol comments | |||
| field | ||||
| 0x0000 name- defined to be 0 for this | ||||
| length type, so part of 1setOf | length type, so part of 1setOf | |||
| no name (since name-length | no name (since name-length | |||
| was 0) | was 0) | |||
| 0x000A value- length of "media-size" | ||||
| 0x000A value- length of "media-size" | ||||
| length keyword | length keyword | |||
| nd | ||||
| media-size media-size value Name of 2 member | media-size media-size value Name of 2nd member | |||
| attribute | attribute | |||
| 0x34 begCollection value-tag Beginning of the "media- | 0x34 begCollection value-tag Beginning of the "media- | |||
| size" collection attribute | size" collection attribute | |||
| which is a sub-collection | which is a sub-collection | |||
| 0x0000 name- 0 indicates 1setOf | ||||
| 0x0000 name- 0 indicates 1setOf | ||||
| length | length | |||
| no name (since name-length | no name (since name-length | |||
| was 0) | was 0) | |||
| 0x0000 value- collection attribute names | ||||
| 0x0000 value- collection attribute names | ||||
| length have no value | length have no value | |||
| no value (since value- | no value (since value- | |||
| length was 0) | length was 0) | |||
| 0x4A memberAttrNam value-tag starts a new member | 0x4A memberAttrName value-tag starts a new member | |||
| e attribute: "x-dimension" | attribute: "x-dimension" | |||
| 0x0000 name- defined to be 0 for this | 0x0000 name- defined to be 0 for this | |||
| length type, so part of 1setOf | length type, so part of 1setOf | |||
| no name (since name-length | no name (since name-length | |||
| was 0) | was 0) | |||
| 0x000B value- length of "x-dimension" | ||||
| 0x000B value- length of "x-dimension" | ||||
| length keyword | length keyword | |||
| st | ||||
| x-dimension x-dimension value name of 1 sub-collection | ||||
| member attribute | ||||
| 0x21 integer type value-tag attribute type | Octets Symbolic Value Protocol comments | |||
| 0x0000 name- 0 indicates 1setOf | field | |||
| x-dimension x-dimension value name of 1st sub- | ||||
| collection member | ||||
| attribute | ||||
| 0x21 integer type value-tag attribute type | ||||
| 0x0000 name- 0 indicates 1setOf | ||||
| length | length | |||
| no name (since name-length | no name (since name-length | |||
| was 0) | was 0) | |||
| 0x0004 value- length of an integer = 4 | ||||
| length | ||||
| Octets Symbolic Protocol comments | 0x0004 value- length of an integer = 4 | |||
| Value field | length | |||
| st | 0x0006 value value of 1st sub- | |||
| 0x0006 value value of 1 sub- | collection member | |||
| collection member attribute | attribute | |||
| 0x4A memberAttrNam value-tag starts a new member | 0x4A memberAttrName value-tag starts a new member | |||
| e attribute: "y-dimension" | attribute: "y-dimension" | |||
| 0x0000 name- defined to be 0 for this | 0x0000 name- defined to be 0 for this | |||
| length type, so part of 1setOf | length type, so part of 1setOf | |||
| no name (since name-length | no name (since name-length | |||
| was 0) | was 0) | |||
| 0x000B value- length of the "y-dimension" | ||||
| length keyword | ||||
| nd | ||||
| y-dimension y-dimension value name of 2 sub-collection | ||||
| member attribute | ||||
| 0x21 integer type value-tag attribute type | 0x000B value- length of the "y- | |||
| 0x0000 name- 0 indicates 1setOf | length dimension" keyword | |||
| y-dimension y-dimension value name of 2nd sub- | ||||
| collection member | ||||
| attribute | ||||
| 0x21 integer type value-tag attribute type | ||||
| 0x0000 name- 0 indicates 1setOf | ||||
| length | length | |||
| Octets Symbolic Value Protocol comments | ||||
| field | ||||
| no name (since name-length | no name (since name-length | |||
| was 0) | was 0) | |||
| 0x0004 value- length of an integer = 4 | ||||
| 0x0004 value- length of an integer = 4 | ||||
| length | length | |||
| nd | ||||
| 0x0004 value value of 2 sub- | ||||
| collection member attribute | ||||
| 0x37 endCollection value-tag end of the sub-collection | 0x0004 value value of 2nd sub- | |||
| 0x0000 name- defined to be 0 for this | collection member | |||
| attribute | ||||
| 0x37 endCollection value-tag end of the sub-collection | ||||
| 0x0000 name- defined to be 0 for this | ||||
| length type, so part of 1setOf | length type, so part of 1setOf | |||
| no name (since name-length | no name (since name-length | |||
| was 0) | was 0) | |||
| 0x0000 value- defined to be 0 for this | ||||
| 0x0000 value- defined to be 0 for this | ||||
| length type | length type | |||
| no value (since value- | no value (since value- | |||
| length was 0) | length was 0) | |||
| 0x37 endCollection value-tag end of the 1st collection | ||||
| 0x37 endCollection value-tag end of the 1st collection | ||||
| value in 1setOf | value in 1setOf | |||
| 0x0000 name- defined to be 0 for this | ||||
| 0x0000 name- defined to be 0 for this | ||||
| length type, so part of 1setOf | length type, so part of 1setOf | |||
| no name (since name-length | no name (since name-length | |||
| was 0) | was 0) | |||
| 0x0000 value- defined to be 0 for this | ||||
| 0x0000 value- defined to be 0 for this | ||||
| length type | length type | |||
| no value (since value- | no value (since value- | |||
| length was 0) | length was 0) | |||
| 8 Legacy issues | 8 Legacy issues | |||
| IPP 1.x Printers and Clients will gracefully ignore collections and its | IPP 1.x Printers and Clients will gracefully ignore collections and | |||
| member attributes if it does not understand the collection. The | its member attributes if it does not understand the collection. The | |||
| begCollection and endCollection elements each look like an attribute | begCollection and endCollection elements each look like an attribute | |||
| with an attribute syntax that the recipient doesn't support and so | with an attribute syntax that the recipient doesn't support and so | |||
| should ignore the entire attribute. The individual member attributes | should ignore the entire attribute. The individual member attributes | |||
| and their values will look like a 1setOf values of the collection | and their values will look like a 1setOf values of the collection | |||
| attribute, so that the Printer simply ignores the entire attribute and | attribute, so that the Printer simply ignores the entire attribute | |||
| all of its values. Returning unsupported attributes is also simple, | and all of its values. Returning unsupported attributes is also | |||
| since only the name of the collection attribute is returned with the | simple, since only the name of the collection attribute is returned | |||
| 'unsupported' out-of-band value (see section 4.2). | with the 'unsupported' out-of-band value (see section 4.2). | |||
| 9 IANA Considerations | 9 IANA Considerations | |||
| This attribute syntax will be registered with IANA after the WG approves | This section contains the exact information for IANA to add to the | |||
| its specification according to the procedures for extension of the | IPP Registries according to the procedures defined in "IPP/1.1 Model | |||
| IPP/1.1 Model and Semantics [ipp-mod]. | and Semantics" document [RFC2911] section 6. | |||
| Note to RFC Editors: Replace RFC NNNN below with the RFC number for | ||||
| this document, so that it accurately reflects the content of the | ||||
| information for the IANA Registry. | ||||
| 9.1 Attribute Syntax Registration | ||||
| The attribute syntax defined in this document will be published by | ||||
| IANA according to the procedures in RFC 2911 [RFC2911] section 6.3 | ||||
| with the following path: | ||||
| ftp.isi.edu/iana/assignments/ipp/attribute-syntaxes/ | ||||
| The registry entry will contain the following information: | ||||
| Reference: | ||||
| RFC NNNN [this document] | ||||
| Attribute Syntaxes: Ref. Section: | ||||
| collection RFC NNNN 3 | ||||
| 10 Internationalization Considerations | 10 Internationalization Considerations | |||
| This attribute syntax by itself has no impact on internationalization. | This attribute syntax by itself has no impact on | |||
| However, the member attributes that are subsequently defined for use in | internationalization. However, the member attributes that are | |||
| a collection may have internationalization considerations, as may any | subsequently defined for use in a collection may have | |||
| attribute, according to [ipp-mod]. | internationalization considerations, as may any attribute, according | |||
| to [RFC2911]. | ||||
| 11 Security Considerations | 11 Security Considerations | |||
| This attribute syntax causes no more security concerns than any other | This attribute syntax causes no more security concerns than any other | |||
| attribute syntax. It is only the attributes that are subsequently | attribute syntax. It is only the attributes that are subsequently | |||
| defined to use this or any other attribute syntax that may have security | defined to use this or any other attribute syntax that may have | |||
| concerns, depending on the semantics of the attribute, according to | security concerns, depending on the semantics of the attribute, | |||
| [ipp-mod]. | according to [RFC2911]. | |||
| 12 References | 12 References | |||
| [ipp-mod] | [ipp-ntfy] | |||
| Isaacson, S., deBry, R., Hastings, T., Herriot, R., Powell, P., | ||||
| "Internet Printing Protocol/1.1: Model and Semantics" draft-ietf- | ||||
| ipp-model-v11-06.txt, March 1, 2000. | ||||
| [ipp-ntfy] | ||||
| Isaacson, S., Martin, J., deBry, R., Hastings, T., Shepherd, M., | Isaacson, S., Martin, J., deBry, R., Hastings, T., Shepherd, M., | |||
| Bergman, R. " Internet Printing Protocol/1.0 & 1.1: IPP Event | Bergman, R. " Internet Printing Protocol/1.0 & 1.1: IPP Event | |||
| Notification Specification" draft-ietf-ipp-not-spec-02.txt, work in | Notification Specification" draft-ietf-ipp-not-spec-02.txt, work in | |||
| progress, February 2, 2000. | progress, February 2, 2000. | |||
| [ipp-pro] | [RFC2565] | |||
| Herriot, R., Butler, S., Moore, P., Turner, R., "Internet Printing | ||||
| Protocol/1.1: Encoding and Transport", draft-ietf-ipp-protocol-v11- | ||||
| 05.txt, March 1, 2000. | ||||
| [RFC2565] | ||||
| Herriot, R., Butler, S., Moore, P., Tuner, R., "Internet Printing | Herriot, R., Butler, S., Moore, P., Tuner, R., "Internet Printing | |||
| Protocol/1.0: Encoding and Transport", RFC 2565, April 1999. | Protocol/1.0: Encoding and Transport", RFC 2565, April 1999. | |||
| [RFC2566] | [RFC2566] | |||
| R. deBry, T. Hastings, R. Herriot, S. Isaacson, P. Powell, | R. deBry, T. Hastings, R. Herriot, S. Isaacson, P. Powell, | |||
| "Internet Printing Protocol/1.0: Model and Semantics", RFC 2566, | "Internet Printing Protocol/1.0: Model and Semantics", RFC 2566, | |||
| April 1999. | April 1999. | |||
| [RFC2567] | [RFC2567] | |||
| Wright, D., "Design Goals for an Internet Printing Protocol", RFC | Wright, D., "Design Goals for an Internet Printing Protocol", RFC | |||
| 2567, April 1999. | 2567, April 1999. | |||
| [RFC2568] | [RFC2568] | |||
| Zilles, S., "Rationale for the Structure and Model and Protocol for | Zilles, S., "Rationale for the Structure and Model and Protocol for | |||
| the Internet Printing Protocol", RFC 2568, April 1999. | the Internet Printing Protocol", RFC 2568, April 1999. | |||
| [RFC2569] | [RFC2569] | |||
| Herriot, R., Hastings, T., Jacobs, N., Martin, J., "Mapping between | Herriot, R., Hastings, T., Jacobs, N., Martin, J., "Mapping between | |||
| LPD and IPP Protocols", RFC 2569, April 1999. | LPD and IPP Protocols", RFC 2569, April 1999. | |||
| [RFC2616] | [RFC2616] | |||
| R. Fielding, J. Gettys, J. Mogul, H. Frystyk, L. Masinter, P. | R. Fielding, J. Gettys, J. Mogul, H. Frystyk, L. Masinter, P. | |||
| Leach, T. Berners-Lee, "Hypertext Transfer Protocol - HTTP/1.1", | Leach, T. Berners-Lee, "Hypertext Transfer Protocol - HTTP/1.1", | |||
| RFC 2616, June 1999. | RFC 2616, June 1999. | |||
| [RFC2910] | ||||
| Herriot, R., Butler, S., Moore, P., Turner, R., "Internet Printing | ||||
| Protocol/1.1: Encoding and Transport", draft-ietf-ipp-protocol-v11- | ||||
| 05.txt, March 1, 2000. | ||||
| [RFC2911] | ||||
| Isaacson, S., deBry, R., Hastings, T., Herriot, R., Powell, P., | ||||
| "Internet Printing Protocol/1.1: Model and Semantics", RFC 2911, | ||||
| September 2000. | ||||
| 13 Author's Addresses | 13 Author's Addresses | |||
| Roger deBry | Roger deBry | |||
| Utah Valley State College | Utah Valley State College | |||
| Orem, UT 84058 | Orem, UT 84058 | |||
| Phone: (801) 222-8000 | Phone: (801) 222-8000 | |||
| EMail: debryro@uvsc.edu | EMail: debryro@uvsc.edu | |||
| Tom Hastings | Tom Hastings | |||
| Xerox Corporation | Xerox Corporation | |||
| 737 Hawaii St. ESAE 231 | 737 Hawaii St. ESAE 231 | |||
| El Segundo, CA 90245 | El Segundo, CA 90245 | |||
| Phone: 310-333-6413 | Phone: 310-333-6413 | |||
| Fax: 310-333-5514 | Fax: 310-333-5514 | |||
| e-mail: hastings@cp10.es.xerox.com | e-mail: hastings@cp10.es.xerox.com | |||
| Robert Herriot | Robert Herriot | |||
| Xerox Corp. | Xerox Corp. | |||
| 3400 Hill View Ave, Building 1 | 3400 Hill View Ave, Building 1 | |||
| Palo Alto, CA 94304 | Palo Alto, CA 94304 | |||
| Phone: 650-813-7696 | Phone: 650-813-7696 | |||
| Fax: 650-813-6860 | Fax: 650-813-6860 | |||
| e-mail: robert.herriot@pahv.xerox.com | e-mail: robert.herriot@pahv.xerox.com | |||
| Kirk Ocke | Kirk Ocke | |||
| Xerox Corp. | Xerox Corp. | |||
| 800 Phillips Rd | 800 Phillips Rd | |||
| M/S 139-05A | M/S 139-05A | |||
| Webster, NY 14580 | Webster, NY 14580 | |||
| skipping to change at page 20, line 4 ¶ | skipping to change at page 25, line 46 ¶ | |||
| Fax: 650-813-6860 | Fax: 650-813-6860 | |||
| e-mail: robert.herriot@pahv.xerox.com | e-mail: robert.herriot@pahv.xerox.com | |||
| Kirk Ocke | Kirk Ocke | |||
| Xerox Corp. | Xerox Corp. | |||
| 800 Phillips Rd | 800 Phillips Rd | |||
| M/S 139-05A | M/S 139-05A | |||
| Webster, NY 14580 | Webster, NY 14580 | |||
| Phone: (716) 442-4832 | Phone: (716) 442-4832 | |||
| EMail: kirk.ocke@usa.xerox.com | EMail: kirk.ocke@usa.xerox.com | |||
| Peter Zehler | Peter Zehler | |||
| Xerox Corp. | Xerox Corp. | |||
| 800 Phillips Rd | 800 Phillips Rd | |||
| M/S 139-05A | M/S 139-05A | |||
| Webster, NY 14580 | Webster, NY 14580 | |||
| Phone: (716) 265-8755 | Phone: (716) 265-8755 | |||
| EMail: peter.zehler@usa.xerox.com | EMail: peter.zehler@usa.xerox.com | |||
| 14 Appendix A: Encoding Example of a Simple Collection | 14 Appendix A: Encoding Example of a Simple Collection | |||
| The overall structure of the collection value can be pictorially | The overall structure of the collection value can be pictorially | |||
| represented as: | represented as: | |||
| " media-size " = | " media-size " = | |||
| { "x-dimension" = 6; | { "x-dimension" = 6; | |||
| "y-dimension" = 4 | "y-dimension" = 4 | |||
| } | } | |||
| A simplified view of the encoding would look like this: | A simplified view of the encoding would look like this: | |||
| Table 6 - Overview Encoding of simple collection | Table 6 - Overview Encoding of simple collection | |||
| Tag Value Name Value | Tag Value Name Value | |||
| begCollection media-size "" | begCollection media-size "" | |||
| memberAttrName "" x-dimension | ||||
| integer "" 6 | ||||
| memberAttrName "" y-dimension | ||||
| integer "" 4 | ||||
| endCollection "" "" | ||||
| Note: "" represents a name or value whose length is 0. | memberAttrName "" x-dimension | |||
| Table 7 - Example Encoding of simple collection | integer "" 6 | |||
| Octets Symbolic Protocol comments | memberAttrName "" y-dimension | |||
| Value field | ||||
| 0x34 begCollection value-tag beginning of the "media- | integer "" 4 | |||
| endCollection "" "" | ||||
| Note: "" represents a name or value whose length is 0. | ||||
| Table 7 - Example Encoding of simple collection | ||||
| Octets Symbolic Value Protocol comments | ||||
| field | ||||
| 0x34 begCollection value-tag beginning of the "media- | ||||
| size" collection attribute | size" collection attribute | |||
| 0x000A name- length of (collection) | ||||
| Octets Symbolic Value Protocol comments | ||||
| field | ||||
| 0x000A name- length of (collection) | ||||
| length attribute name | length attribute name | |||
| media-size media-size name name of (collection) | ||||
| media-size media-size name name of (collection) | ||||
| attribute | attribute | |||
| 0x0000 value- defined to be 0 for this | ||||
| 0x0000 value- defined to be 0 for this | ||||
| length type | length type | |||
| no value (since value- | no value (since value- | |||
| length was 0) | length was 0) | |||
| 0x4A memberAttrNam value-tag starts member attribute: | 0x4A memberAttrName value-tag starts member attribute: | |||
| e "x-dimension" | "x-dimension" | |||
| 0x0000 name- defined to be 0 for this | 0x0000 name- defined to be 0 for this | |||
| length type, so part of 1setOf | length type, so part of 1setOf | |||
| no name (since name-length | no name (since name-length | |||
| was 0) | was 0) | |||
| 0x000B value- length of "x-dimension" | ||||
| 0x000B value- length of "x-dimension" | ||||
| length keyword | length keyword | |||
| st | ||||
| x-dimension x-dimension value name of 1 collection | x-dimension x-dimension value name of 1st collection | |||
| member attribute | member attribute | |||
| 0x21 integer type value-tag attribute type | 0x21 integer type value-tag attribute type | |||
| 0x0000 name- 0 indicates 1setOf | ||||
| 0x0000 name- 0 indicates 1setOf | ||||
| length | length | |||
| no name (since name-length | no name (since name-length | |||
| was 0) | was 0) | |||
| 0x0004 value- length of an integer = 4 | ||||
| 0x0004 value- length of an integer = 4 | ||||
| length | length | |||
| st | ||||
| 0x0006 value value of 1 collection | 0x0006 value value of 1st collection | |||
| member attribute | member attribute | |||
| Octets Symbolic Protocol comments | Octets Symbolic Value Protocol comments | |||
| Value field | field | |||
| 0x4A memberAttrNam value-tag starts a new member | 0x4A memberAttrName value-tag starts a new member | |||
| e attribute: "y-dimension" | attribute: "y-dimension" | |||
| 0x0000 name- defined to be 0 for this | 0x0000 name- defined to be 0 for this | |||
| length type, so part of 1setOf | length type, so part of 1setOf | |||
| no name (since name-length | no name (since name-length | |||
| was 0) | was 0) | |||
| 0x000B value- length of the "y-dimension" | ||||
| length keyword | 0x000B value- length of the "y- | |||
| nd | length dimension" keyword | |||
| y-dimension y-dimension value name of 2 collection | ||||
| y-dimension y-dimension value name of 2nd collection | ||||
| member attribute | member attribute | |||
| 0x21 integer type value-tag attribute type | 0x21 integer type value-tag attribute type | |||
| 0x0000 name- 0 indicates 1setOf for | ||||
| 0x0000 name- 0 indicates 1setOf for | ||||
| length media-size | length media-size | |||
| no name (since name-length | no name (since name-length | |||
| was 0) | was 0) | |||
| 0x0004 value- length of an integer = 4 | ||||
| 0x0004 value- length of an integer = 4 | ||||
| length | length | |||
| nd | ||||
| 0x0004 value value of 2 collection | 0x0004 value value of 2nd collection | |||
| member attribute | member attribute | |||
| 0x37 endCollection value-tag end of the collection | 0x37 endCollection value-tag end of the collection | |||
| 0x0000 name- defined to be 0 for this | ||||
| 0x0000 name- defined to be 0 for this | ||||
| length type, so part of 1setOf | length type, so part of 1setOf | |||
| no name (since name-length | no name (since name-length | |||
| was 0) | was 0) | |||
| 0x0000 value- defined to be 0 for this | ||||
| 0x0000 value- defined to be 0 for this | ||||
| length type | length type | |||
| Octets Symbolic Value Protocol comments | ||||
| field | ||||
| no value (since value- | no value (since value- | |||
| length was 0) | length was 0) | |||
| 15 Appendix B: Encoding Example of 1setOf Collection | 15 Appendix B: Encoding Example of 1setOf Collection | |||
| The overall structure of the collection value can be pictorially | The overall structure of the collection value can be pictorially | |||
| represented as: | represented as: | |||
| "media-size-supported" = | "media-size-supported" = | |||
| { "x-dimension" = 6; | { "x-dimension" = 6; | |||
| "y-dimension" = 4 | "y-dimension" = 4 | |||
| }, | }, | |||
| { "x-dimension" = 3; | { "x-dimension" = 3; | |||
| "y-dimension" = 5 | "y-dimension" = 5 | |||
| }; | }; | |||
| A simplified view of the encoding would look like this: | A simplified view of the encoding would look like this: | |||
| Table 8 - Overview Encoding of 1setOf collection | Table 8 - Overview Encoding of 1setOf collection | |||
| Tag Value Name Value | Tag Value Name Value | |||
| begCollection media-size-supported "" | begCollection media-size- "" | |||
| memberAttrName "" x-dimension | supported | |||
| integer "" 6 | ||||
| memberAttrName "" y-dimension | ||||
| integer "" 4 | ||||
| endCollection "" "" | ||||
| begCollection "" "" | ||||
| memberAttrName "" x-dimension | ||||
| integer "" 3 | ||||
| memberAttrName "" y-dimension | ||||
| integer "" 5 | ||||
| endCollection "" "" | ||||
| Table 9 - Example Encoding of 1setOf collection | memberAttrName "" x-dimension | |||
| Octets Symbolic Protocol comments | integer "" 6 | |||
| Value field | ||||
| 0x34 begCollection value-tag beginning of the "media- | memberAttrName "" y-dimension | |||
| integer "" 4 | ||||
| endCollection "" "" | ||||
| begCollection "" "" | ||||
| memberAttrName "" x-dimension | ||||
| integer "" 3 | ||||
| memberAttrName "" y-dimension | ||||
| integer "" 5 | ||||
| endCollection "" "" | ||||
| Table 9 - Example Encoding of 1setOf collection | ||||
| Octets Symbolic Value Protocol comments | ||||
| field | ||||
| 0x34 begCollection value-tag beginning of the "media- | ||||
| size-supported (1setOf | size-supported (1setOf | |||
| collection" attribute | collection" attribute | |||
| 0x00014 name- length of (collection) | ||||
| 0x00014 name- length of (collection) | ||||
| length attribute name | length attribute name | |||
| media-size- media-size- name name of (collection) | ||||
| supported supported attribute | media-size- media-size- name name of (collection) | |||
| 0x0000 value- defined to be 0 for this | supported supported attribute | |||
| 0x0000 value- defined to be 0 for this | ||||
| length type | length type | |||
| no value (since value- | no value (since value- | |||
| length was 0) | length was 0) | |||
| 0x4A memberAttrNam value-tag starts member attribute: | ||||
| e "x-dimension" | 0x4A memberAttrName value-tag starts member attribute: | |||
| 0x0000 name- defined to be 0 for this | "x-dimension" | |||
| 0x0000 name- defined to be 0 for this | ||||
| length type, so part of 1setOf | length type, so part of 1setOf | |||
| no name (since name-length | no name (since name-length | |||
| was 0) | was 0) | |||
| 0x000B value- length of "x-dimension" | ||||
| Octets Symbolic Value Protocol comments | ||||
| field | ||||
| 0x000B value- length of "x-dimension" | ||||
| length keyword | length keyword | |||
| st | ||||
| x-dimension x-dimension value name of 1 collection | x-dimension x-dimension value name of 1st collection | |||
| member attribute | member attribute | |||
| 0x21 integer type value-tag attribute type | 0x21 integer type value-tag attribute type | |||
| 0x0000 name- 0 indicates 1setOf | ||||
| 0x0000 name- 0 indicates 1setOf | ||||
| length | length | |||
| no name (since name-length | no name (since name-length | |||
| was 0) | was 0) | |||
| Octets Symbolic Protocol comments | 0x0004 value- length of an integer = 4 | |||
| Value field | ||||
| 0x0004 value- length of an integer = 4 | ||||
| length | length | |||
| st | ||||
| 0x0006 value value of 1 collection | 0x0006 value value of 1st collection | |||
| member attribute | member attribute | |||
| 0x4A memberAttrNam value-tag starts member attribute: | ||||
| e "y-dimension" | 0x4A memberAttrName value-tag starts member attribute: | |||
| 0x0000 name- defined to be 0 for this | "y-dimension" | |||
| 0x0000 name- defined to be 0 for this | ||||
| length type, so part of 1setOf | length type, so part of 1setOf | |||
| no name (since name-length | no name (since name-length | |||
| was 0) | was 0) | |||
| 0x000B value- length of the "y-dimension" | ||||
| length keyword | 0x000B value- length of the "y- | |||
| nd | length dimension" keyword | |||
| y-dimension y-dimension value name of 2 collection | ||||
| y-dimension y-dimension value name of 2nd collection | ||||
| member attribute | member attribute | |||
| 0x21 integer type value-tag attribute type | 0x21 integer type value-tag attribute type | |||
| 0x0000 name- 0 indicates 1setOf | ||||
| 0x0000 name- 0 indicates 1setOf | ||||
| length | length | |||
| no name (since name-length | no name (since name-length | |||
| was 0) | was 0) | |||
| 0x0004 value- length of an integer = 4 | ||||
| Octets Symbolic Value Protocol comments | ||||
| field | ||||
| 0x0004 value- length of an integer = 4 | ||||
| length | length | |||
| nd | ||||
| 0x0004 value value of 2 collection | 0x0004 value value of 2nd collection | |||
| member attribute | member attribute | |||
| 0x37 endCollection value-tag end of the collection | 0x37 endCollection value-tag end of the collection | |||
| 0x0000 name- defined to be 0 for this | ||||
| 0x0000 name- defined to be 0 for this | ||||
| length type, so part of 1setOf | length type, so part of 1setOf | |||
| no name (since name-length | no name (since name-length | |||
| was 0) | was 0) | |||
| 0x0000 value- defined to be 0 for this | ||||
| 0x0000 value- defined to be 0 for this | ||||
| length type | length type | |||
| no value (since value- | no value (since value- | |||
| length was 0) | length was 0) | |||
| nd | ||||
| 0x34 begCollection value-tag beginning of the 2 member | 0x34 begCollection value-tag beginning of the 2nd | |||
| of the 1SetOf "sizes-avail | member of the 1SetOf | |||
| " collection attribute | "sizes-avail " collection | |||
| 0x0000 name- Zero length name indicates | attribute | |||
| 0x0000 name- Zero length name indicates | ||||
| length this is member of previous | length this is member of previous | |||
| attribute | attribute | |||
| name no name (since name-length | name no name (since name-length | |||
| was 0) | was 0) | |||
| 0x0000 value- defined to be 0 for this | ||||
| 0x0000 value- defined to be 0 for this | ||||
| length type | length type | |||
| no value (since value- | no value (since value- | |||
| length was 0) | length was 0) | |||
| 0x4A memberAttrNam value-tag starts member attribute: | ||||
| e "x-dimension" | 0x4A memberAttrName value-tag starts member attribute: | |||
| 0x0000 name- defined to be 0 for this | "x-dimension" | |||
| 0x0000 name- defined to be 0 for this | ||||
| length type, so part of 1setOf | length type, so part of 1setOf | |||
| Octets Symbolic Protocol comments | Octets Symbolic Value Protocol comments | |||
| Value field | field | |||
| no name (since name-length | no name (since name-length | |||
| was 0) | was 0) | |||
| 0x000B value- length of "x-dimension" | ||||
| 0x000B value- length of "x-dimension" | ||||
| length keyword | length keyword | |||
| st | ||||
| x-dimension x-dimension value name of 1 collection | x-dimension x-dimension value name of 1st collection | |||
| member attribute | member attribute | |||
| 0x21 integer type value-tag attribute type | 0x21 integer type value-tag attribute type | |||
| 0x0000 name- 0 indicates 1setOf | ||||
| 0x0000 name- 0 indicates 1setOf | ||||
| length | length | |||
| no name (since name-length | no name (since name-length | |||
| was 0) | was 0) | |||
| 0x0004 value- length of an integer = 4 | ||||
| 0x0004 value- length of an integer = 4 | ||||
| length | length | |||
| st | ||||
| 0x0003 value value of 1 collection | 0x0003 value value of 1st collection | |||
| member attribute | member attribute | |||
| 0x4A memberAttrNam value-tag starts member attribute: | 0x4A memberAttrName value-tag starts member attribute: | |||
| e "y-dimension" | "y-dimension" | |||
| 0x0000 name- defined to be 0 for this | ||||
| 0x0000 name- defined to be 0 for this | ||||
| length type, so part of 1setOf | length type, so part of 1setOf | |||
| no name (since name-length | no name (since name-length | |||
| was 0) | was 0) | |||
| 0x000B value- length of the "y-dimension" | ||||
| length keyword | 0x000B value- length of the "y- | |||
| nd | length dimension" keyword | |||
| y-dimension y-dimension value name of 2 collection | ||||
| y-dimension y-dimension value name of 2nd collection | ||||
| member attribute | member attribute | |||
| 0x21 integer type value-tag attribute type | 0x21 integer type value-tag attribute type | |||
| 0x0000 name- 0 indicates 1setOf | ||||
| 0x0000 name- 0 indicates 1setOf | ||||
| length | length | |||
| Octets Symbolic Value Protocol comments | ||||
| field | ||||
| no name (since name-length | no name (since name-length | |||
| was 0) | was 0) | |||
| 0x0004 value- length of an integer = 4 | ||||
| 0x0004 value- length of an integer = 4 | ||||
| length | length | |||
| nd | ||||
| 0x0005 value value of 2 collection | 0x0005 value value of 2nd collection | |||
| member attribute | member attribute | |||
| 0x37 endCollection value-tag end of the 1setOf | 0x37 endCollection value-tag end of the 1setOf | |||
| collection value | collection value | |||
| 0x0000 name- defined to be 0 for this | ||||
| 0x0000 name- defined to be 0 for this | ||||
| length type, so part of 1setOf | length type, so part of 1setOf | |||
| no name (since name-length | no name (since name-length | |||
| was 0) | was 0) | |||
| 0x0000 value- defined to be 0 for this | ||||
| 0x0000 value- defined to be 0 for this | ||||
| length type | length type | |||
| no value (since value- | no value (since value- | |||
| length was 0) | length was 0) | |||
| 16 Appendix C: Encoding Example of Collection containing 1setOf XXX | 16 Appendix C: Encoding Example of Collection containing 1setOf XXX | |||
| attribute | attribute | |||
| The overall structure of the collection value can be pictorially | The overall structure of the collection value can be pictorially | |||
| represented as: | represented as: | |||
| "wagons" = | "wagons" = | |||
| { "colors" = red, blue; | { "colors" = red, blue; | |||
| "sizes" = 4, 6, 8 | "sizes" = 4, 6, 8 | |||
| } | } | |||
| A simplified view of the encoding would look like this: | A simplified view of the encoding would look like this: | |||
| Table 10 - Overview Encoding of collection with 1setOf value | Table 10 - Overview Encoding of collection with 1setOf value | |||
| Tag Value Name Value | Tag Value Name Value | |||
| begCollection wagons "" | begCollection wagons "" | |||
| memberAttrName "" colors | ||||
| keyword "" red | ||||
| keyword "" blue | ||||
| memberAttrName "" sizes | ||||
| integer "" 4 | ||||
| integer "" 6 | ||||
| integer "" 8 | ||||
| endCollection "" "" | ||||
| Table 11 - Example Encoding of collection with 1setOf value | memberAttrName "" colors | |||
| Octets Symbolic Protocol comments | keyword "" red | |||
| Value field | ||||
| 0x34 begCollection value-tag beginning of the "wagons" | keyword "" blue | |||
| memberAttrName "" sizes | ||||
| integer "" 4 | ||||
| integer "" 6 | ||||
| integer "" 8 | ||||
| endCollection "" "" | ||||
| Table 11 - Example Encoding of collection with 1setOf value | ||||
| Octets Symbolic Value Protocol comments | ||||
| field | ||||
| 0x34 begCollection value-tag beginning of the "wagons" | ||||
| collection attribute | collection attribute | |||
| 0x0005 name- length of (collection) | ||||
| 0x0005 name- length of (collection) | ||||
| length attribute name | length attribute name | |||
| wagons wagons name name of (collection) | ||||
| wagons wagons name name of (collection) | ||||
| attribute | attribute | |||
| 0x0000 value- defined to be 0 for this | ||||
| 0x0000 value- defined to be 0 for this | ||||
| length type | length type | |||
| no value (since value- | no value (since value- | |||
| length was 0) | length was 0) | |||
| 0x4A memberAttrNam value-tag starts a new member | Octets Symbolic Value Protocol comments | |||
| e attribute: "colors" | field | |||
| 0x0000 name- defined to be 0 for this | 0x4A memberAttrName value-tag starts a new member | |||
| attribute: "colors" | ||||
| 0x0000 name- defined to be 0 for this | ||||
| length type, so part of 1setOf | length type, so part of 1setOf | |||
| no name (since name-length | no name (since name-length | |||
| was 0) | was 0) | |||
| 0x0006 value- length of "colors" keyword | ||||
| length | ||||
| Octets Symbolic Protocol comments | 0x0006 value- length of "colors" keyword | |||
| Value field | length | |||
| st | colors colosr value value is name of 1st | |||
| colors colosr value value is name of 1 member | member attribute | |||
| attribute | ||||
| 0x44 keyword type value-tag keyword type | 0x44 keyword type value-tag keyword type | |||
| 0x0000 name- 0 indicates 1setOf wagons | 0x0000 name- 0 indicates 1setOf wagons | |||
| length | length | |||
| no name (since name-length | no name (since name-length | |||
| was 0) | was 0) | |||
| 0x0004 value- | ||||
| 0x0004 value- | ||||
| length | length | |||
| st | ||||
| blue blue value value of 1 member | blue blue value value of 1st member | |||
| attribute | attribute | |||
| 0x44 keyword type value-tag keyword type | 0x44 keyword type value-tag keyword type | |||
| 0x0000 name- 0 indicates 1setOf wagons | 0x0000 name- 0 indicates 1setOf wagons | |||
| length | length | |||
| no name (since name-length | no name (since name-length | |||
| was 0) | was 0) | |||
| 0x0003 value- | ||||
| 0x0003 value- | ||||
| length | length | |||
| st | ||||
| red red value value of 1 member | red red value value of 1st member | |||
| attribute | attribute | |||
| 0x4A memberAttrNam value-tag starts a new member | Octets Symbolic Value Protocol comments | |||
| e attribute: "sizes" | field | |||
| 0x0000 name- defined to be 0 for this | 0x4A memberAttrName value-tag starts a new member | |||
| attribute: "sizes" | ||||
| 0x0000 name- defined to be 0 for this | ||||
| length type, so part of 1setOf | length type, so part of 1setOf | |||
| no name (since name-length | no name (since name-length | |||
| was 0) | was 0) | |||
| 0x0005 value- length of "length-avail" | ||||
| 0x0005 value- length of "length-avail" | ||||
| length keyword | length keyword | |||
| nd | ||||
| sizes sizes value Name of 2 member | sizes sizes value Name of 2nd member | |||
| attribute | attribute | |||
| 0x21 integer type value-tag attribute type | 0x21 integer type value-tag attribute type | |||
| 0x0000 name- 0 indicates 1setOf wagons | ||||
| 0x0000 name- 0 indicates 1setOf wagons | ||||
| length | length | |||
| no name (since name-length | no name (since name-length | |||
| was 0) | was 0) | |||
| 0x0004 value- length of an integer = 4 | ||||
| 0x0004 value- length of an integer = 4 | ||||
| length | length | |||
| st | ||||
| 0x0004 value 1 value for 1SetOf | 0x0004 value 1st value for 1SetOf | |||
| integer attribute | integer attribute | |||
| 0x21 integer type value-tag attribute type | 0x21 integer type value-tag attribute type | |||
| 0x0000 name- 0 indicates 1setOf | ||||
| length | ||||
| Octets Symbolic Protocol comments | 0x0000 name- 0 indicates 1setOf | |||
| Value field | length | |||
| no name (since name-length | no name (since name-length | |||
| was 0) | was 0) | |||
| 0x0004 value- length of an integer = 4 | ||||
| 0x0004 value- length of an integer = 4 | ||||
| length | length | |||
| nd | ||||
| 0x0006 value 2 value for 1SetOf | 0x0006 value 2nd value for 1SetOf | |||
| integer attribute | integer attribute | |||
| 0x21 integer type value-tag attribute type | Octets Symbolic Value Protocol comments | |||
| 0x0000 name- 0 indicates 1setOf | field | |||
| 0x21 integer type value-tag attribute type | ||||
| 0x0000 name- 0 indicates 1setOf | ||||
| length | length | |||
| no name (since name-length | no name (since name-length | |||
| was 0) | was 0) | |||
| 0x0004 value- length of an integer = 4 | ||||
| 0x0004 value- length of an integer = 4 | ||||
| length | length | |||
| rd | ||||
| 0x0008 value 3 value for 1SetOf | 0x0008 value 3rd value for 1SetOf | |||
| integer attribute | integer attribute | |||
| 0x37 endCollection value-tag end of the collection | 0x37 endCollection value-tag end of the collection | |||
| 0x0000 name- defined to be 0 for this | ||||
| 0x0000 name- defined to be 0 for this | ||||
| length type, so part of 1setOf | length type, so part of 1setOf | |||
| no name (since name-length | no name (since name-length | |||
| was 0) | was 0) | |||
| 0x0000 value- defined to be 0 for this | ||||
| 0x0000 value- defined to be 0 for this | ||||
| length type | length type | |||
| no value (since value- | no value (since value- | |||
| length was 0) | length was 0) | |||
| 17 Appendix D: Full Copyright Statement | 17 Appendix D: Full Copyright Statement | |||
| Copyright (C) The Internet Society (1998,1999,2000). All Rights Reserved | Copyright (C) The Internet Society (1998,1999,2000,2001). All Rights | |||
| Reserved | ||||
| This document and translations of it may be copied and furnished to | This document and translations of it may be copied and furnished to | |||
| others, and derivative works that comment on or otherwise explain it or | others, and derivative works that comment on or otherwise explain it | |||
| assist in its implementation may be prepared, copied, published and | or assist in its implementation may be prepared, copied, published | |||
| distributed, in whole or in part, without restriction of any kind, | and distributed, in whole or in part, without restriction of any | |||
| provided that the above copyright notice and this paragraph are included | kind, provided that the above copyright notice and this paragraph are | |||
| on all such copies and derivative works. However, this document itself | included on all such copies and derivative works. However, this | |||
| may not be modified in any way, such as by removing the copyright notice | document itself may not be modified in any way, such as by removing | |||
| or references to the Internet Society or other Internet organizations, | the copyright notice or references to the Internet Society or other | |||
| except as needed for the purpose of developing Internet standards in | Internet organizations, except as needed for the purpose of | |||
| which case the procedures for copyrights defined in the Internet | developing Internet standards in which case the procedures for | |||
| Standards process must be followed, or as required to translate it into | copyrights defined in the Internet Standards process must be | |||
| languages other than English. | followed, or as required to translate it into languages other than | |||
| English. | ||||
| The limited permissions granted above are perpetual and will not be | The limited permissions granted above are perpetual and will not be | |||
| revoked by the Internet Society or its successors or assigns. | revoked by the Internet Society or its successors or assigns. | |||
| This document and the information contained herein is provided on an "AS | This document and the information contained herein is provided on an | |||
| IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK | "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING | |||
| FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT | TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING | |||
| LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT | BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION | |||
| INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR | HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF | |||
| FITNESS FOR A PARTICULAR PURPOSE. | MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | |||
| End of changes. 317 change blocks. | ||||
| 687 lines changed or deleted | 960 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||