## Building nested documentation structures

As plug-ins contribute function to the platform, it's common to add documentation that describes the new function. How can this documentation be structured so that the user sees a cohesive and complete set of documentation instead of many individual contributions? The table of contents definition provides mechanisms for building documentation in both a top-down and bottom-up fashion.

#### Top-down nesting

Top-down nesting refers to the technique of defining a master table of contents which refers to all other included tocs. Top-down nesting is a convenient method for breaking up known content into smaller pieces. With top-down nesting, the link attribute is used in the table of contents definition to refer to linked tocs rather than providing an href.

    <toc label="Online Help Sample" topic="html/book.html">
    	<topic label="Concepts">
    		<link toc="toc_Concepts.xml" />
    	</topic>
    	<topic label="Tasks">
    		<link toc="toc_Tasks.xml" />
    	</topic>
    	<topic label="Reference">
    		<link toc="toc_Ref.xml" />
    	</topic>
    </toc>

The basic structure stays the same (Concepts, Tasks, Reference), but the individual tocs are free to evolve. They in turn might link to other sub-tocs.

#### Bottom-up composition

Bottom-up composition is more flexible in that it lets new plug-ins decide where the documentation should exist in the toc structure. Bottom-up composition is accomplished using anchor attributes. A toc defines named anchor points where other plug-ins can contribute documentation. In our example, we could add anchors so that plug-ins can contribute additional material between the concepts, tasks, and reference sections.

    <toc label="Online Help Sample" topic="html/book.html">
    	<topic label="Concepts">
    		<link toc="toc_Concepts.xml" />
    		<anchor id="postConcepts" />
    	</topic>
    	<topic label="Tasks">
    		<link toc="toc_Tasks.xml" />
    		<anchor id="postTasks" />
    	</topic>
    	<topic label="Reference">
    		<link toc="toc_Ref.xml" />
    		<anchor id="postReference" />
    	</topic>
    </toc>

Other plug-ins can then contribute to the anchor from their plug-in. This is done using the link_to attribute when defining a toc.

    <toc link_to="../com.example.helpexample/toc.xml#postConcepts" label="Late breaking info about concepts">
    	<topic>
    		...
    	</topic>
    </toc>