-.\" $OpenBSD: mdoc.template,v 1.10 2007/05/31 22:10:19 jmc Exp $
.\"
-.\" The following requests are required for all man pages.
-.\"
-.\" Remove `\&' from the line below.
-.Dd $Mdocdate: November 30 2008 $
-.Dt mdocml 1
+.Dd $Mdocdate: December 9 2008 $
+.Dt mdocml 1 alpha
.Os
.\"
.Sh NAME
.\"
.Sh SYNOPSIS
.Nm mdocml
-.Op Fl vW
+.Op Fl v
+.Op Fl W Ns Ar err...
.Op Fl f Ar filter
.Op Fl o Ar outfile
.Op Ar infile
.Sh DESCRIPTION
The
.Nm
-utility parses
-.Xr mdoc
-formatted manual source and passes results into the output filter
-dictated by
-.Fl f Ar filter .
-The only current output filter is
-.Ar validate ,
-the default. The arguments are as follows:
-.Bl -tag -width "\-o outfile,"
-.It Sq Fl o Ar outfile ,
-Place output in
+utility parses mdoc formatted manual source and passes results into an
+output filter. The current output filters are
+.Ar html
+and
+.Ar xml ,
+the default. Arguments common to all filters follow:
+.Bl -tag -width "\-o outfile"
+.It Fl f Ar filter
+The output filter name.
+.It Fl o Ar outfile
+Write output to
.Ar outfile ,
which may be
-.Qq \-
-for standard output. The default is standard output.
+.Dq \-
+for stdout.
+.It Fl W Ns Ar err...
+Print warning messages. If set to
+.Fl W Ns Ar all ,
+all warnings are printed; if
+.Fl W Ns Ar error ,
+warnings are considered errors and cause utility termination. Multiple
+.Fl W
+arguments may be comma-separated, such as
+.Fl W Ns Ar error,all .
+.It Fl v
+Make warning and error messages verbose.
.It Ar infile
Read input from
.Ar infile ,
which may be
-.Qq \-
-for standard input. The default is standard input.
-.It Fl v
-Print messages (output depends on filter).
-.It Fl W
-Print warnings (output depends on filter).
+.Dq \-
+for stdin.
+.El
+.Pp
+By default,
+.Nm
+reads from stdin and writes to stdout using the xml filter.
+.Pp
+.Ex -std mdocml
+.\"
+.Ss XML Filter
+The XML filter, specified by
+.Fl f Ar xml ,
+is the default filter. This filter has no additional arguments.
+.Pp
+The XML filter creates an XML document where element names are their respective
+roff macro names. Each element name has an associated
+namespace, which is one of
+.Dq block ,
+.Dq head ,
+.Dq body ,
+or
+.Dq inline ,
+corresponding to the display mode of a node. The document root is
+always the
+.Dq mdoc
+element, in the default namespace; the
+.Dq head
+namespace is for block headers (such as
+.Sq .Ss
+and
+.Sq .Sh ) ;
+the
+.Dq body
+namespace is for block bodies; and the
+.Dq inline
+namespace is for in-line elements (such as
+.Sq .Em ) .
+.Ss HTML Filter
+The HTML filter, specified by
+.Fl f Ar html ,
+accepts the following filter-specific arguments:
+.Bl -tag -width "\-c css"
+.It Fl c Ar css
+The CSS file location, which defaults to
+.Ar mdocml.css .
+.It Fl e
+Whether to embed the CSS file into the HTML prologue.
.El
-.Ss Validate Filter
-The validate filter, specified by
-.Fl f Ar validate ,
-is the default filter. It produces no output, so specifying
-.Fl o Ar outfile
-results in an empty file.
-.\" The following requests should be uncommented and used where appropriate.
-.\" This next request is for sections 2, 3, and 9 function return values only.
-.\" .Sh RETURN VALUES
-.\" This next request is for sections 1, 6, 7 & 8 only.
-.\" .Sh ENVIRONMENT
-.\" .Sh FILES
-.\" .Sh EXAMPLES
-.\" This next request is for sections 1, 4, 6, and 8 only.
-.\" .Sh DIAGNOSTICS
-.\" The next request is for sections 2, 3, and 9 error and signal handling only.
-.\" .Sh ERRORS
+.\"
+.Sh EXAMPLES
+To produce an HTML4-strict document
+.Pa mdocml.html
+for
+.Pa mdocml.1
+with the default, embedded style-sheet:
+.Pp
+.D1 % mdocml -fhtml -e -o mdocml.html mdocml.1
+.Pp
+To create an XML document on standard output from
+.Pa mdocml.1
+with the default namespace identifiers
+.Li head ,
+.Li body ,
+.Li block
+and
+.Li inline :
+.Pp
+.D1 % mdocml mdocml.1
+.\"
.Sh SEE ALSO
.Xr groff 1 ,
.Xr mdoc.samples 7 ,
The
.Nm
utility was written by
-.An Em Kristaps Dzonsons Aq kristaps@kth.se .
+.An Kristaps Dzonsons Aq kristaps@kth.se .
.\"
.Sh CAVEATS
Most caveats of
structured ones:
.Bl -enum -compact -offset indent
.It
-The engine doesn't understand
-.Sq \&Xo
+The engine doesn't understand the
+.Sq \&No ,
+.Sq \&Db ,
+.Sq \&Xc ,
and
-.Sq \&Xc
-troff macros.
+.Sq \&Xo
+mdoc macros.
.It
All macro arguments may be quoted, instead of only some.
.It
-Blank lines raise warnings.
+Blank lines raise errors.
.It
If terminating punctuation is found, then
.Em all
remaining tokens are flushed after line scope is closed, not just the
last one.
.El
+.Pp
+The roff engine in
+.Nm
+produces text in-line; thus, output may already be partially written by
+the time an error is encountered.
.\" .Sh BUGS