CHAPTER 10
874
Document Interchange
attribute objects is defined by a dictionary called the
class map,
kept in the
ClassMap
entry of the structure tree root (see Table 10.9 on page 857). Each key
in the class map is a name object denoting the name of a class. The corresponding
value is an attribute object or an array of such objects.
Note:
PDF attribute classes are unrelated to the concept of a class in object-oriented
programming languages such as Java and C++. Attribute classes are strictly a mech-
anism for storing attribute information in a more compact form; they have no in-
heritance properties like those of true object-oriented classes.
The
C
entry in a structure element dictionary (see Table 10.10 on page 858) con-
tains a class name or an array of class names (typically accompanied by revision
numbers as well; see “Attribute Revision Numbers,” below). For each class named
in the
C
entry, the corresponding attribute object or objects are considered to be
attached to the given structure element, along with those identified in the
element’s
A
entry. If both the
A
and
C
entries are present and a given attribute is
specified by both, the one specified by the
A
entry takes precedence.
Attribute Revision Numbers
When an application modifies a structure element or its contents, the change may
affect the validity of attribute information attached to that structure element by
other applications. A system of
revision numbers
allows applications to detect
such changes and update their own attribute information accordingly, as de-
scribed in this section.
A structure element has a revision number, stored in the
R
entry in the structure
element dictionary (see Table 10.10 on page 858). Initially, the revision number is
0 (the default value if no
R
entry is present). When an application modifies the
structure element or any of its content items, it may signal the change by
incrementing the revision number.
Note:
The revision number is unrelated to the generation number associated with
an indirect object (see Section 3.2.9, “Indirect Objects”).