Revision of (Design for implementing OASIS Item 12007) from Tue, 2008-07-29 14:06
Wiki page: Submitted by imagiczhang on Tue, 2008-07-29 14:06. Last updated on Tue, 2008-08-19 06:37.
What user need will be met by this feature?
Users can use @keys in <topicref> to define keys and utilize those specified keys by @keyref and @conkeyref.
What is the technical design for the change
1. Resolve key definitionKey defnitions are defined in ditamap
We will parse ditamap, find all the key definitions during first step of preprocessing. Definitions include three parts, key name, target and content, so key defs should be stored in the form of triplet. Based upon the spec, key defs are defined by using breadth-first parse method. And there should be no duplicated key defs in a single ditamap. When we find a key definition which has been defined before with the same key name, the previous one should be used and the current one should be ignored. This job will be done by GenList module. For the purpose of avoiding to re-parse ditamap in the next step, the content of key definition will also be
stored. We need a data structure to store this kind of data, we can use HashTable<String, String>, target and content can be combined into one sigle string using a stick to seperate them, and this table will be passed down to the other modules in preprocess.
In order to facilitate next related modules, the name of dita file which contains @keyref should also be stored, the list name is keyreflist. @conkeyref can be processed in DebugAndFilter, just replace it with conref. This resolution of conkeyref may demand that conreflist should include the name of the file which contains @conkeyref.
What sections of the toolkit will be impacted by the change?
See also
none
- Login to post comments
- 7066 reads