I've been working a lot with NDOC recently and find the new extensibility feature excellent. In the team I'm working with at the moment they wanted to be able to define a revision history section that would be displayed within the documentation, so after reading the docs I knocked up the following tags...

  <revision author="Morgan Skinner" date="08/04/2005">Initial Version</revision>
Then when I compile the documentation I then get the following in the output...

The main issue I came up with was getting the output to look the same as the NDOC stuff - this boils down to using the same CSS styles as are used by NDOC, which aren't well document (well, aren't really documented at all as far as I can see). Being a firm fan of Reflector I had a poke around within the NDoc.Documenter.Msdn2 assembly and found the .xslt files used by NDOC. Then I found the appropriate styles for the stuff I wanted to put in and now have a nice integrated solution.

In order to get all this magic to work, you need to create a .xslt file of your own to process your tags. You set this in the NDOC project using the ExtensibilityStylesheet property of the solution, and that's about all there is to it. I've created another folder in my .NET project called 'Documentation' and stored the .xslt file there (my NDOC project lives in the root directory for my project too). The .xslt for this is shown below...

<xsl:stylesheet version="1.0" 
  <xsl:template match="revisionHistory" mode="after-remarks-section">
    <h4 class="dtH4">Revision History</h4>
        <div class="tablediv">
      <table class="dtTABLE" cellspacing="0" width="100%" >
        <tr valign="top">
                <th width="20%">Author</th>
                <th width="20%">Date</th>
                <th width="60%">Description</th>
        <xsl:call-template name="revisions"/>
  <xsl:template name="revisions">
    <xsl:for-each select="revision">
      <tr valign="top">
        <td><xsl:value-of select="@author"/></td>
        <td><xsl:value-of select="@date"/></td>
        <td><xsl:apply-templates select="." mode="slashdoc"/></td>

The main thing of note here is the use of <xsl:apply-templates select="." mode="slashdoc"/> within the descriptive part of the stylesheet - this ensures that any sub-tags (such as <see>) in your description will be processed by NDOC, thereby permitting you to link to other topics in your help file.

With the stylesheet setup you should now be able to compile your help file and get a new section including the revision history section.

The two styles I'm using here are dtH4 for the heading and dtTABLE. I found these by looking at the .xslt resources within the NDoc.Documenter.Msdn2 assembly. There are a lot of .xslt files included within the assembly but probably the most useful to start looking at is NDoc.Documenter.Msdn2.xslt.common.xslt.

If you would like to download the .xslt file rather than type it in yourself, click here.