Chris,
> On Oct 24, 2024, at 12:27 PM, Rizzo, Christopher via ipp <ipp at pwg.org> wrote:
>> Just checking my understanding…
> Given the following RFC 8011 definition for 1setOf X attributes:
> 5.1.18. ’1setOf X’
> The ’1setOf X’ attribute syntax is one or more values of attribute
> syntax type X. This syntax type is used for multi-valued attributes.
> The syntax type is called ’1setOf’ rather than just ’setOf’ as a
> reminder that the set of values MUST NOT be empty (i.e., a set of
> size 0). Sets are normally unordered; however, each attribute
> description of this type can specify that the values MUST be in a
> certain order for that attribute.
> From 5.2.11:
> "media-ready", which differs from "media-supported" in that legal values only
> include the subset of "media-supported" values that are physically
> loaded and ready for printing with no Operator intervention required.
> If there is no media present in any trays of a printer, and media-ready attribute is not allowed to have 0 values, how is media-ready supposed to be show that there is no media ready in a Get-Printer-Attributes response? Should the Tag Value (0x13) ‘no-value’ be used instead of (0x44) keyword? This somewhat implies a modification of the data type of media-ready from 1SetOf X to no-value? If this is so, then I also presume that for any out of band values, there is no value-length or value appended to the encoding of Attribute-with-one-value
Generally speaking you can use the 'no-value' out-of-band value to specify there is no chosen value for an attribute, but in the case of "supported" and "ready" 1SetOf values the correct behavior is to *omit* the attribute from the response (no attribute == not supported or not available).
Understanding that some printing standards do require support for "media-supported", any conformance testing you do should be done with media loaded in the printer... :)
> (RFC 8010 Section 3.1.4).
> ===========================
> Also – another question I’ve always wondered but would like to verify:
> The data type “1setOf (type2 keyword | name(MAX))” seems to imply that any attributes of this type can either be
>> • 1setOf(type2 keyword) only or
> • 2setOf(name(MAX)) only
No, the syntax allows a mix of name and keyword values. That said, many implementation (CUPS included) will treat a mix of name and keyword values as a set of name values for simplicity's sake - they are all just strings in the end and keywords are just a subset of the allowed name values.
________________________
Michael Sweet