5,448,416 members and growing! (17,139 online)
Email Password   helpLost your password?
Languages » XML » XSLT     Intermediate

Simple XSLT stylesheet for Visual Studio .NET XML documentation

By Emma Burrows

A simple XSLT stylesheet to convert a Visual Studio .NET XML document into basic HTML.
XML, Windows, .NET 1.1, .NETVisual Studio, VS.NET2003, Dev

Posted: 27 Feb 2005
Updated: 21 Sep 2005
Views: 74,992
Bookmarked: 46 times
Announcements
Want a new Job?



Search    
Advanced Search
Sitemap
22 votes for this Article.
Popularity: 6.11 Rating: 4.55 out of 5
0 votes, 0.0%
1
0 votes, 0.0%
2
1 vote, 4.5%
3
6 votes, 27.3%
4
15 votes, 68.2%
5

Introduction

I admit it; I'm a documentation freak. A decade of technical support and system administration has taught me the value of obsessive documentation. That's probably why I like the XML documentation feature in Visual Studio .NET so much. It's a great tool to make sure your custom classes are intelligible to other developers (and indeed to yourself), and the XML file produced when you compile a project with /doc has the potential to serve as the basis of a simple reference guide.

However, while working on a project recently, I was pondering the question of how to turn this XML file into an HTML format of my choice, and decided that an XSL stylesheet would be a good start. So I did a search in Google for a plain XSL stylesheet that I could easily amend. There are plenty of utilities and third-party programs out there to turn XML documentation files into anything from Word documents to compiled HTML help files, but no simple XSL stylesheets leapt out at me. So I decided to write my own.

Using the code

The attached ZIP file contains a file called Documentation.xsl. The very simplest way to see what it does to a Visual Studio documentation file is to open the XML file and add the following line after the <?xml version="1.0"?> declaration at the top of the file:

<?xml-stylesheet type="text/xsl" href="Documentation.xsl"?>

Place Documentation.xsl in the same folder as your XML file. If XML files are associated with a reader that handles XSL (Internet Explorer, for instance), you should see the effect of the stylesheet when you open the XML file. Depending on how the basic HTML heading tags are configured on your system, the result will probably look horrible, as the stylesheet uses the plainest HTML tags available. But that's the point: the next step is up to you.

Changing the template

Amending the XSL file to suit your own needs is simple. I won't go into the details of how XSL files work, as there are plenty of resources to explain this (see the References section at the end of this article). I'm also assuming that you're familiar with basic HTML. However, you may be able to follow these instructions even if you haven't used XSL stylesheets before.

Documentation.xsl is divided into four sections, identified by uppercase comments in the file:

  1. Document Template. This section is the template for the entire HTML document. You'll notice that this is where I've put the <HTML> and <BODY> tags. You could add a <HEAD> section to this template and add a link to a CSS stylesheet, for instance.
  2. Assembly Template. This template handles the information in the XML document's <assembly> tag, which only contains the name of the assembly (output as a level 1 heading). The most important thing this template does is call the Members Template.
  3. Members Template. This is the one that does the bulk of the work. It loops through all the types in the XML document, and displays their respective fields, properties and methods.
  4. Other Templates. The other templates in the stylesheet format all the individual tags mentioned in MSDN's XML documentation reference as basic HTML elements, so this is where you would make any change to format a tag a particular way. For instance, if you wanted all the summaries in the document formatted in green, you would amend the <xsl:template match="summary"> section.

I've added some comments to the XSL file which should explain what it's doing when loops and conditional statements are involved, and I also put all the HTML tags in uppercase. I'm hoping this will make the file simpler to understand and amend.

The next step

Once you've changed the XSL file to suit your needs, you'll be able to use it to output an actual HTML document. You can do this using the .NET Framework's extensive XML classes, or simply using one of the many utilities available on the web. But all that is a different story; a search in the "SOAP and XML Topics" section of this website is probably a good place to start.

Feedback

Although I tried to be as thorough as possible while designing this stylesheet, I must admit that I didn't test it with all the possible tags, so some could probably be formatted better. If you think there are any tags which could be better handled, let me know and I'll amend the stylesheet.

History

  • First version produced in February 2005.
  • Second version produced in September 2005 - moved the copyright notice after the first XML line.

References

Although nothing beats Google when it comes to finding information, I've found the following resources very useful when I needed information on XML, XSL or XPath:

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

About the Author

Emma Burrows


Emma's first steps in programming took place at primary school over twenty years ago, thanks to a TI-99/4A and the LOGO language. Following a Master's degree in English Studies (obtained, strangely enough, with a paper on the birth of the microcomputer), Emma started her career in IT.

Over the last ten years, she has worked as a localiser, technical writer, editor, web designer, systems administrator, team leader and support engineer for companies ranging from Microsoft to the more modest British software company Equisys.

Emma is currently expecting another baby after taking a break to have a first baby. Some day, perhaps when both babies have gone to university, she hopes to improve her C# and web development skills and, of course, write more articles for Code Project.
Occupation: Web Developer
Location: United Kingdom United Kingdom

Other popular XML articles:

Article Top
Sign Up to vote for this article
You must Sign In to use this message board.
FAQ FAQ Noise ToleranceSearch Search Messages 
 Layout  Per page   
 Msgs 1 to 25 of 28 (Total in Forum: 28) (Refresh)FirstPrevNext
Subject  Author Date 
Generalvery usefullmembergdeenen0:58 27 Aug '08  
GeneralGood Articlemembersujith ms16:00 3 Jun '08  
QuestionHimemberMohsenElahi14:19 18 Mar '08  
GeneralXML comments : shortcomingmemberaliascodeproject2:41 22 Aug '07  
GeneralA great find!membermpennell14:53 28 Jun '07  
GeneralThanksmemberTracyW9:53 16 Feb '07  
GeneralRe: ThanksmemberEmma Burrows11:22 16 Feb '07  
GeneralUseful but something's missingmemberTheOF2:37 14 Feb '07  
GeneralRe: Useful but something's missingmemberEmma Burrows11:16 14 Feb '07  
GeneralRe: Useful but something's missingmemberTheOF2:52 18 Feb '07  
GeneralRe: Useful but something's missingmemberEmma Burrows22:50 18 Feb '07  
GeneralDoxygenmemberTim Whitehead10:27 17 Oct '06  
GeneralGreat Article!memberCraig C.12:50 18 Sep '06  
GeneralConvenientmemberpgazz5:24 18 May '06  
GeneralRe: ConvenientmemberEmma Burrows5:44 18 May '06  
GeneralVS 2005memberJazz Soft7:42 6 Mar '06  
GeneralRe: VS 2005memberkc13370:42 22 Aug '06  
GeneralComments after <?xml... in FireFox...memberStuFF mc3:46 12 Sep '05  
GeneralRe: Comments after <?xml... in FireFox...memberEmma Burrows4:14 12 Sep '05  
GeneralHow to use attribute to be a condition?membermathuros_paiboon6:47 18 Jul '05  
GeneralThanksmemberdcbrower3:10 10 Mar '05  
GeneralRe: ThanksmemberRGB_VSL0:58 9 Jan '07  
GeneralNDocmembermaharishi_b18:22 28 Feb '05  
GeneralRe: NDocmemberEmma Burrows4:20 1 Mar '05  
GeneralRe: NDocmemberrdcotter7:08 31 Jul '05  

General General    News News    Question Question    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

PermaLink | Privacy | Terms of Use
Last Updated: 21 Sep 2005
Editor: Smitha Vijayan
Copyright 2005 by Emma Burrows
Everything else Copyright © CodeProject, 1999-2008
Web11 | Advertise on the Code Project