<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html xmlns:fn="http://www.w3.org/2005/02/xpath-functions"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel="stylesheet" href="../../../../doc/otp_doc.css" type="text/css"> <title>Erlang -- docb_gen</title> </head> <body bgcolor="white" text="#000000" link="#0000ff" vlink="#ff00ff" alink="#ff0000"><div id="container"> <script id="js" type="text/javascript" language="JavaScript" src="../../../../doc/js/flipmenu/flipmenu.js"></script><script id="js2" type="text/javascript" src="../../../../doc/js/erlresolvelinks.js"></script><script language="JavaScript" type="text/javascript"> <!-- function getWinHeight() { var myHeight = 0; if( typeof( window.innerHeight ) == 'number' ) { //Non-IE myHeight = window.innerHeight; } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) { //IE 6+ in 'standards compliant mode' myHeight = document.documentElement.clientHeight; } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) { //IE 4 compatible myHeight = document.body.clientHeight; } return myHeight; } function setscrollpos() { var objf=document.getElementById('loadscrollpos'); document.getElementById("leftnav").scrollTop = objf.offsetTop - getWinHeight()/2; } function addEvent(obj, evType, fn){ if (obj.addEventListener){ obj.addEventListener(evType, fn, true); return true; } else if (obj.attachEvent){ var r = obj.attachEvent("on"+evType, fn); return r; } else { return false; } } addEvent(window, 'load', setscrollpos); //--></script><div id="leftnav"><div class="innertube"> <img alt="Erlang logo" src="../../../../doc/erlang-logo.png"><br><small><a href="users_guide.html">User's Guide</a><br><a href="index.html">Reference Manual</a><br><a href="release_notes.html">Release Notes</a><br><a href="../pdf/docbuilder-0.9.8.7.pdf">PDF</a><br><a href="../../../../doc/index.html">Top</a></small><p><strong>DocBuilder</strong><br><strong>Reference Manual</strong><br><small>Version 0.9.8.7</small></p> <br><a href="javascript:openAllFlips()">Expand All</a><br><a href="javascript:closeAllFlips()">Contract All</a><p><small><strong>Table of Contents</strong></small></p> <ul class="flipMenu"> <li title="docbuilder (App)"><a href="docbuilder_app.html">docbuilder (App) </a></li> <li id="loadscrollpos" title="docb_gen " expanded="true">docb_gen<ul> <li><a href="docb_gen.html"> Top of manual page </a></li> <li title="module-1"><a href="docb_gen.html#module-1">module/1</a></li> <li title="module-2"><a href="docb_gen.html#module-2">module/2</a></li> <li title="users_guide-1"><a href="docb_gen.html#users_guide-1">users_guide/1</a></li> <li title="users_guide-2"><a href="docb_gen.html#users_guide-2">users_guide/2</a></li> </ul> </li> <li id="no" title="docb_transform " expanded="false">docb_transform<ul> <li><a href="docb_transform.html"> Top of manual page </a></li> <li title="file-1"><a href="docb_transform.html#file-1">file/1</a></li> <li title="file-2"><a href="docb_transform.html#file-2">file/2</a></li> <li title="Module:head-0"><a href="docb_transform.html#Module:head-0">Module:head/0</a></li> <li title="Module:top-0"><a href="docb_transform.html#Module:top-0">Module:top/0</a></li> <li title="Module:bottom-0"><a href="docb_transform.html#Module:bottom-0">Module:bottom/0</a></li> <li title="Module:seealso-1"><a href="docb_transform.html#Module:seealso-1">Module:seealso/1</a></li> </ul> </li> <li id="no" title="docb_xml_check " expanded="false">docb_xml_check<ul> <li><a href="docb_xml_check.html"> Top of manual page </a></li> <li title="validate-1"><a href="docb_xml_check.html#validate-1">validate/1</a></li> </ul> </li> </ul> </div></div> <div id="content"> <div class="innertube"> <!-- refpage --><center><h1>docb_gen</h1></center> <h3>MODULE</h3> <div class="REFBODY">docb_gen</div> <h3>MODULE SUMMARY</h3> <div class="REFBODY">Generate XML from EDoc comments in Erlang source code. </div> <h3>DESCRIPTION</h3> <div class="REFBODY"><p> <p><span class="code">docb_gen</span> contains functions for generating XML documentation source code according to the <span class="code">erlref</span> or <span class="code">chapter</span> DTD from <span class="bold_code"><a href="javascript:erlhref('../../../../doc/../','edoc','chapter.html');">EDoc</a></span> comments in Erlang source code or an <span class="code">overview.edoc</span> file, using EDoc.</p> </p></div> <h3>EXPORTS</h3> <p><a name="module-1"><span class="bold_code">module(File) -> ok | {error, Reason}</span></a><br><a name="module-2"><span class="bold_code">module(File, Options) -> ok | {error, Reason}</span></a><br></p> <div class="REFBODY"> <p>Types:</p> <div class="REFTYPES"> <span class="bold_code">File = string()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Options = [Opt]</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Opt = {def,Defs} | {includes,Dirs} | {preprocess,Bool} | {sort_functions,Bool}</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Defs = [{atom(),string()}]</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Dirs = [string()]</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Bool = bool()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Reason = badfile | {badopt,term()} | term()</span><br> </div> </div> <div class="REFBODY"><p> <p>Generates XML documentation source code according to the <span class="code">erlref</span> DTD from EDoc comments <span class="code">File</span>, using the EDoc application.</p> <p><span class="code">File</span> is an Erlang source file, given with or without the <span class="code">.erl</span> extension as <span class="code">Name.erl</span> or <span class="code">Name</span>. The resulting XML file is created in the current working directory and named <span class="code">Name.xml</span>.</p> <p><span class="code">Options</span> is a list of options, see below.</p> <p>Returns <span class="code">ok</span> if successful, and an error tuple otherwise.</p> </p></div> <p><a name="users_guide-1"><span class="bold_code">users_guide(File) -> ok | {error, Reason}</span></a><br><a name="users_guide-2"><span class="bold_code">users_guide(File, Options) -> ok | {error, Reason}</span></a><br></p> <div class="REFBODY"> <p>Types:</p> <div class="REFTYPES"> <span class="bold_code">File -- see module/1,2</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Options -- see module/1,2</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Reason -- see module/1,2</span><br> </div> </div> <div class="REFBODY"><p> <p>Like <span class="code">module/1,2</span> but generates XML source code according to the <span class="code">chapter</span> DTD from an <span class="code">overview.edoc</span> or similar file.</p> <p>The resulting file is named <span class="code">chapter.xml</span>.</p> </p></div> <h3><a name="id2252619">Options</a></h3> <div class="REFBODY"> <dl> <dt><strong><span class="code">{def, [{Name,Text}]}</span></strong></dt> <dd>Specifies EDoc macro definitions. See <span class="bold_code"><a href="javascript:erlhref('../../../../doc/../','edoc','edoc.html');">edoc:get_doc/2</a></span>.</dd> <dt><strong><span class="code">{includes, [Dir]}</span></strong></dt> <dd>Specifies directories where EDoc should search for include files. See <span class="bold_code"><a href="javascript:erlhref('../../../../doc/../','edoc','edoc.html');">edoc:read_source/2</a></span>.</dd> <dt><strong><span class="code">{preprocess, true|false}</span></strong></dt> <dd>Specifies if EDoc should read the source file via the Erlang preprocessor. Default is <span class="code">false</span>. See <span class="bold_code"><a href="javascript:erlhref('../../../../doc/../','edoc','edoc.html');">edoc:read_source/2</a></span>.</dd> <dt><strong><span class="code">{sort_functions, true|false}</span></strong></dt> <dd>Specifies if the functions in the resulting XML file should be sorted alphabetically. Default is <span class="code">true</span>.</dd> </dl> </div> <h3><a name="id2257752">Limitations</a></h3> <div class="REFBODY"> <p>The mapping from the EDoc XHTML output to valid Erlang/OTP XML is not complete. An attempt has been made to cover the most commonly used XHTML constructs, but there will still be cases where XML generation fails or where the resulting XML is inadequate. This is especially true for <span class="code">users_guide/1,2</span>. </p> <p>Known limitations for some XHTML tags:</p> <dl> <dt><strong><span class="code"><a></span></strong></dt> <dd> <p>All attributes except the first <span class="code">href</span> or <span class="code">name</span> attribute are ignored.</p> <p>A <span class="code">href</span> attribute means the <span class="code"><a></span> tag will be transformed to a <span class="code"><seealso></span> or <span class="code"><url></span> tag and an attempt is made to resolve the reference if necessary.</p> <p>A <span class="code">name</span> attribute means the <span class="code"><a></span> tag will be transformed to a <span class="code"><marker></span> tag.</p> </dd> <dt><strong><span class="code"><b>, <em>, <pre></span></strong></dt> <dd>Cannot contain other tags in Erlang/OTP XML, content is converted to plain text. </dd> <dt><strong><span class="code"><center></span></strong></dt> <dd>No corresponding Erlang/OTP XML tag, converted to plain text. </dd> <dt><strong><span class="code"><font></span></strong></dt> <dd>No corresponding Erlang/OTP XML tag, converted to plain text. </dd> <dt><strong><span class="code"><h1>, <h2>, ...</span></strong></dt> <dd>There is no tag corresponding to a header in Erlang/OTP XML, so these are converted to plain text instead, with the exception of <span class="code"><h3></span> and <span class="code"><h4></span> tags within <span class="code">overview.edoc</span>, see part about "<span class="code">chapter</span> DTD" below. </dd> <dt><strong><span class="code"><sup></span></strong></dt> <dd>There is no tag corresponding to superscript in Erlang/OTP XML, so this is converted to plain text within brackets "(..)". </dd> <dt><strong>References</strong></dt> <dd>The markers automatically inserted by EDoc at each heading and function will override the markers automatically inserted by DocBuilder, with the unfortunate result that the links in the left-hand frame of the User's Guide will not work, and also that cross referencing a function in a module the usual Erlang/OTP way "<span class="code"><seealso marker="edoc:edoc#run/3...></span>" does not work. (But "<span class="code"><seealso marker="edoc:edoc#run-3...></span>" does.) </dd> </dl> <p><strong>erlref DTD</strong></p> <dl> <dt><strong>Tables</strong></dt> <dd>Tables are not allowed. The contents of a table is converted to text instead, each row corresponding to one line of text. </dd> </dl> <p><strong>chapter DTD</strong></p> <dl> <dt><strong>Sections</strong></dt> <dd>Only two levels of sections. <span class="code"><h3></span> (equivalent to EDoc headings "<span class="code">== Heading ==</span>") is interpreted as start of top-level section, or if there is no <span class="code"><h3></span> tag, the entire document is made into one top-level section. <span class="code"><h4></span> (equivalent to EDoc sub-headings ("<span class="code">=== Sub-heading ===</span>") is interpreted as start of second-level section. </dd> <dt><strong>Tables</strong></dt> <dd>Tables without borders are converted to text in the same manner as for the <span class="code">erlref</span> DTD. </dd> </dl> </div> </div> <div class="footer"> <hr> <p>Copyright © 1997-2010 Ericsson AB. All Rights Reserved.</p> </div> </div> </div></body> </html>