The Hytime standard (ISO/IEC 10744) introduced the concept of architectural forms. This document assumes you are already familiar with this concept. HyTime 2nd Edition generalizes this, and makes it possible to have an architecture engine which can perform architectural form processing for arbitrary architectures. SP now includes such an architecture engine. The implementation is based on a draft of HyTime 2nd Edition, and has some differences from the final version.
Non-markup sensitive applications built using SP now support architectural form processing using the -A archname option. When this option is specified, the document will be validated against all declared base architectures, and the output will be for the architectural document for that architecture: the element types, notations and attributes will be those defined in the meta-DTD.
This option is experimental and has not been subject to much testing. Please be sure to report any bugs or problems you encounter.
Although spam does not support the -A option because it works with the markup of your document, sgmlnorm does.
To use the -A option with a document, you must add
An architecture base declaration is a processing instruction of the form:
<?ArcBase archname>
The processing instruction is recognized either in the DTD or in an active LPD.
The architecture notation declaration and associated attribute definition list declaration serve to declare a number of architectural support attributes which control the architecture engine. The value for each architecture support attribute is taken from the default value, if any, specified for that attribute in the attribute definition list declaration. It is an error to declare an architecture support attribute as #REQUIRED.
The following architectural support attributes are recognized:
The value may also be implied, in which case the state of architectural processing is inherited.
If an element has an ArcSuprA attribute that was processed, its ArcFormA attribute will always be processed. Otherwise its ArcFormA attribute will be processed unless its closest ancestor that has a non-implied value for the ArcSuprA attribute suppressed processing of the ArcFormA attribute. An element whose ArcFormA attribute is processed will not be treated as architectural if it has an implied value for the ArcFormA attribute.
This is a non-standardized extension.
The value may also be implied, in which case the state of architectural processing is inherited. If no the document element has no value specified, cArcIgnD will be used.
The default value is ArcAuto.
A meta-DTD is allowed to use the following extensions:
Before any of these extensions can be used, the meta-DTD must include a declaration
<!AFDR "ISO/IEC 10744:1992">
This declaration should only be included if the extensions are used.
In all other respects a meta-DTD must be a valid SGML DTD.
A declared value of ENTITY for an attribute in a meta-DTD means that the value of the attribute must be an entity declared in the (non-meta) DTD that is architectural. An external data entity is architectural only if its notation can be mapped into a notation in the meta-DTD. All other kinds of data entities and subdoc entities are automatically architectural.
An IDREF attribute in the meta-document must have a corresponding ID in the meta-document. An attribute with a declared value of ID in the document will be automatically mapped to an attribute with a declared value of ID in the meta-DTD.
A declared value of NOTATION in the meta-DTD means that the value of the attribute must have one the values specified in the name group and that it must be a notation in the meta-DTD. (Perhaps if the attribute also has a declared value of NOTATION in the non-meta-DTD, the value should be mapped in a similar way to the notation of an external data entity.)
There are a number of differences from how architectural processing is defined in the pre-Corringendum version of the HyTime standard.
Link attributes defined by an implicit link process are treated in the same way as non-link attributes. The only complication is that SGML allows link attributes to have the same name as non-link attributes. If there is a link attribute and a non-link attribute with the same name, the architecture engine will only look at the link attribute, even if the value of the link attribute is implied. The only exception is the ArcNamrA attribute: the architecture engine will use both the link attribute and the non-link attribute, but the substitute names in the value of the non-link attribute cannot refer to link attribute names.
The -A archname option automatically activates any link type archname.
The architecture notation declaration and associated attribute definition list declaration are allowed in the LPD. Although the productions of ISO 8879 do not allow a notation declaration in a link type declaration subset, it is clearly the intent of the standard that they be allowed. You can use a -wlpd-notation option to disallow them.
An architecture for which archname is declared as a notation with a public identifier of
"ISO/IEC 10744//NOTATION AFDR ARCBASE Notation Set Architecture Definition Document//EN"
is special. The element types in the meta-DTD for this architecture are the notations of the document DTD and the attributes defined for the element types in the meta-DTD are the data attributes defined for the notations in the document DTD. For each element, the attribute with a declared value of NOTATION performs the function that the ArcFormA attribute performs for normal architectures. Only the ArcNamrA and ArcSuprA architectural support attributes can be used with this architecture.
The notation set architecture can also be declared using an architecture base declaration of the form:
<?ArcBase #NOTATION>
In this case, no architecture support attributes can be declared; ArcNamrA will be defaulted to notnames, and ArcSuprA to notsupr.
A meta-DTD can have one or more base architectures in the same way as a normal DTD. Multiple -A options can be used to exploit this. For example,
-A arch1 -A arch2
will perform architectural processing on the source document to produce an architectural document conforming to the architecture arch1 declared in the source document, and will then perform architectural processing on this architectural document to produce an architectural document conforming to the arch2 architecture declared in arch1's meta-DTD.
A document that is validated against a meta-DTD will automatically be validated against any base architectures of that meta-DTD.
This implementation differs from the AFDR specification in HyTime 2nd edition in the following ways:
#MAPTOKEN
feature is not implemented.
ArcBase
rather than IS10744 ArcBase
.
ArcBase
using APPINFO in the SGML declaration is
not supported.
James Clark