\hypertarget{xmlcmds}{}\section{XML Commands}\label{xmlcmds}
Doxygen supports most of the XML commands that are typically used in C\# code comments. The XML tags are defined in Appendix E of the \href{http://www.ecma-international.org/publications/standards/Ecma-334.htm}{\tt ECMA-334} standard, which defines the C\# language. Unfortunately, the specification is not very precise and a number of the examples given are of poor quality.

Here is the list of tags supported by doxygen:

\begin{itemize}
\item {\tt $<$c$>$} Identifies inline text that should be rendered as a piece of code. Similar to using {\tt $<$tt$>$}text{\tt $<$/tt$>$}. \item {\tt $<$code$>$} Set one or more lines of source code or program output. Note that this command behaves like {\tt $\backslash$code ... $\backslash$endcode} for C\# code, but it behaves like the HTML equivalent {\tt $<$code$>$...$<$/code$>$} for other languages. \item {\tt $<$description$>$} Part of a {\tt $<$list$>$} command, describes an item. \item {\tt $<$example$>$} Marks a block of text as an example, ignored by doxygen. \item {\tt $<$exception cref=\char`\"{}member\char`\"{}$>$} Identifies the exception a method can throw. \item {\tt $<$include$>$} Can be used to import a piece of XML from an external file. Ignored by doxygen at the moment. \item {\tt $<$item$>$} List item. Can only be used inside a {\tt $<$list$>$} context. \item {\tt $<$list type=\char`\"{}type\char`\"{}$>$} Starts a list, supported types are {\tt bullet} or {\tt number}. A list consists of a number of {\tt $<$item$>$} tags. \item {\tt $<$para$>$} Identifies a paragraph of text. \item {\tt $<$param name=\char`\"{}param\-Name\char`\"{}$>$} Marks a piece of text as the documentation for parameter \char`\"{}param\-Name\char`\"{}. Similar to using \hyperlink{commands_cmdparam}{$\backslash$param}. \item {\tt $<$paramref name=\char`\"{}param\-Name\char`\"{}$>$} Refers to a parameter with name \char`\"{}param\-Name\char`\"{}. Similar to using \hyperlink{commands_cmda}{$\backslash$a}. \item {\tt $<$permission$>$} Identifies the security accessibility of a member. Ignored by doygen. \item {\tt $<$remarks$>$} Identifies the detailed description. \item {\tt $<$returns$>$} Marks a piece of text as the return value of a function or method. Similar to using \hyperlink{commands_cmdreturn}{$\backslash$return}. \item {\tt $<$see cref=\char`\"{}member\char`\"{}$>$} Refers to a member. Similar to \hyperlink{commands_cmdref}{$\backslash$ref}. \item {\tt $<$seealso cref=\char`\"{}member\char`\"{}$>$} Starts a \char`\"{}See also\char`\"{} section referring to \char`\"{}member\char`\"{}. Similar to using \hyperlink{commands_cmdsa}{$\backslash$sa} member. \item {\tt $<$summary$>$} Identifies the brief description. Similar to using \hyperlink{commands_cmdbrief}{$\backslash$brief}. \item {\tt $<$value$>$} Identifies a property. Ignored by doxygen. \end{itemize}


Here is an example of a typical piece of code using some of the above commands:



\footnotesize\begin{verbatim}/// <summary>
/// A search engine.
/// </summary>
class Engine
{
  /// <summary>
  /// The Search method takes a series of parameters to specify the search criterion
  /// and returns a dataset containing the result set.
  /// </summary>
  /// <param name="connectionString">the connection string to connect to the
  /// database holding the content to search</param>
  /// <param name="maxRows">The maximum number of rows to
  /// return in the result set</param>
  /// <param name="searchString">The text that we are searching for</param>
  /// <returns>A DataSet instance containing the matching rows. It contains a maximum
  /// number of rows specified by the maxRows parameter</returns>
  public DataSet Search(string connectionString, int maxRows, int searchString)
  {
    DataSet ds = new DataSet();
    return ds;
  }
}
\end{verbatim}
\normalsize
 