The heart of every HyperContent site is in a file called the Project Definition, which sits inside a project's repository at
/config/project-definition.xml
This file defines the kinds of pages and resources that can fill your site, the relationships between pages, other pages, and stylesheets, all the published forms of output that will be made available, as well as specifications for filesystems to publish to, or other repositories to draw data from.

This image shows the contents of the project definition file for this help web site. Each XML stanza has a corresponding number, which is referenced in the list of explanations immediately following.



    1. A single navigation file generates the site map. A site may have any number of navigation files at any level, each defining a set of rules for generating a hierarchy of labelled links. Navigation files always have definition = http://hypercontent.sourceforge.net/dtd/navigation.dtd and root = nav-template. A  navigation editor allows drag-and-drop link entry and arrangement.  Navigation hierarchies can be used in either XSL transformations or Velocity templates.
    2. A custom dictionary file allows the spell check editor to learn words that are specific to the project. A project may contain multiple dictionaries, which may allow read-write access to different individuals or groups. A dictionary file must have definition = http://hypercontent.sourceforge.net/dtd/dictionary.dtd and root = dictionary
    3. Branch pages are any index.xml file hat does not bind to a more specific pattern (e.g. /docs/**/index.xml and /index.xml would be more specific than /**/index.xml). Each branch is used to generate an HTML document by including the site map with the XHTML page source and transforming them with an XSL stysheet that spits out this very page.
    4. Leaf pages are any xml file that does not bind to a more specific pattern in the same project; thus index pages are exluded since /**/index.xml is a more specific pattern than /**/*.xml.
    5. JPEG images can go anywhere, and they will be published.
    6. GIF images can also be added anywhere, and they will be published.
    7. A single CSS file is used site-wide
    8. XSL goes in one specific directory, and will not be published
    9. DTDs go in a specific directory, and will not be published. They will be output to the browser as plain text so the browser knows how to display them.