1. Map Attribute map : arcspec + ; arcspec : gispec | attspec | conspec | control ; The value is structured as a whitespace-separated sequence of tokens, logically organized as pairs. Each token is either a name or a name prefixed with '#'. Unprefixed names identify attributes, and prefixed names identify control variables. The first token in each pair, called the 'target' for short, pertains to the archetype; the second, called the 'source', to the document; each pair taken together is a statement regarding some aspect of the architectural instance. 2. Generic Identifier gispec : '#GI' gisrc ; gisrc : NAME | '#CONTENT' | '#BRIDGE' ; If the rules in effect cause the element to be taken as architectural, the source generic identifier is taken for the target by default. The '#GI' control variable overrides this default specification as follows: - If the source is a name, the value of the attribute with that name is taken as the archetype GI. - '#CONTENT' selects the syntactic data content as the source of the element type name. The content must meet the requirements of a valid name after the removal of surrounding white space. - '#BRIDGE' selects the default "bridge element name" associated with the architecture. 3. Attribute Specification attspec : NAME attsrc ; attsrc : NAME | '#GI' | '#CONTENT' | '#IMPLIED' ; An attribute specification controls an attribute, named by the target, in the archetype element. - If the source is also a name, it is that of the attribute in the start-tag whose value will be specified for the target. - The control variables '#GI' and '#CONTENT' refer to the generic identifier and syntactic data content respectively as the value specification. - The control variable '#IMPLIED' means that an attribute with this name is not asserted in the archetype if other rules in effect would otherwise cause one such in the source to be taken as architectural. 3. Content Specification conspec : '#CONTENT' consrc ; consrc : NAME | '#GI' | '#DATA' | '#ELEM' ; The '#CONTENT' control variable can be used in the target position to override the default disposition of source content as target content. NAME : The value of the named attribute provides the content. '#GI' : The generic identifier, interpreted as a literal string. '#DATA': Immediate syntactic data content only; all subelements are unconditionally treated as non-architectural. '#ELEM': All immmediate syntactic data content is suppressed; the content is determined solely by the processing of subelements. 4. Control Specifications control : CONTROL value ; value : CONTROL | NAME ; Control specifications affect the overall state of architectural processing. All such values are "inherited", in that settings are propagated down the element hierarchy, and can be overridden only by imeediate explicit specification in the map attribute. Each control has its own set of permissible source values. 4a. #SEP - Element Separator Permitted source values: #NONE - the empty string '' (default) #SPACE - the string " " The #SEP control affects the "spacing" of subelements within the parent context when the processing of adjacent subelements causes element boundaries to be lost: the appropriate string is inserted. This can be activated only when the parent context has specified #ELEM processing of content. (Extension: a NAME instead of a control variable addresses the value of the attribute as the seprator string.) 4b. #AUTO - Automatic disposition of source text Permitted source values #ON (default) - all content is architectural. #OFF - no content is architectural unless explicitly identified. 4c. #DERIV - Inherit from another map attribute 4d. #BRIDGE 4e. #INCL 4f. #EXCL 4g. #PI 4h. #COM 4i. #SPEC 4j. #DTD 4k. #MAP 5. Processing Algorithm Construct new 'state' on start-tag event (destroy on endtag event). Inherit default values. Test for architectural declaration attribute process if necessary Test for map attribute - parse update defaults Construct starttag