|
|
|
@ -68,9 +68,7 @@ A { text-decoration: none } |
|
|
|
|
<UL> |
|
|
|
|
<LI><A HREF="#5_1">The Basics</A></LI> |
|
|
|
|
<LI><A HREF="#5_2">Commenting Your Code</A></LI> |
|
|
|
|
<LI><A HREF="#5_3">Creating HTML Documentation</A></LI> |
|
|
|
|
<LI><A HREF="#5_4">Creating Man Pages</A></LI> |
|
|
|
|
<LI><A HREF="#5_5">The XML Schema</A></LI> |
|
|
|
|
<LI><A HREF="#5_3">Titles, Sections, and Introductions</A></LI> |
|
|
|
|
</UL> |
|
|
|
|
<B><A HREF="#LICENSE">Mini-XML License</A></B> |
|
|
|
|
<BR> |
|
|
|
@ -174,6 +172,8 @@ A { text-decoration: none } |
|
|
|
|
</UL> |
|
|
|
|
</LI> |
|
|
|
|
</UL> |
|
|
|
|
<B><A HREF="#SCHEMA">XML Schema</A></B> |
|
|
|
|
<UL></UL> |
|
|
|
|
<HR NOSHADE> |
|
|
|
|
<H1 align="right"><A name="INTRO"><IMG align="right" alt="0" height="100" |
|
|
|
|
hspace="10" src="0.gif" width="100"></A>Introduction</H1> |
|
|
|
@ -229,6 +229,8 @@ libxml2</TT> library with something substantially smaller and |
|
|
|
|
changes in each release of Mini-XML.</LI> |
|
|
|
|
<LI>Appendix C, "<A href="#REFERENCE">Library Reference</A>", contains a |
|
|
|
|
complete reference for Mini-XML, generated by <TT>mxmldoc</TT>.</LI> |
|
|
|
|
<LI>Appendix D, "<A href="#SCHEMA">XML Schema</A>", shows the XML schema |
|
|
|
|
used for the XML files produced by <TT>mxmldoc</TT>.</LI> |
|
|
|
|
</UL> |
|
|
|
|
|
|
|
|
|
<!-- NEED 10 --> |
|
|
|
@ -1345,28 +1347,148 @@ mxmlRetain</TT></A> function. For example, the following SAX callback |
|
|
|
|
<HR NOSHADE> |
|
|
|
|
<H1 align="right"><A name="MXMLDOC"><IMG align="right" alt="4" height="100" |
|
|
|
|
hspace="10" src="4.gif" width="100"></A>Using the mxmldoc Utility</H1> |
|
|
|
|
<P>This chapter describes how to use <TT>mxmldoc(1)</TT> program to |
|
|
|
|
automatically generate documentation from C and C++ source files.</P> |
|
|
|
|
<H2><A NAME="5_1">The Basics</A></H2> |
|
|
|
|
<P>Originally developed to generate the Mini-XML and CUPS API |
|
|
|
|
documentation, the <TT>mxmldoc(1)</TT> program converts C and C++ |
|
|
|
|
source files into an intermediate XML format and uses in-line comments |
|
|
|
|
rather than comment headers to annotate functions, types, and |
|
|
|
|
constants.</P> |
|
|
|
|
<P></P> |
|
|
|
|
documentation, <TT>mxmldoc</TT> is now a general-purpose utility which |
|
|
|
|
scans C and C++ source files to produce HTML and man page documentation |
|
|
|
|
along with an XML file representing the functions, types, and |
|
|
|
|
definitions in those source files. Unlike popular documentation |
|
|
|
|
generators like Doxygen or Javadoc, <TT>mxmldoc</TT> uses in-line |
|
|
|
|
comments rather than comment headers, allowing for more "natural" code |
|
|
|
|
documentation.</P> |
|
|
|
|
<P>By default, <TT>mxmldoc</TT> produces HTML documentation. For |
|
|
|
|
example, the following command will scan all of the C source and header |
|
|
|
|
files in the current directory and produce a HTML documentation file |
|
|
|
|
called<VAR> filename.html</VAR>:</P> |
|
|
|
|
<PRE> |
|
|
|
|
<KBD>mxmldoc *.h *.c >filename.html ENTER</KBD> |
|
|
|
|
</PRE> |
|
|
|
|
<P>You can also specify an XML file to create which contains all of the |
|
|
|
|
information from the source files. For example, the following command |
|
|
|
|
creates an XML file called<VAR> filename.xml</VAR> in addition to the |
|
|
|
|
HTML file:</P> |
|
|
|
|
<PRE> |
|
|
|
|
<KBD>mxmldoc filename.xml *.h *.c >filename.html ENTER</KBD> |
|
|
|
|
</PRE> |
|
|
|
|
<P>The <TT>--no-output</TT> option disables the normal HTML output:</P> |
|
|
|
|
<PRE> |
|
|
|
|
<KBD>mxmldoc --no-output filename.xml *.h *.c ENTER</KBD> |
|
|
|
|
</PRE> |
|
|
|
|
<P>You can then run <TT>mxmldoc</TT> again with the XML file alone to |
|
|
|
|
generate the HTML documentation:</P> |
|
|
|
|
<PRE> |
|
|
|
|
<KBD>mxmldoc filename.xml >filename.html ENTER</KBD> |
|
|
|
|
</PRE> |
|
|
|
|
<P>The <TT>--man filename</TT> option tells <TT>mxmldoc</TT> to create a |
|
|
|
|
man page instead of HTML documentation, for example:</P> |
|
|
|
|
<PRE> |
|
|
|
|
<KBD>mxmldoc --man filename filename.xml \ |
|
|
|
|
>filename.man ENTER</KBD> |
|
|
|
|
|
|
|
|
|
<KBD>mxmldoc --man filename *.h *.c \ |
|
|
|
|
>filename.man ENTER</KBD> |
|
|
|
|
|
|
|
|
|
<KBD>mxmldoc --man filename filename.xml *.h *.c \ |
|
|
|
|
>filename.man ENTER</KBD> |
|
|
|
|
</PRE> |
|
|
|
|
<H2><A NAME="5_2">Commenting Your Code</A></H2> |
|
|
|
|
<H2><A NAME="5_3">Creating HTML Documentation</A></H2> |
|
|
|
|
<H2><A NAME="5_4">Creating Man Pages</A></H2> |
|
|
|
|
<H2><A NAME="5_5">The XML Schema</A></H2> |
|
|
|
|
<P><I>mxmldoc</I> scans the specified C and C++ source files to produce |
|
|
|
|
an XML representation of globally accessible classes, constants, |
|
|
|
|
enumerations, functions, structures, typedefs, unions, and variables. |
|
|
|
|
The XML file is updated as necessary and a HTML representation of the |
|
|
|
|
XML file is written to the standard output. If no source files are |
|
|
|
|
specified then the current XML file is converted to HTML on the |
|
|
|
|
standard output.</P> |
|
|
|
|
<P>In general, any C or C++ source code is handled by<I> mxmldoc</I>, |
|
|
|
|
however it was specifically written to handle code with documentation |
|
|
|
|
that is formatted according to the CUPS Configuration Management Plan |
|
|
|
|
which is available at "http://www.cups.org/documentation.php".</P> |
|
|
|
|
<P>As noted previously, <TT>mxmldoc</TT> looks for in-line comments to |
|
|
|
|
describe the functions, types, and constants in your code. <TT>Mxmldoc</TT> |
|
|
|
|
will document all public names it finds in your source files - any |
|
|
|
|
names starting with the underscore character (_) or names that are |
|
|
|
|
documented with the <A HREF="#ATDIRECTIVES">@private@</A> directive are |
|
|
|
|
treated as private and are undocumented.</P> |
|
|
|
|
<P>Comments appearing directly before a function or type definition are |
|
|
|
|
used to document that function or type. Comments appearing after |
|
|
|
|
argument, definition, return type, or variable declarations are used to |
|
|
|
|
document that argument, definition, return type, or variable. For |
|
|
|
|
example, the following code excerpt defines a key/value structure and a |
|
|
|
|
function that creates a new instance of that structure:</P> |
|
|
|
|
<PRE> |
|
|
|
|
/* A key/value pair. This is used with the |
|
|
|
|
dictionary structure. */ |
|
|
|
|
|
|
|
|
|
struct keyval |
|
|
|
|
{ |
|
|
|
|
char *key; /* Key string */ |
|
|
|
|
char *val; /* Value string */ |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
/* Create a new key/value pair. */ |
|
|
|
|
|
|
|
|
|
struct keyval * /* New key/value pair */ |
|
|
|
|
new_keyval( |
|
|
|
|
const char *key, /* Key string */ |
|
|
|
|
const char *val) /* Value string */ |
|
|
|
|
{ |
|
|
|
|
... |
|
|
|
|
} |
|
|
|
|
</PRE> |
|
|
|
|
<P><TT>Mxmldoc</TT> also knows to remove extra asterisks (*) from the |
|
|
|
|
comment string, so the comment string:</P> |
|
|
|
|
<PRE> |
|
|
|
|
/* |
|
|
|
|
* Compute the value of PI. |
|
|
|
|
* |
|
|
|
|
* The function connects to an Internet server |
|
|
|
|
* that streams audio of mathematical monks |
|
|
|
|
* chanting the first 100 digits of PI. |
|
|
|
|
*/ |
|
|
|
|
</PRE> |
|
|
|
|
<P>will be shown as:</P> |
|
|
|
|
<PRE> |
|
|
|
|
Compute the value of PI. |
|
|
|
|
|
|
|
|
|
The function connects to an Internet server |
|
|
|
|
that streams audio of mathematical monks |
|
|
|
|
chanting the first 100 digits of PI. |
|
|
|
|
</PRE> |
|
|
|
|
<P><A name="ATDIRECTIVES">Comments</A> can also include the following |
|
|
|
|
special <TT>@name ...@</TT> directive strings:</P> |
|
|
|
|
<UL> |
|
|
|
|
<LI><TT>@deprecated@</TT> - flags the item as deprecated to discourage |
|
|
|
|
its use</LI> |
|
|
|
|
<LI><TT>@private@</TT> - flags the item as private so it will not be |
|
|
|
|
included in the documentation</LI> |
|
|
|
|
<LI><TT>@since ...@</TT> - flags the item as new since a particular |
|
|
|
|
release. The text following the <TT>@since</TT> up to the closing <TT>@</TT> |
|
|
|
|
is highlighted in the generated documentation, e.g. <TT>@since CUPS |
|
|
|
|
1.3@</TT>.</LI> |
|
|
|
|
</UL> |
|
|
|
|
|
|
|
|
|
<!-- NEED 10 --> |
|
|
|
|
<H2><A NAME="5_3">Titles, Sections, and Introductions</A></H2> |
|
|
|
|
<P><TT>Mxmldoc</TT> also provides options to set the title, section, and |
|
|
|
|
introduction text for the generated documentation. The <TT>--title text</TT> |
|
|
|
|
option specifies the title for the documentation. The title string is |
|
|
|
|
usually put in quotes:</P> |
|
|
|
|
<PRE> |
|
|
|
|
<KBD>mxmldoc filename.xml \ |
|
|
|
|
--title "My Famous Documentation" \ |
|
|
|
|
>filename.html ENTER</KBD> |
|
|
|
|
</PRE> |
|
|
|
|
<P>The <TT>--section name</TT> option specifies the section for the |
|
|
|
|
documentation. For HTML documentation, the name is placed in a HTML |
|
|
|
|
comment such as:</P> |
|
|
|
|
<PRE> |
|
|
|
|
<!-- SECTION: name --> |
|
|
|
|
</PRE> |
|
|
|
|
<P>For man pages, the section name is usually just a number ("3"), or a |
|
|
|
|
number followed by a vendor name ("3acme"). The section name is used in |
|
|
|
|
the <TT>.TH</TT> directive in the man page:</P> |
|
|
|
|
<PRE> |
|
|
|
|
.TH mylibrary 3acme "My Title" ... |
|
|
|
|
</PRE> |
|
|
|
|
<P>The default section name for man page output is "3". There is no |
|
|
|
|
default section name for HTML output.</P> |
|
|
|
|
<P>Finally, the <TT>--intro filename</TT> option specifies a file to |
|
|
|
|
embed after the title and section but before the generated |
|
|
|
|
documentation. For HTML documentation, the file must consist of valid |
|
|
|
|
HTML without the usual <TT>DOCTYPE</TT>, <TT>html</TT>, and <TT>body</TT> |
|
|
|
|
elements. For man page documentation, the file must consist of valid <TT> |
|
|
|
|
nroff(1)</TT> text.</P> |
|
|
|
|
<HR NOSHADE> |
|
|
|
|
<H1 align="right"><A name="LICENSE"><IMG align="right" alt="A" height="100" |
|
|
|
|
hspace="10" src="A.gif" width="100"></A>Mini-XML License</H1> |
|
|
|
@ -3461,7 +3583,7 @@ width="80%"><THEAD></THEAD> |
|
|
|
|
<!-- NEW PAGE --> |
|
|
|
|
<H3 class="title"><A name="mxml_attr_s">mxml_attr_s</A></H3> |
|
|
|
|
<H4>Description</H4> |
|
|
|
|
<P>Data types...</P> |
|
|
|
|
<P>An XML element attribute value.</P> |
|
|
|
|
<H4>Definition</H4> |
|
|
|
|
<P> <TT>struct mxml_attr_s |
|
|
|
|
<BR> { |
|
|
|
@ -3623,7 +3745,7 @@ width="80%"><THEAD></THEAD> |
|
|
|
|
<!-- NEW PAGE --> |
|
|
|
|
<H3 class="title"><A name="mxml_attr_t">mxml_attr_t</A></H3> |
|
|
|
|
<H4>Description</H4> |
|
|
|
|
<P>Data types...</P> |
|
|
|
|
<P>An XML element attribute value.</P> |
|
|
|
|
<H4>Definition</H4> |
|
|
|
|
<P> <TT>typedef struct <A href="#mxml_attr_s">mxml_attr_s</A> |
|
|
|
|
mxml_attr_t;</TT></P> |
|
|
|
@ -3777,5 +3899,196 @@ mxml_node_t</A> *, int);</TT></P> |
|
|
|
|
<TR><TD><TT>real</TT></TD><TD>Real number</TD></TR> |
|
|
|
|
<TR><TD><TT>text</TT></TD><TD>Text fragment</TD></TR> |
|
|
|
|
</TABLE> |
|
|
|
|
</DIV></BODY> |
|
|
|
|
</DIV><HR NOSHADE> |
|
|
|
|
<H1 align="right"><A name="SCHEMA"><IMG align="right" alt="D" height="100" |
|
|
|
|
hspace="10" src="D.gif" width="100"></A>XML Schema</H1> |
|
|
|
|
<P>This appendix provides the XML schema that is used for the XML files |
|
|
|
|
produced by <TT>mxmldoc</TT>. This schema is available on-line at:</P> |
|
|
|
|
<PRE> |
|
|
|
|
http://www.easysw.com/~mike/mxmldoc.xsd |
|
|
|
|
</PRE> |
|
|
|
|
<H2><A NAME="9_1">mxmldoc.xsd</A></H2> |
|
|
|
|
<PRE><SMALL> |
|
|
|
|
<?xml version="1.0"?> |
|
|
|
|
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> |
|
|
|
|
<xsd:annotation> |
|
|
|
|
<xsd:documentation xml:lang="en"> |
|
|
|
|
Mini-XML 2.3 documentation schema for mxmldoc output. |
|
|
|
|
Copyright 2003-2007 by Michael Sweet. |
|
|
|
|
</xsd:documentation> |
|
|
|
|
</xsd:annotation> |
|
|
|
|
|
|
|
|
|
<!-- basic element definitions --> |
|
|
|
|
<xsd:element name="argument" type="argumentType"/> |
|
|
|
|
<xsd:element name="class" type="classType"/> |
|
|
|
|
<xsd:element name="constant" type="constantType"/> |
|
|
|
|
<xsd:element name="description" type="xsd:string"/> |
|
|
|
|
<xsd:element name="enumeration" type="enumerationType"/> |
|
|
|
|
<xsd:element name="function" type="functionType"/> |
|
|
|
|
<xsd:element name="mxmldoc" type="mxmldocType"/> |
|
|
|
|
<xsd:element name="namespace" type="namespaceType"/> |
|
|
|
|
<xsd:element name="returnvalue" type="returnvalueType"/> |
|
|
|
|
<xsd:element name="seealso" type="identifierList"/> |
|
|
|
|
<xsd:element name="struct" type="structType"/> |
|
|
|
|
<xsd:element name="typedef" type="typedefType"/> |
|
|
|
|
<xsd:element name="type" type="xsd:string"/> |
|
|
|
|
<xsd:element name="union" type="unionType"/> |
|
|
|
|
<xsd:element name="variable" type="variableType"/> |
|
|
|
|
|
|
|
|
|
<!-- descriptions of complex elements --> |
|
|
|
|
<xsd:complexType name="argumentType"> |
|
|
|
|
<xsd:sequence> |
|
|
|
|
<xsd:element ref="type" minOccurs="1" maxOccurs="1"/> |
|
|
|
|
<xsd:element ref="description" minOccurs="0" maxOccurs="1"/> |
|
|
|
|
</xsd:sequence> |
|
|
|
|
<xsd:attribute name="default" type="xsd:string" use="optional"/> |
|
|
|
|
<xsd:attribute name="name" type="identifier" use="required"/> |
|
|
|
|
<xsd:attribute name="direction" type="direction" use="optional" |
|
|
|
|
default="I"/> |
|
|
|
|
</xsd:complexType> |
|
|
|
|
|
|
|
|
|
<xsd:complexType name="classType"> |
|
|
|
|
<xsd:sequence> |
|
|
|
|
<xsd:element ref="description" minOccurs="0" maxOccurs="1"/> |
|
|
|
|
<xsd:choice minOccurs="0" maxOccurs="unbounded"> |
|
|
|
|
<xsd:element ref="class"/> |
|
|
|
|
<xsd:element ref="enumeration"/> |
|
|
|
|
<xsd:element ref="function"/> |
|
|
|
|
<xsd:element ref="struct"/> |
|
|
|
|
<xsd:element ref="typedef"/> |
|
|
|
|
<xsd:element ref="union"/> |
|
|
|
|
<xsd:element ref="variable"/> |
|
|
|
|
</xsd:choice> |
|
|
|
|
</xsd:sequence> |
|
|
|
|
<xsd:attribute name="name" type="identifier" use="required"/> |
|
|
|
|
<xsd:attribute name="parent" type="xsd:string" use="optional"/> |
|
|
|
|
</xsd:complexType> |
|
|
|
|
|
|
|
|
|
<xsd:complexType name="constantType"> |
|
|
|
|
<xsd:sequence> |
|
|
|
|
<xsd:element ref="description" minOccurs="0" maxOccurs="1"/> |
|
|
|
|
</xsd:sequence> |
|
|
|
|
<xsd:attribute name="name" type="identifier" use="required"/> |
|
|
|
|
</xsd:complexType> |
|
|
|
|
|
|
|
|
|
<xsd:complexType name="enumerationType"> |
|
|
|
|
<xsd:sequence> |
|
|
|
|
<xsd:element ref="description" minOccurs="0" maxOccurs="1"/> |
|
|
|
|
<xsd:element ref="constant" minOccurs="1" maxOccurs="unbounded"/> |
|
|
|
|
</xsd:sequence> |
|
|
|
|
<xsd:attribute name="name" type="identifier" use="required"/> |
|
|
|
|
</xsd:complexType> |
|
|
|
|
|
|
|
|
|
<xsd:complexType name="functionType"> |
|
|
|
|
<xsd:sequence> |
|
|
|
|
<xsd:element ref="returnvalue" minOccurs="0" maxOccurs="1"/> |
|
|
|
|
<xsd:element ref="description" minOccurs="0" maxOccurs="1"/> |
|
|
|
|
<xsd:element ref="argument" minOccurs="1" maxOccurs="unbounded"/> |
|
|
|
|
<xsd:element ref="seealso" minOccurs="0" maxOccurs="1"/> |
|
|
|
|
</xsd:sequence> |
|
|
|
|
<xsd:attribute name="name" type="identifier" use="required"/> |
|
|
|
|
<xsd:attribute name="scope" type="scope" use="optional"/> |
|
|
|
|
</xsd:complexType> |
|
|
|
|
|
|
|
|
|
<xsd:complexType name="mxmldocType"> |
|
|
|
|
<xsd:choice minOccurs="0" maxOccurs="unbounded"> |
|
|
|
|
<xsd:element ref="class"/> |
|
|
|
|
<xsd:element ref="enumeration"/> |
|
|
|
|
<xsd:element ref="function"/> |
|
|
|
|
<xsd:element ref="namespace"/> |
|
|
|
|
<xsd:element ref="struct"/> |
|
|
|
|
<xsd:element ref="typedef"/> |
|
|
|
|
<xsd:element ref="union"/> |
|
|
|
|
<xsd:element ref="variable"/> |
|
|
|
|
</xsd:choice> |
|
|
|
|
</xsd:complexType> |
|
|
|
|
|
|
|
|
|
<xsd:complexType name="namespaceType"> |
|
|
|
|
<xsd:sequence> |
|
|
|
|
<xsd:element ref="description" minOccurs="0" maxOccurs="1"/> |
|
|
|
|
<xsd:choice minOccurs="0" maxOccurs="unbounded"> |
|
|
|
|
<xsd:element ref="class"/> |
|
|
|
|
<xsd:element ref="enumeration"/> |
|
|
|
|
<xsd:element ref="function"/> |
|
|
|
|
<xsd:element ref="struct"/> |
|
|
|
|
<xsd:element ref="typedef"/> |
|
|
|
|
<xsd:element ref="union"/> |
|
|
|
|
<xsd:element ref="variable"/> |
|
|
|
|
</xsd:choice> |
|
|
|
|
</xsd:sequence> |
|
|
|
|
<xsd:attribute name="name" type="identifier" use="required"/> |
|
|
|
|
</xsd:complexType> |
|
|
|
|
|
|
|
|
|
<xsd:complexType name="returnvalueType"> |
|
|
|
|
<xsd:sequence> |
|
|
|
|
<xsd:element ref="type" minOccurs="1" maxOccurs="1"/> |
|
|
|
|
<xsd:element ref="description" minOccurs="0" maxOccurs="1"/> |
|
|
|
|
</xsd:sequence> |
|
|
|
|
</xsd:complexType> |
|
|
|
|
|
|
|
|
|
<xsd:complexType name="structType"> |
|
|
|
|
<xsd:sequence> |
|
|
|
|
<xsd:element ref="description" minOccurs="0" maxOccurs="1"/> |
|
|
|
|
<xsd:choice minOccurs="0" maxOccurs="unbounded"> |
|
|
|
|
<xsd:element ref="variable"/> |
|
|
|
|
<xsd:element ref="function"/> |
|
|
|
|
</xsd:choice> |
|
|
|
|
</xsd:sequence> |
|
|
|
|
<xsd:attribute name="name" type="identifier" use="required"/> |
|
|
|
|
</xsd:complexType> |
|
|
|
|
|
|
|
|
|
<xsd:complexType name="typedefType"> |
|
|
|
|
<xsd:sequence> |
|
|
|
|
<xsd:element ref="type" minOccurs="1" maxOccurs="1"/> |
|
|
|
|
<xsd:element ref="description" minOccurs="0" maxOccurs="1"/> |
|
|
|
|
</xsd:sequence> |
|
|
|
|
<xsd:attribute name="name" type="identifier" use="required"/> |
|
|
|
|
</xsd:complexType> |
|
|
|
|
|
|
|
|
|
<xsd:complexType name="unionType"> |
|
|
|
|
<xsd:sequence> |
|
|
|
|
<xsd:element ref="description" minOccurs="0" maxOccurs="1"/> |
|
|
|
|
<xsd:element ref="variable" minOccurs="0" maxOccurs="unbounded"/> |
|
|
|
|
</xsd:sequence> |
|
|
|
|
<xsd:attribute name="name" type="identifier" use="required"/> |
|
|
|
|
</xsd:complexType> |
|
|
|
|
|
|
|
|
|
<xsd:complexType name="variableType"> |
|
|
|
|
<xsd:sequence> |
|
|
|
|
<xsd:element ref="type" minOccurs="1" maxOccurs="1"/> |
|
|
|
|
<xsd:element ref="description" minOccurs="0" maxOccurs="1"/> |
|
|
|
|
</xsd:sequence> |
|
|
|
|
<xsd:attribute name="name" type="identifier" use="required"/> |
|
|
|
|
</xsd:complexType> |
|
|
|
|
|
|
|
|
|
<!-- data types --> |
|
|
|
|
<xsd:simpleType name="direction"> |
|
|
|
|
<xsd:restriction base="xsd:string"> |
|
|
|
|
<xsd:enumeration value="I"/> |
|
|
|
|
<xsd:enumeration value="O"/> |
|
|
|
|
<xsd:enumeration value="IO"/> |
|
|
|
|
</xsd:restriction> |
|
|
|
|
</xsd:simpleType> |
|
|
|
|
|
|
|
|
|
<xsd:simpleType name="identifier"> |
|
|
|
|
<xsd:restriction base="xsd:string"> |
|
|
|
|
<xsd:pattern value="[a-zA-Z_(.]([a-zA-Z_(.,)* 0-9])*"/> |
|
|
|
|
</xsd:restriction> |
|
|
|
|
</xsd:simpleType> |
|
|
|
|
|
|
|
|
|
<xsd:simpleType name="identifierList"> |
|
|
|
|
<xsd:list itemType="identifier"/> |
|
|
|
|
</xsd:simpleType> |
|
|
|
|
|
|
|
|
|
<xsd:simpleType name="scope"> |
|
|
|
|
<xsd:restriction base="xsd:string"> |
|
|
|
|
<xsd:enumeration value=""/> |
|
|
|
|
<xsd:enumeration value="private"/> |
|
|
|
|
<xsd:enumeration value="protected"/> |
|
|
|
|
<xsd:enumeration value="public"/> |
|
|
|
|
</xsd:restriction> |
|
|
|
|
</xsd:simpleType> |
|
|
|
|
</xsd:schema> |
|
|
|
|
</SMALL></PRE> |
|
|
|
|
</BODY> |
|
|
|
|
</HTML> |
|
|
|
|