The Capacity Set
[Mirrored from: http://thok.let.rug.nl/~s0760412/hypertext/capacity.html]
In the capacity set, you specify the maximum size of your document. Before we discuss the details, let us look at a simple example, which explicitly states several capacities, leaving not mentioned ones unchanged.
Following is a list of the standard's settings, and a short explanation. Each item will mention the keyword of a capacity category and the way it can be calculated. According to the standard, each capacity is declared the value 35000.
- TOTALCAP is the grand total of individual capacity points.
- ENTCAP is calculated by multiplying NAMELEN, the maximum length of an SGML name, by the number of entities.
- ENTCHCAP can be calculated by counting the characters of entity text.
- ELEMCAP can be obtainde by multiplying the number of entities defined by NAMELEN.
- GRPCAP's value is found by counting the content tokens at any level of a content model (where a data tag group is three tokens) and multiplying that number by NAMELEN.
- EXGRPCAP is equal to the multiplication of NAMELEN by the total of exclusion or inclusion exceptions group.
- EXNMCAP is multiplication of, once again, NAMELEN by a name in an exclusion or inclusion exceptions group.
- ATTCAP is the sum of NAMELEN for each attribute defined plus NAMELEN for each occurence (whether or not the attribute is specified) in a link set declaration of an element type associated with the definition, or, in an entity declaration, of a notation name associated with the definition.
- ATTCHCAP is equal to counting each character of normalized length of an attribute value defined as a default value, or explicitly specified (not defaulted) in a link set declaration or data attribute specification.
- By multiplying NAMELEN by the number of tokens defined in an attribute value name group or name token group, you get the value of AVGRCAP.
- NOTCAP is equal to NAMELEN multiplied by the data content notation defined.
- NOTCHCAP is the number of characters in notation identifiers.
- IDCAP is established by calculating the value of the multiplication of NAMELEN by number of ID attributes specified
- IDREFCAP is established by multiplying NAMELEN by the number of IDREF attributes specified (explicitly or by default).
- MAPCAP is another multiplication of NAMELEN but now by the total number of short reference maps declared, plus, for each map declared, NAMELEN for each short reference delimiter in the concrete syntax (whether or not the delimiter is in the map).
- Multiplying the number of link types or link sets defined by NAMELEN gives you the value of LKSETCAP.
- And finally, you can calculate the value of LKNMCAP by multiplying the total number of document types or elements in each link type or link set declaration.
The above list is adapted from Goldfarb's book on SGML (to be precise, figure 5 on page 367), I hope he does not mind me quoting him not quite literally. I had to do this because I myself do not quite understand each and every capacity category.
Finally, I have to mention the possibility of declaring the capacity set by a public identifier. Your declaration would then be like the following: CAPACITY PUBLIC public identifier. The public identifier states which one will be used.
Well, for those of you who got this far, try the following part on concrete syntax scope.