summaryrefslogtreecommitdiff
path: root/xsd/doc/xsd.1
diff options
context:
space:
mode:
Diffstat (limited to 'xsd/doc/xsd.1')
-rw-r--r--xsd/doc/xsd.11648
1 files changed, 1648 insertions, 0 deletions
diff --git a/xsd/doc/xsd.1 b/xsd/doc/xsd.1
new file mode 100644
index 0000000..dc5b38a
--- /dev/null
+++ b/xsd/doc/xsd.1
@@ -0,0 +1,1648 @@
+.\" Process this file with
+.\" groff -man -Tascii xsd.1
+.\"
+.TH XSD 1 "July 2014" "XSD 4.0.0"
+.SH NAME
+xsd \- W3C XML Schema to C++ Compiler
+.\"
+.\"
+.\"
+.\"--------------------------------------------------------------------
+.SH SYNOPSIS
+.\"--------------------------------------------------------------------
+.B xsd
+.I command
+.B [
+.I options
+.B ]
+.I file
+.B [
+.I file
+.B ...]
+.in
+.B xsd help
+.B [
+.I command
+.B ]
+.in
+.B xsd version
+.\"
+.\"
+.\"
+.\"--------------------------------------------------------------------
+.SH DESCRIPTION
+.\"--------------------------------------------------------------------
+.B xsd
+generates vocabulary-specific, statically-typed C++ mapping from W3C XML
+Schema definitions. Particular mapping to produce is selected by a
+.IR command .
+Each mapping has a number of mapping-specific
+.I options
+that should appear, if any, after the
+.IR command .
+Input files should be W3C XML Schema definitions. The exact set of the
+generated files depends on the selected mapping and options.
+.\"
+.\"
+.\"
+.\"--------------------------------------------------------------------
+.SH COMMANDS
+.\"--------------------------------------------------------------------
+.IP \fBcxx-tree\fR
+Generate the C++/Tree mapping. For each input file in the form
+.B name.xsd
+the following C++ files are generated:
+.B name.hxx
+(header file),
+.B name.ixx
+(inline file, generated only if the
+.B --generate-inline
+option is specified),
+.B name.cxx
+(source file), and
+.B name-fwd.hxx
+(forward declaration file, generated only if the
+.B --generate-forward
+option is specified).
+
+.IP \fBcxx-parser\fR
+Generate the C++/Parser mapping. For each input file in the form
+.B name.xsd
+the following C++ files are generated:
+.B name-pskel.hxx
+(parser skeleton header file),
+.B name-pskel.ixx
+(parser skeleton inline file, generated only if the
+.B --generate-inline
+option is specified), and
+.B name-pskel.cxx
+(parser skeleton source file). If the
+.B --generate-noop-impl
+or
+.B --generate-print-impl
+option is specified, the following additional sample implementation files
+are generated:
+.B name-pimpl.hxx
+(parser implementation header file) and
+.B name-pimpl.cxx
+(parser implementation source file). If the
+.B --generate-test-driver
+option is specified, the additional
+.B name-driver.cxx
+test driver file is generated.
+
+.IP \fBhelp\fR
+Print usage information and exit. Use
+.PP
+.RS
+.RS 3
+.B xsd help
+.I command
+.RE
+.PP
+for command-specific help.
+.RE
+.IP \fBversion\fR
+Print version and exit.
+.\"--------------------------------------------------------------------
+.SH OPTIONS
+.\"--------------------------------------------------------------------
+Command-specific
+.IR options ,
+if any, should appear after the corresponding
+.IR command .
+
+.\"
+.\" Common options.
+.\"
+.SS common options
+.
+.\"
+.\" The following documentation was generated by CLI, a command
+.\" line interface compiler for C++.
+.\"
+.IP "\fB--std\fP \fIversion\fP"
+Specify the C++ standard that the generated code should conform to\. Valid
+values are \fBc++98\fP (default) and \fBc++11\fP\.
+
+The C++ standard affects various aspects of the generated code that are
+discussed in more detail in various mapping-specific documentation\.
+Overall, when C++11 is selected, the generated code relies on the move
+semantics and uses \fBstd::unique_ptr\fP instead of deprecated
+\fBstd::auto_ptr\fP\.
+
+When the C++11 mode is selected, you normally don't need to perform any
+extra steps other than enable C++11 in your C++ compiler, if required\. The
+XSD compiler will automatically add the necessary macro defines to the
+generated header files that will switch the header-only XSD runtime library
+(\fBlibxsd\fP) to the C++11 mode\. However, if you include any of the XSD
+runtime headers directly in your application (normally you just include the
+generated headers), then you will need to define the \fBXSD_CXX11\fP macro
+for your entire project\.
+
+.IP "\fB--char-type\fP \fItype\fP"
+Generate code using the provided character \fItype\fP instead of the default
+\fBchar\fP\. Valid values are \fBchar\fP and \fBwchar_t\fP\.
+
+.IP "\fB--char-encoding\fP \fIenc\fP"
+Specify the character encoding that should be used in the generated code\.
+Valid values for the \fBchar\fP character type are \fButf8\fP (default),
+\fBiso8859-1\fP, \fBlcp\fP (Xerces-C++ local code page), and \fBcustom\fP\.
+If you pass \fBcustom\fP as the value then you will need to include the
+transcoder implementation header for your encoding at the beginning of the
+generated header files (see the \fB--hxx-prologue\fP option)\.
+
+For the \fBwchar_t\fP character type the only valid value is \fBauto\fP and
+the encoding is automatically selected between UTF-16 and UTF-32/UCS-4,
+depending on the \fBwchar_t\fP type size\.
+
+.IP "\fB--output-dir\fP \fIdir\fP"
+Write generated files to \fIdir\fP instead of the current directory\.
+
+.IP "\fB--generate-inline\fP"
+Generate simple functions inline\. This option triggers creation of the
+inline file\.
+
+.IP "\fB--generate-xml-schema\fP"
+Generate a C++ header file as if the schema being compiled defines the XML
+Schema namespace\. For the C++/Tree mapping, the resulting file will contain
+definitions for all XML Schema built-in types\. For the C++/Parser mapping,
+the resulting file will contain definitions for all the parser skeletons and
+implementations corresponding to the XML Schema built-in types\.
+
+The schema file provided to the compiler need not exist and is only used to
+derive the name of the resulting header file\. Use the
+\fB--extern-xml-schema\fP option to include this file in the generated files
+for other schemas\.
+
+.IP "\fB--extern-xml-schema\fP \fIfile\fP"
+Include a header file derived from \fIfile\fP instead of generating the XML
+Schema namespace mapping inline\. The provided file need not exist and is
+only used to derive the name of the included header file\. Use the
+\fB--generate-xml-schema\fP option to generate this header file\.
+
+.IP "\fB--namespace-map\fP \fIxns\fP=\fIcns\fP"
+Map XML Schema namespace \fIxns\fP to C++ namespace \fIcns\fP\. Repeat this
+option to specify mapping for more than one XML Schema namespace\. For
+example, the following option:
+
+\fB--namespace-map http://example\.com/foo/bar=foo::bar\fP
+
+Will map the \fBhttp://example\.com/foo/bar\fP XML Schema namespace to the
+\fBfoo::bar\fP C++ namespace\.
+
+.IP "\fB--namespace-regex\fP \fIregex\fP"
+Add \fIregex\fP to the list of regular expressions used to translate XML
+Schema namespace names to C++ namespace names\. \fIregex\fP is a Perl-like
+regular expression in the form
+\fB/\fP\fIpattern\fP\fB/\fP\fIreplacement\fP\fB/\fP\. Any character can be
+used as a delimiter instead of \fB/\fP\. Escaping of the delimiter character
+in \fIpattern\fP or \fIreplacement\fP is not supported\.
+
+All the regular expressions are pushed into a stack with the last specified
+expression considered first\. The first match that succeeds is used\.
+Regular expressions are applied to a string in the form
+
+\fIfilename\fP \fInamespace\fP
+
+For example, if you have file \fBhello\.xsd\fP with namespace
+\fBhttp://example\.com/hello\fP and you run \fBxsd\fP on this file, then the
+string in question will be:
+
+\fBhello\.xsd\. http://example\.com/hello\fP
+
+For the built-in XML Schema namespace the string is:
+
+\fBXMLSchema\.xsd http://www\.w3\.org/2001/XMLSchema\fP
+
+The following three steps are performed for each regular expression until
+the match is found:
+
+1\. The expression is applied and if the result is empty the next expression
+is considered\.
+
+2\. All \fB/\fP are replaced with \fB::\fP\.
+
+3\. The result is verified to be a valid C++ scope name (e\.g\.,
+\fBfoo::bar\fP)\. If this test succeeds, the result is used as a C++
+namespace name\.
+
+As an example, the following expression maps XML Schema namespaces in the
+form \fBhttp://example\.com/foo/bar\fP to C++ namespaces in the form
+\fBfoo::bar\fP:
+
+\fB%\.* http://example\.com/(\.+)%$1%\fP
+
+See also the REGEX AND SHELL QUOTING section below\.
+
+.IP "\fB--namespace-regex-trace\fP"
+Trace the process of applying regular expressions specified with the
+\fB--namespace-regex\fP option\. Use this option to find out why your
+regular expressions don't do what you expected them to do\.
+
+.IP "\fB--reserved-name\fP \fIn\fP[=\fIr\fP]"
+Add name \fIn\fP to the list of names that should not be used as
+identifiers\. The name can optionally be followed by \fB=\fP and the
+replacement name \fIr\fP that should be used instead\. All the C++ keywords
+are already in this list\.
+
+.IP "\fB--include-with-brackets\fP"
+Use angle brackets (<>) instead of quotes ("") in generated \fB#include\fP
+directives\.
+
+.IP "\fB--include-prefix\fP \fIprefix\fP"
+Add \fIprefix\fP to generated \fB#include\fP directive paths\.
+
+For example, if you had the following import element in your schema
+
+\fB<import namespace="\.\.\." schemaLocation="base\.xsd"/>\fP
+
+and compiled this fragment with \fB--include-prefix schemas/\fP, then the
+include directive in the generated code would be:
+
+\fB#include "schemas/base\.hxx"\fP
+
+.IP "\fB--include-regex\fP \fIregex\fP"
+Add \fIregex\fP to the list of regular expressions used to transform
+\fB#include\fP directive paths\. \fIregex\fP is a Perl-like regular
+expression in the form \fB/\fP\fIpattern\fP\fB/\fP\fIreplacement\fP\fB/\fP\.
+Any character can be used as a delimiter instead of \fB/\fP\. Escaping of
+the delimiter character in \fIpattern\fP or \fIreplacement\fP is not
+supported\.
+
+All the regular expressions are pushed into a stack with the last specified
+expression considered first\. The first match that succeeds is used\.
+
+As an example, the following expression transforms paths in the form
+\fBschemas/foo/bar\fP to paths in the form \fBgenerated/foo/bar\fP:
+
+\fB%schemas/(\.+)%generated/$1%\fP
+
+See also the REGEX AND SHELL QUOTING section below\.
+
+.IP "\fB--include-regex-trace\fP"
+Trace the process of applying regular expressions specified with the
+\fB--include-regex\fP option\. Use this option to find out why your regular
+expressions don't do what you expected them to do\.
+
+.IP "\fB--guard-prefix\fP \fIprefix\fP"
+Add \fIprefix\fP to generated header inclusion guards\. The prefix is
+transformed to upper case and characters that are illegal in a preprocessor
+macro name are replaced with underscores\. If this option is not specified
+then the directory part of the input schema file is used as a prefix\.
+
+.IP "\fB--hxx-suffix\fP \fIsuffix\fP"
+Use the provided \fIsuffix\fP instead of the default \fB\.hxx\fP to
+construct the name of the header file\. Note that this suffix is also used
+to construct names of header files corresponding to included/imported
+schemas\.
+
+.IP "\fB--ixx-suffix\fP \fIsuffix\fP"
+Use the provided \fIsuffix\fP instead of the default \fB\.ixx\fP to
+construct the name of the inline file\.
+
+.IP "\fB--cxx-suffix\fP \fIsuffix\fP"
+Use the provided \fIsuffix\fP instead of the default \fB\.cxx\fP to
+construct the name of the source file\.
+
+.IP "\fB--fwd-suffix\fP \fIsuffix\fP"
+Use the provided \fIsuffix\fP instead of the default \fB-fwd\.hxx\fP to
+construct the name of the forward declaration file\.
+
+.IP "\fB--hxx-regex\fP \fIregex\fP"
+Use the provided expression to construct the name of the header file\.
+\fIregex\fP is a Perl-like regular expression in the form
+\fB/\fP\fIpattern\fP\fB/\fP\fIreplacement\fP\fB/\fP\. Note that this
+expression is also used to construct names of header files corresponding to
+included/imported schemas\. See also the REGEX AND SHELL QUOTING section
+below\.
+
+.IP "\fB--ixx-regex\fP \fIregex\fP"
+Use the provided expression to construct the name of the inline file\.
+\fIregex\fP is a Perl-like regular expression in the form
+\fB/\fP\fIpattern\fP\fB/\fP\fIreplacement\fP\fB/\fP\. See also the REGEX AND
+SHELL QUOTING section below\.
+
+.IP "\fB--cxx-regex\fP \fIregex\fP"
+Use the provided expression to construct the name of the source file\.
+\fIregex\fP is a Perl-like regular expression in the form
+\fB/\fP\fIpattern\fP\fB/\fP\fIreplacement\fP\fB/\fP\. See also the REGEX AND
+SHELL QUOTING section below\.
+
+.IP "\fB--fwd-regex\fP \fIregex\fP"
+Use the provided expression to construct the name of the forward declaration
+file\. \fIregex\fP is a Perl-like regular expression in the form
+\fB/\fP\fIpattern\fP\fB/\fP\fIreplacement\fP\fB/\fP\. See also the REGEX AND
+SHELL QUOTING section below\.
+
+.IP "\fB--hxx-prologue\fP \fItext\fP"
+Insert \fItext\fP at the beginning of the header file\.
+
+.IP "\fB--ixx-prologue\fP \fItext\fP"
+Insert \fItext\fP at the beginning of the inline file\.
+
+.IP "\fB--cxx-prologue\fP \fItext\fP"
+Insert \fItext\fP at the beginning of the source file\.
+
+.IP "\fB--fwd-prologue\fP \fItext\fP"
+Insert \fItext\fP at the beginning of the forward declaration file\.
+
+.IP "\fB--prologue\fP \fItext\fP"
+Insert \fItext\fP at the beginning of each generated file for which there is
+no file-specific prologue\.
+
+.IP "\fB--hxx-epilogue\fP \fItext\fP"
+Insert \fItext\fP at the end of the header file\.
+
+.IP "\fB--ixx-epilogue\fP \fItext\fP"
+Insert \fItext\fP at the end of the inline file\.
+
+.IP "\fB--cxx-epilogue\fP \fItext\fP"
+Insert \fItext\fP at the end of the source file\.
+
+.IP "\fB--fwd-epilogue\fP \fItext\fP"
+Insert \fItext\fP at the end of the forward declaration file\.
+
+.IP "\fB--epilogue\fP \fItext\fP"
+Insert \fItext\fP at the end of each generated file for which there is no
+file-specific epilogue\.
+
+.IP "\fB--hxx-prologue-file\fP \fIfile\fP"
+Insert the content of the \fIfile\fP at the beginning of the header file\.
+
+.IP "\fB--ixx-prologue-file\fP \fIfile\fP"
+Insert the content of the \fIfile\fP at the beginning of the inline file\.
+
+.IP "\fB--cxx-prologue-file\fP \fIfile\fP"
+Insert the content of the \fIfile\fP at the beginning of the source file\.
+
+.IP "\fB--fwd-prologue-file\fP \fIfile\fP"
+Insert the content of the \fIfile\fP at the beginning of the forward
+declaration file\.
+
+.IP "\fB--prologue-file\fP \fIfile\fP"
+Insert the content of the \fIfile\fP at the beginning of each generated file
+for which there is no file-specific prologue file\.
+
+.IP "\fB--hxx-epilogue-file\fP \fIfile\fP"
+Insert the content of the \fIfile\fP at the end of the header file\.
+
+.IP "\fB--ixx-epilogue-file\fP \fIfile\fP"
+Insert the content of the \fIfile\fP at the end of the inline file\.
+
+.IP "\fB--cxx-epilogue-file\fP \fIfile\fP"
+Insert the content of the \fIfile\fP at the end of the source file\.
+
+.IP "\fB--fwd-epilogue-file\fP \fIfile\fP"
+Insert the content of the \fIfile\fP at the end of the forward declaration
+file\.
+
+.IP "\fB--epilogue-file\fP \fIfile\fP"
+Insert the content of the \fIfile\fP at the end of each generated file for
+which there is no file-specific epilogue file\.
+
+.IP "\fB--export-symbol\fP \fIsymbol\fP"
+Insert \fIsymbol\fP in places where DLL export/import control statements
+(\fB__declspec(dllexport/dllimport)\fP) are necessary\.
+
+.IP "\fB--export-xml-schema\fP"
+Export/import types in the XML Schema namespace using the export symbol
+provided with the \fB--export-symbol\fP option\. The \fBXSD_NO_EXPORT\fP
+macro can be used to omit this code during C++ compilation, which may be
+useful if you would like to use the same generated code across multiple
+platforms\.
+
+.IP "\fB--export-maps\fP"
+Export polymorphism support maps from a Win32 DLL into which this generated
+code is placed\. This is necessary when your type hierarchy is split across
+several DLLs since otherwise each DLL will have its own set of maps\. In
+this situation the generated code for the DLL which contains base types
+and/or substitution group heads should be compiled with this option and the
+generated code for all other DLLs should be compiled with
+\fB--import-maps\fP\. This option is only valid together with
+\fB--generate-polymorphic\fP\. The \fBXSD_NO_EXPORT\fP macro can be used to
+omit this code during C++ compilation, which may be useful if you would like
+to use the same generated code across multiple platforms\.
+
+.IP "\fB--import-maps\fP"
+Import polymorphism support maps to a Win32 DLL or executable into which
+this generated code is linked\. See the \fB--export-maps\fP option
+documentation for details\. This options is only valid together with
+\fB--generate-polymorphic\fP\. The \fBXSD_NO_EXPORT\fP macro can be used to
+omit this code during C++ compilation, which may be useful if you would like
+to use the same generated code across multiple platforms\.
+
+.IP "\fB--generate-dep\fP"
+Generate \fBmake\fP dependency information\. This option triggers the
+creation of the \fB\.d\fP file containing the dependencies of the generated
+files on the main schema file as well as all the schema files that it
+includes/imports, transitively\. This dependency file is then normally
+included into the main \fBmakefile\fP to implement automatic dependency
+tracking\.
+
+Note also that automatic dependency generation is not supported in the
+file-per-type mode (\fB--file-per-type\fP)\. In this case, all the generated
+files are produced with a single compiler invocation and depend on all the
+schemas\. As a result, it is easier to establish such a dependency manually,
+perhaps with the help of the \fB--file-list*\fP options\.
+
+.IP "\fB--generate-dep-only\fP"
+Generate \fBmake\fP dependency information only\.
+
+.IP "\fB--dep-phony\fP"
+Generate phony targets for included/imported schema files, causing each to
+depend on nothing\. Such dummy rules work around \fBmake\fP errors caused by
+the removal of schema files without also updating the dependency file to
+match\.
+
+.IP "\fB--dep-target\fP \fItarget\fP"
+Change the target of the dependency rule\. By default it contains all the
+generated C++ files as well as the dependency file itself, without any
+directory prefixes\. If you require multiple targets, then you can specify
+them as a single, space-separated argument or you can repeat this option
+multiple times\.
+
+.IP "\fB--dep-suffix\fP \fIsuffix\fP"
+Use the provided \fIsuffix\fP instead of the default \fB\.d\fP to construct
+the name of the dependency file\.
+
+.IP "\fB--dep-regex\fP \fIregex\fP"
+Use the provided expression to construct the name of the dependency file\.
+\fIregex\fP is a Perl-like regular expression in the form
+\fB/\fP\fIpattern\fP\fB/\fP\fIreplacement\fP\fB/\fP\. See also the REGEX AND
+SHELL QUOTING section below\.
+
+.IP "\fB--disable-warning\fP \fIwarn\fP"
+Disable printing warning with id \fIwarn\fP\. If \fBall\fP is specified for
+the warning id then all warnings are disabled\.
+
+.IP "\fB--options-file\fP \fIfile\fP"
+Read additional options from \fIfile\fP\. Each option should appearing on a
+separate line optionally followed by space and an option value\. Empty lines
+and lines starting with \fB#\fP are ignored\. Option values can be enclosed
+in double (\fB"\fP) or single (\fB'\fP) quotes to preserve leading and
+trailing whitespaces as well as to specify empty values\. If the value
+itself contains trailing or leading quotes, enclose it with an extra pair of
+quotes, for example \fB'"x"'\fP\. Non-leading and non-trailing quotes are
+interpreted as being part of the option value\.
+
+The semantics of providing options in a file is equivalent to providing the
+same set of options in the same order on the command line at the point where
+the \fB--options-file\fP option is specified except that the shell escaping
+and quoting is not required\. You can repeat this option to specify more
+than one options file\.
+
+.IP "\fB--show-sloc\fP"
+Show the number of generated physical source lines of code (SLOC)\.
+
+.IP "\fB--sloc-limit\fP \fInum\fP"
+Check that the number of generated physical source lines of code (SLOC) does
+not exceed \fInum\fP\.
+
+.IP "\fB--proprietary-license\fP"
+Indicate that the generated code is licensed under a proprietary license
+instead of the GPL\.
+
+.IP "\fB--custom-literals\fP \fIfile\fP"
+Load custom XML string to C++ literal mappings from \fIfile\fP\. This
+mechanism can be useful if you are using a custom character encoding and
+some of the strings in your schemas, for example element/attribute names or
+enumeration values, contain non-ASCII characters\. In this case you will
+need to provide a custom mapping to C++ literals for such strings\. The
+format of this file is specified in the \fBcustom-literals\.xsd\fP XML
+Schema file that can be found in the documentation directory\.
+
+.IP "\fB--preserve-anonymous\fP"
+Preserve anonymous types\. By default anonymous types are automatically
+named with names derived from the enclosing elements/attributes\. Because
+mappings implemented by this compiler require all types to be named, this
+option is only useful if you want to make sure your schemas don't have
+anonymous types\.
+
+.IP "\fB--show-anonymous\fP"
+Show elements and attributes that are of anonymous types\. This option only
+makes sense together with the \fB--preserve-anonymous\fP option\.
+
+.IP "\fB--anonymous-regex\fP \fIregex\fP"
+Add \fIregex\fP to the list of regular expressions used to derive names for
+anonymous types from the enclosing attributes/elements\. \fIregex\fP is a
+Perl-like regular expression in the form
+\fB/\fP\fIpattern\fP\fB/\fP\fIreplacement\fP\fB/\fP\. Any character can be
+used as a delimiter instead of \fB/\fP\. Escaping of the delimiter character
+in \fIpattern\fP or \fIreplacement\fP is not supported\.
+
+All the regular expressions are pushed into a stack with the last specified
+expression considered first\. The first match that succeeds is used\.
+Regular expressions are applied to a string in the form
+
+\fIfilename\fP \fInamespace\fP \fIxpath\fP
+
+For instance:
+
+\fBhello\.xsd http://example\.com/hello element\fP
+
+\fBhello\.xsd http://example\.com/hello type/element\fP
+
+As an example, the following expression makes all the derived names start
+with capital letters\. This could be useful when your naming convention
+requires type names to start with capital letters:
+
+\fB%\.* \.* (\.+/)*(\.+)%\eu$2%\fP
+
+See also the REGEX AND SHELL QUOTING section below\.
+
+.IP "\fB--anonymous-regex-trace\fP"
+Trace the process of applying regular expressions specified with the
+\fB--anonymous-regex\fP option\. Use this option to find out why your
+regular expressions don't do what you expected them to do\.
+
+.IP "\fB--location-map\fP \fIol\fP=\fInl\fP"
+Map the original schema location \fIol\fP that is specified in the XML
+Schema include or import elements to new schema location \fInl\fP\. Repeat
+this option to map more than one schema location\. For example, the
+following option maps the \fBhttp://example\.com/foo\.xsd\fP URL to the
+\fBfoo\.xsd\fP local file\.
+
+\fB--location-map http://example\.com/foo\.xsd=foo\.xsd\fP
+
+.IP "\fB--location-regex\fP \fIregex\fP"
+Add \fIregex\fP to the list of regular expressions used to map schema
+locations that are specified in the XML Schema include or import elements\.
+\fIregex\fP is a Perl-like regular expression in the form
+\fB/\fP\fIpattern\fP\fB/\fP\fIreplacement\fP\fB/\fP\. Any character can be
+used as a delimiter instead of \fB/\fP\. Escaping of the delimiter character
+in \fIpattern\fP or \fIreplacement\fP is not supported\. All the regular
+expressions are pushed into a stack with the last specified expression
+considered first\. The first match that succeeds is used\.
+
+For example, the following expression maps URL locations in the form
+\fBhttp://example\.com/foo/bar\.xsd\fP to local files in the form
+\fBbar\.xsd\fP:
+
+\fB%http://\.+/(\.+)%$1%\fP
+
+See also the REGEX AND SHELL QUOTING section below\.
+
+.IP "\fB--location-regex-trace\fP"
+Trace the process of applying regular expressions specified with the
+\fB--location-regex\fP option\. Use this option to find out why your regular
+expressions don't do what you expected them to do\.
+
+.IP "\fB--file-per-type\fP"
+Generate a separate set of C++ files for each type defined in XML Schema\.
+Note that in this mode you only need to compile the root schema(s) and the
+code will be generated for all included and imported schemas\. This
+compilation mode is primarily useful when some of your schemas cannot be
+compiled separately or have cyclic dependencies which involve type
+inheritance\. Other options related to this mode are:
+\fB--type-file-regex\fP, \fB--schema-file-regex\fP, \fB--fat-type-file\fP,
+and \fB--file-list\fP\.
+
+.IP "\fB--type-file-regex\fP \fIregex\fP"
+Add \fIregex\fP to the list of regular expressions used to translate type
+names to file names when the \fB--file-per-type\fP option is specified\.
+\fIregex\fP is a Perl-like regular expression in the form
+\fB/\fP\fIpattern\fP\fB/\fP\fIreplacement\fP\fB/\fP\. Any character can be
+used as a delimiter instead of \fB/\fP\. Escaping of the delimiter character
+in \fIpattern\fP or \fIreplacement\fP is not supported\. All the regular
+expressions are pushed into a stack with the last specified expression
+considered first\. The first match that succeeds is used\. Regular
+expressions are applied to a string in the form
+
+\fInamespace\fP \fItype-name\fP
+
+For example, the following expression maps type \fBfoo\fP that is defined in
+the \fBhttp://example\.com/bar\fP namespace to file name \fBbar-foo\fP:
+
+\fB%http://example\.com/(\.+) (\.+)%$1-$2%\fP
+
+See also the REGEX AND SHELL QUOTING section below\.
+
+.IP "\fB--type-file-regex-trace\fP"
+Trace the process of applying regular expressions specified with the
+\fB--type-file-regex\fP option\. Use this option to find out why your
+regular expressions don't do what you expected them to do\.
+
+.IP "\fB--schema-file-regex\fP \fIregex\fP"
+Add \fIregex\fP to the list of regular expressions used to translate schema
+file names when the \fB--file-per-type\fP option is specified\. \fIregex\fP
+is a Perl-like regular expression in the form
+\fB/\fP\fIpattern\fP\fB/\fP\fIreplacement\fP\fB/\fP\. Any character can be
+used as a delimiter instead of \fB/\fP\. Escaping of the delimiter character
+in \fIpattern\fP or \fIreplacement\fP is not supported\. All the regular
+expressions are pushed into a stack with the last specified expression
+considered first\. The first match that succeeds is used\. Regular
+Expressions are applied to the absolute filesystem path of a schema file and
+the result, including the directory part, if any, is used to derive the
+\fB#include\fP directive paths as well as the generated C++ file paths\.
+This option, along with \fB--type-file-regex\fP are primarily useful to
+place the generated files into subdirectories or to resolve file name
+conflicts\.
+
+For example, the following expression maps schema files in the
+\fBfoo/1\.0\.0/\fP subdirectory to the files in the \fBfoo/\fP
+subdirectory\. As a result, the \fB#include\fP directive paths for such
+schemas will be in the \fBfoo/schema\.hxx\fP form and the generated C++
+files will be placed into the \fBfoo/\fP subdirectory:
+
+\fB%\.*/foo/1\.0\.0/(\.+)%foo/$1%\fP
+
+See also the REGEX AND SHELL QUOTING section below\.
+
+.IP "\fB--schema-file-regex-trace\fP"
+Trace the process of applying regular expressions specified with the
+\fB--schema-file-regex\fP option\. Use this option to find out why your
+regular expressions don't do what you expected them to do\.
+
+.IP "\fB--fat-type-file\fP"
+Generate code corresponding to global elements into type files instead of
+schema files when the \fB--type-file-regex\fP option is specified\. This
+option is primarily useful when trying to minimize the amount of object code
+that is linked to an executable by packaging compiled generated code into a
+static (archive) library\.
+
+.IP "\fB--file-list\fP \fIfile\fP"
+Write a list of generated C++ files to \fIfile\fP\. This option is primarily
+useful in the file-per-type compilation mode (\fB--file-per-type\fP) to
+create a list of generated C++ files, for example, as a makefile fragment\.
+
+.IP "\fB--file-list-prologue\fP \fItext\fP"
+Insert \fItext\fP at the beginning of the file list\. As a convenience, all
+occurrences of the \fB\en\fP character sequence in \fItext\fP are replaced
+with new lines\. This option can, for example, be used to assign the
+generated file list to a makefile variable\.
+
+.IP "\fB--file-list-epilogue\fP \fItext\fP"
+Insert \fItext\fP at the end of the file list\. As a convenience, all
+occurrences of the \fB\en\fP character sequence in \fItext\fP are replaced
+with new lines\.
+
+.IP "\fB--file-list-delim\fP \fItext\fP"
+Delimit file names written to the file list with \fItext\fP instead of new
+lines\. As a convenience, all occurrences of the \fB\en\fP character
+sequence in \fItext\fP are replaced with new lines\.
+
+.\"
+.\" C++/Tree options.
+.\"
+.SS cxx-tree command options
+.\"
+.\" The following documentation was generated by CLI, a command
+.\" line interface compiler for C++.
+.\"
+.IP "\fB--generate-polymorphic\fP"
+Generate polymorphism-aware code\. Specify this option if you use
+substitution groups or \fBxsi:type\fP\. Use the \fB--polymorphic-type\fP or
+\fB--polymorphic-type-all\fP option to specify which type hierarchies are
+polymorphic\.
+
+.IP "\fB--polymorphic-type\fP \fItype\fP"
+Indicate that \fItype\fP is a root of a polymorphic type hierarchy\. The
+compiler can often automatically determine which types are polymorphic based
+on the substitution group declarations\. However, you may need to use this
+option if you are not using substitution groups or if substitution groups
+are defined in another schema\. You need to specify this option when
+compiling every schema file that references \fItype\fP\. The \fItype\fP
+argument is an XML Schema type name that can be optionally qualified with a
+namespace in the \fInamespace\fP\fB#\fP\fIname\fP form\.
+
+.IP "\fB--polymorphic-type-all\fP"
+Indicate that all types should be treated as polymorphic\.
+
+.IP "\fB--polymorphic-plate\fP \fInum\fP"
+Specify the polymorphic map plate the generated code should register on\.
+This functionality is primarily useful to segregate multiple schemas that
+define the same polymorphic types\.
+
+.IP "\fB--ordered-type\fP \fItype\fP"
+Indicate that element order in \fItype\fP is significant\. An example would
+be a complex type with unbounded choice as a content model where the element
+order in XML has application-specific semantics\. For ordered types the
+compiler generates a special container data member and a corresponding set
+of accessors and modifiers that are used to capture the order of elements
+and, for mixed content, of text\.
+
+The \fItype\fP argument is an XML Schema type name that can be optionally
+qualified with a namespace in the \fInamespace\fP\fB#\fP\fIname\fP form\.
+Note also that you will need to specify this option when compiling every
+schema file that has other ordered types derived from this type\.
+
+.IP "\fB--ordered-type-derived\fP"
+Automatically treat types derived from ordered bases as also ordered\. This
+is primarily useful if you would like to be able to iterate over the
+complete content using the content order container\.
+
+.IP "\fB--ordered-type-mixed\fP"
+Automatically treat complex types with mixed content as ordered\.
+
+.IP "\fB--ordered-type-all\fP"
+Indicate that element order in all types is significant\.
+
+.IP "\fB--order-container\fP \fItype\fP"
+Specify a custom class template that should be used as a container for the
+content order in ordered types instead of the default \fBstd::vector\fP\.
+See \fB--ordered-type\fP for more information on ordered type\. This option
+is primarily useful if you need to perform more complex lookups in the
+content order container, for example by element id\. In this case, a
+container like Boost multi-index may be more convenient\. Note that if using
+a custom container, you will also most likely need to include the relevant
+headers using the \fB--hxx-prologue*\fP options\.
+
+.IP "\fB--generate-serialization\fP"
+Generate serialization functions\. Serialization functions convert the
+object model back to XML\.
+
+.IP "\fB--generate-ostream\fP"
+Generate ostream insertion operators (\fBoperator<<\fP) for generated
+types\. This allows one to easily print a fragment or the whole object model
+for debugging or logging\.
+
+.IP "\fB--generate-doxygen\fP"
+Generate documentation comments suitable for extraction by the Doxygen
+documentation system\. Documentation from annotations is added to the
+comments if present in the schema\.
+
+.IP "\fB--generate-comparison\fP"
+Generate comparison operators (\fBoperator==\fP and \fBoperator!=\fP) for
+complex types\. Comparison is performed member-wise\.
+
+.IP "\fB--generate-default-ctor\fP"
+Generate default constructors even for types that have required members\.
+Required members of an instance constructed using such a constructor are not
+initialized and accessing them results in undefined behavior\.
+
+.IP "\fB--generate-from-base-ctor\fP"
+Generate constructors that expect an instance of a base type followed by all
+required members\.
+
+.IP "\fB--suppress-assignment\fP"
+Suppress the generation of copy assignment operators for complex types\. If
+this option is specified, the copy assignment operators for such types are
+declared private and left unimplemented\.
+
+.IP "\fB--generate-detach\fP"
+Generate detach functions for required elements and attributes\. Detach
+functions for optional and sequence cardinalities are provided by the
+respective containers\. These functions, for example, allow you to move
+sub-trees in the object model either within the same tree or between
+different trees\.
+
+.IP "\fB--generate-wildcard\fP"
+Generate accessors and modifiers as well as parsing and serialization code
+for XML Schema wildcards (\fBany\fP and \fBanyAttribute\fP)\. XML content
+matched by wildcards is presented as DOM fragments\. Note that you need to
+initialize the Xerces-C++ runtime if you are using this option\.
+
+.IP "\fB--generate-any-type\fP"
+Extract and store content of the XML Schema \fBanyType\fP type as a DOM
+fragment\. Note that you need to initialize the Xerces-C++ runtime if you
+are using this option\.
+
+.IP "\fB--generate-insertion\fP \fIos\fP"
+Generate data representation stream insertion operators for the \fIos\fP
+output stream type\. Repeat this option to specify more than one stream
+type\. The ACE CDR stream (\fBACE_OutputCDR\fP) and RPC XDR are recognized
+by the compiler and the necessary \fB#include\fP directives are
+automatically generated\. For custom stream types use the
+\fB--hxx-prologue*\fP options to provide the necessary declarations\.
+
+.IP "\fB--generate-extraction\fP \fIis\fP"
+Generate data representation stream extraction constructors for the \fIis\fP
+input stream type\. Repeat this option to specify more than one stream
+type\. The ACE CDR stream (\fBACE_InputCDR\fP) and RPC XDR are recognized by
+the compiler and the necessary \fB#include\fP directives are automatically
+generated\. For custom stream types use the \fB--hxx-prologue*\fP options to
+provide the necessary declarations\.
+
+.IP "\fB--generate-forward\fP"
+Generate a separate header file with forward declarations for the types
+being generated\.
+
+.IP "\fB--suppress-parsing\fP"
+Suppress the generation of the parsing functions and constructors\. Use this
+option to reduce the generated code size when parsing from XML is not
+needed\.
+
+.IP "\fB--generate-element-type\fP"
+Generate types instead of parsing and serialization functions for root
+elements\. This is primarily useful to distinguish object models with the
+same root type but with different root elements\.
+
+.IP "\fB--generate-element-map\fP"
+Generate a root element map that allows uniform parsing and serialization of
+multiple root elements\. This option is only valid together with
+\fB--generate-element-type\fP\.
+
+.IP "\fB--generate-intellisense\fP"
+Generate workarounds for IntelliSense bugs in Visual Studio 2005 (8\.0)\.
+When this option is used, the resulting code is slightly more verbose\.
+IntelliSense in Visual Studio 2008 (9\.0) and later does not require these
+workarounds\. Support for IntelliSense in Visual Studio 2003 (7\.1) is
+improved with this option but is still incomplete\.
+
+.IP "\fB--omit-default-attributes\fP"
+Omit attributes with default and fixed values from serialized XML
+documents\.
+
+.IP "\fB--type-naming\fP \fIstyle\fP"
+Specify the type naming convention that should be used in the generated
+code\. Valid styles are \fBknr\fP (default), \fBucc\fP, and \fBjava\fP\. See
+the NAMING CONVENTION section below for more information\.
+
+.IP "\fB--function-naming\fP \fIstyle\fP"
+Specify the function naming convention that should be used in the generated
+code\. Valid styles are \fBknr\fP (default), \fBlcc\fP, and \fBjava\fP\. See
+the NAMING CONVENTION section below for more information\.
+
+.IP "\fB--type-regex\fP \fIregex\fP"
+Add \fIregex\fP to the list of regular expressions used to translate XML
+Schema type names to C++ type names\. See the NAMING CONVENTION section
+below for more information\.
+
+.IP "\fB--accessor-regex\fP \fIregex\fP"
+Add \fIregex\fP to the list of regular expressions used to translate XML
+Schema names of elements/attributes to C++ accessor function names\. See the
+NAMING CONVENTION section below for more information\.
+
+.IP "\fB--one-accessor-regex\fP \fIregex\fP"
+Add \fIregex\fP to the list of regular expressions used to translate XML
+Schema names of elements/attributes with cardinality one to C++ accessor
+function names\. See the NAMING CONVENTION section below for more
+information\.
+
+.IP "\fB--opt-accessor-regex\fP \fIregex\fP"
+Add \fIregex\fP to the list of regular expressions used to translate XML
+Schema names of elements/attributes with cardinality optional to C++
+accessor function names\. See the NAMING CONVENTION section below for more
+information\.
+
+.IP "\fB--seq-accessor-regex\fP \fIregex\fP"
+Add \fIregex\fP to the list of regular expressions used to translate XML
+Schema names of elements/attributes with cardinality sequence to C++
+accessor function names\. See the NAMING CONVENTION section below for more
+information\.
+
+.IP "\fB--modifier-regex\fP \fIregex\fP"
+Add \fIregex\fP to the list of regular expressions used to translate XML
+Schema names of elements/attributes to C++ modifier function names\. See the
+NAMING CONVENTION section below for more information\.
+
+.IP "\fB--one-modifier-regex\fP \fIregex\fP"
+Add \fIregex\fP to the list of regular expressions used to translate XML
+Schema names of elements/attributes with cardinality one to C++ modifier
+function names\. See the NAMING CONVENTION section below for more
+information\.
+
+.IP "\fB--opt-modifier-regex\fP \fIregex\fP"
+Add \fIregex\fP to the list of regular expressions used to translate XML
+Schema names of elements/attributes with cardinality optional to C++
+modifier function names\. See the NAMING CONVENTION section below for more
+information\.
+
+.IP "\fB--seq-modifier-regex\fP \fIregex\fP"
+Add \fIregex\fP to the list of regular expressions used to translate XML
+Schema names of elements/attributes with cardinality sequence to C++
+modifier function names\. See the NAMING CONVENTION section below for more
+information\.
+
+.IP "\fB--parser-regex\fP \fIregex\fP"
+Add \fIregex\fP to the list of regular expressions used to translate XML
+Schema element names to C++ parsing function names\. See the NAMING
+CONVENTION section below for more information\.
+
+.IP "\fB--serializer-regex\fP \fIregex\fP"
+Add \fIregex\fP to the list of regular expressions used to translate XML
+Schema element names to C++ serialization function names\. See the NAMING
+CONVENTION section below for more information\.
+
+.IP "\fB--const-regex\fP \fIregex\fP"
+Add \fIregex\fP to the list of regular expressions used to translate XML
+Schema-derived names to C++ constant names\. See the NAMING CONVENTION
+section below for more information\.
+
+.IP "\fB--enumerator-regex\fP \fIregex\fP"
+Add \fIregex\fP to the list of regular expressions used to translate XML
+Schema enumeration values to C++ enumerator names\. See the NAMING
+CONVENTION section below for more information\.
+
+.IP "\fB--element-type-regex\fP \fIregex\fP"
+Add \fIregex\fP to the list of regular expressions used to translate XML
+Schema element names to C++ element type names\. See the NAMING CONVENTION
+section below for more information\.
+
+.IP "\fB--name-regex-trace\fP"
+Trace the process of applying regular expressions specified with the name
+transformation options\. Use this option to find out why your regular
+expressions don't do what you expected them to do\.
+
+.IP "\fB--root-element-first\fP"
+Treat only the first global element as a document root\. By default all
+global elements are considered document roots\.
+
+.IP "\fB--root-element-last\fP"
+Treat only the last global element as a document root\. By default all
+global elements are considered document roots\.
+
+.IP "\fB--root-element-all\fP"
+Treat all global elements as document roots\. This is the default behavior\.
+By explicitly specifying this option you can suppress the warning that is
+issued if more than one global element is defined\.
+
+.IP "\fB--root-element-none\fP"
+Do not treat any global elements as document roots\. By default all global
+elements are considered document roots\.
+
+.IP "\fB--root-element\fP \fIelement\fP"
+Treat only \fIelement\fP as a document root\. Repeat this option to specify
+more than one root element\.
+
+.IP "\fB--custom-type\fP \fImap\fP"
+Use a custom C++ type instead of the generated class\. The \fImap\fP
+argument is in the form \fIname\fP[\fB=\fP\fItype\fP[\fB/\fP\fIbase\fP]],
+where \fIname\fP is a type name as defined in XML Schema and \fItype\fP is a
+C++ type name that should be used instead\. If \fItype\fP is not present or
+empty then the custom type is assumed to have the same name and be defined
+in the same namespace as the generated class would have\. If \fIbase\fP is
+specified then the generated class is still generated but with that name\.
+
+.IP "\fB--custom-type-regex\fP \fIregex\fP"
+Use custom C++ types instead of the generated classes\. The \fIregex\fP
+argument is in the form
+\fB/\fP\fIname-pat\fP\fB/\fP[\fItype-sub\fP\fB/\fP[\fIbase-sub\fP\fB/\fP]],
+where \fIname-pat\fP is a regex pattern that will be matched against type
+names as defined in XML Schema and \fItype-sub\fP is a C++ type name
+substitution that should be used instead\. If \fItype-sub\fP is not present
+or its substitution results in an empty string then the custom type is
+assumed to have the same name and be defined in the same namespace as the
+generated class would have\. If \fIbase-sub\fP is present and its
+substitution results in a non-empty string then the generated class is still
+generated but with the result of this substitution as its name\. The pattern
+and substitutions are in the Perl regular expression format\. See also the
+REGEX AND SHELL QUOTING section below\.
+
+.IP "\fB--parts\fP \fInum\fP"
+Split generated source code into \fInum\fP parts\. This is useful when
+translating large, monolithic schemas and a C++ compiler is not able to
+compile the resulting source code at once (usually due to insufficient
+memory)\.
+
+.IP "\fB--parts-suffix\fP \fIsuffix\fP"
+Use \fIsuffix\fP instead of the default '\fB-\fP' to separate the file name
+from the part number\.
+
+\"
+\" C++/Parser
+\"
+.SS cxx-parser command options
+.\"
+.\" The following documentation was generated by CLI, a command
+.\" line interface compiler for C++.
+.\"
+.IP "\fB--type-map\fP \fImapfile\fP"
+Read XML Schema to C++ type mapping information from \fImapfile\fP\. Repeat
+this option to specify several type maps\. Type maps are considered in order
+of appearance and the first match is used\. By default all user-defined
+types are mapped to \fBvoid\fP\. See the TYPE MAP section below for more
+information\.
+
+.IP "\fB--xml-parser\fP \fIparser\fP"
+Use \fIparser\fP as the underlying XML parser\. Valid values are
+\fBxerces\fP for Xerces-C++ (default) and \fBexpat\fP for Expat\.
+
+.IP "\fB--generate-validation\fP"
+Generate validation code\. The validation code ("perfect parser") ensures
+that instance documents conform to the schema\. Validation code is generated
+by default when the selected underlying XML parser is non-validating
+(\fBexpat\fP)\.
+
+.IP "\fB--suppress-validation\fP"
+Suppress the generation of validation code\. Validation is suppressed by
+default when the selected underlying XML parser is validating
+(\fBxerces\fP)\.
+
+.IP "\fB--generate-polymorphic\fP"
+Generate polymorphism-aware code\. Specify this option if you use
+substitution groups or \fBxsi:type\fP\.
+
+.IP "\fB--generate-noop-impl\fP"
+Generate a sample parser implementation that does nothing (no operation)\.
+The sample implementation can then be filled with the application-specific
+code\. For an input file in the form \fBname\.xsd\fP this option triggers
+the generation of two additional C++ files in the form:
+\fBname-pimpl\.hxx\fP (parser implementation header file) and
+\fBname-pimpl\.cxx\fP (parser implementation source file)\.
+
+.IP "\fB--generate-print-impl\fP"
+Generate a sample parser implementation that prints the XML data to STDOUT\.
+For an input file in the form \fBname\.xsd\fP this option triggers the
+generation of two additional C++ files in the form: \fBname-pimpl\.hxx\fP
+(parser implementation header file) and \fBname-pimpl\.cxx\fP (parser
+implementation source file)\.
+
+.IP "\fB--generate-test-driver\fP"
+Generate a test driver for the sample parser implementation\. For an input
+file in the form \fBname\.xsd\fP this option triggers the generation of an
+additional C++ file in the form \fBname-driver\.cxx\fP\.
+
+.IP "\fB--force-overwrite\fP"
+Force overwriting of the existing implementation and test driver files\. Use
+this option only if you do not mind loosing the changes you have made in the
+sample implementation or test driver files\.
+
+.IP "\fB--root-element-first\fP"
+Indicate that the first global element is the document root\. This
+information is used to generate the test driver for the sample
+implementation\.
+
+.IP "\fB--root-element-last\fP"
+Indicate that the last global element is the document root\. This
+information is used to generate the test driver for the sample
+implementation\.
+
+.IP "\fB--root-element\fP \fIelement\fP"
+Indicate that \fIelement\fP is the document root\. This information is used
+to generate the test driver for the sample implementation\.
+
+.IP "\fB--skel-type-suffix\fP \fIsuffix\fP"
+Use the provided \fIsuffix\fP instead of the default \fB_pskel\fP to
+construct the names of the generated parser skeletons\.
+
+.IP "\fB--skel-file-suffix\fP \fIsuffix\fP"
+Use the provided \fIsuffix\fP instead of the default \fB-pskel\fP to
+construct the names of the generated parser skeleton files\.
+
+.IP "\fB--impl-type-suffix\fP \fIsuffix\fP"
+Use the provided \fIsuffix\fP instead of the default \fB_pimpl\fP to
+construct the names of the parser implementations for the built-in XML
+Schema types as well as sample parser implementations\.
+
+.IP "\fB--impl-file-suffix\fP \fIsuffix\fP"
+Use the provided \fIsuffix\fP instead of the default \fB-pimpl\fP to
+construct the names of the generated sample parser implementation files\.
+
+\"
+\" NAMING CONVENTION
+\"
+
+.SH NAMING CONVENTION
+The compiler can be instructed to use a particular naming convention in
+the generated code. A number of widely-used conventions can be selected
+using the
+.B --type-naming
+and
+.B --function-naming
+options. A custom naming convention can be achieved using the
+.BR --type-regex ,
+.BR --accessor-regex ,
+.BR --one-accessor-regex ,
+.BR --opt-accessor-regex ,
+.BR --seq-accessor-regex ,
+.BR --modifier-regex ,
+.BR --one-modifier-regex ,
+.BR --opt-modifier-regex ,
+.BR --seq-modifier-regex ,
+.BR --parser-regex ,
+.BR --serializer-regex ,
+.BR --const-regex ,
+.BR --enumerator-regex ,
+and
+.B --element-type-regex
+options.
+
+The
+.B --type-naming
+option specifies the convention that should be used for naming C++ types.
+Possible values for this option are
+.B knr
+(default),
+.BR ucc ,
+and
+.BR java .
+The
+.B knr
+value (stands for K&R) signifies the standard, lower-case naming convention
+with the underscore used as a word delimiter, for example: foo, foo_bar.
+The
+.B ucc
+(stands for upper-camel-case) and
+.B java
+values a synonyms for the same naming convention where the first letter
+of each word in the name is capitalized, for example: Foo, FooBar.
+
+Similarly, the
+.B --function-naming
+option specifies the convention that should be used for naming C++ functions.
+Possible values for this option are
+.B knr
+(default),
+.BR lcc ,
+and
+.BR java .
+The
+.B knr
+value (stands for K&R) signifies the standard, lower-case naming convention
+with the underscore used as a word delimiter, for example: foo(), foo_bar().
+The
+.B lcc
+value (stands for lower-camel-case) signifies a naming convention where the
+first letter of each word except the first is capitalized, for example: foo(),
+fooBar(). The
+.B java
+naming convention is similar to the lower-camel-case one except that accessor
+functions are prefixed with get, modifier functions are prefixed with set,
+parsing functions are prefixed with parse, and serialization functions are
+prefixed with serialize, for example: getFoo(), setFooBar(), parseRoot(),
+serializeRoot().
+
+Note that the naming conventions specified with the
+.B --type-naming
+and
+.B --function-naming
+options perform only limited transformations on the
+names that come from the schema in the form of type, attribute, and element
+names. In other words, to get consistent results, your schemas should follow
+a similar naming convention as the one you would like to have in the generated
+code. Alternatively, you can use the
+.B --*-regex
+options (discussed below) to perform further transformations on the names
+that come from the schema.
+
+The
+.BR --type-regex ,
+.BR --accessor-regex ,
+.BR --one-accessor-regex ,
+.BR --opt-accessor-regex ,
+.BR --seq-accessor-regex ,
+.BR --modifier-regex ,
+.BR --one-modifier-regex ,
+.BR --opt-modifier-regex ,
+.BR --seq-modifier-regex ,
+.BR --parser-regex ,
+.BR --serializer-regex ,
+.BR --const-regex ,
+.BR --enumerator-regex ,
+and
+.B --element-type-regex
+options allow you to specify extra regular expressions for each name
+category in addition to the predefined set that is added depending on
+the
+.B --type-naming
+and
+.B --function-naming
+options. Expressions that are provided with the
+.B --*-regex
+options are evaluated prior to any predefined expressions. This allows
+you to selectively override some or all of the predefined transformations.
+When debugging your own expressions, it is often useful to see which
+expressions match which names. The
+.B --name-regex-trace
+option allows you to trace the process of applying
+regular expressions to names.
+
+The value for the
+.B --*-regex
+options should be a perl-like regular expression in the form
+.BI / pattern / replacement /\fR.
+Any character can be used as a delimiter instead of
+.BR / .
+Escaping of the delimiter character in
+.I pattern
+or
+.I replacement
+is not supported. All the regular expressions for each category are pushed
+into a category-specific stack with the last specified expression
+considered first. The first match that succeeds is used. For the
+.B --one-accessor-regex
+(accessors with cardinality one),
+.B --opt-accessor-regex
+(accessors with cardinality optional), and
+.B --seq-accessor-regex
+(accessors with cardinality sequence) categories the
+.B --accessor-regex
+expressions are used as a fallback. For the
+.BR --one-modifier-regex ,
+.BR --opt-modifier-regex ,
+and
+.B --seq-modifier-regex
+categories the
+.B --modifier-regex
+expressions are used as a fallback. For the
+.B --element-type-regex
+category the
+.B --type-regex
+expressions are used as a fallback.
+
+The type name expressions
+.RB ( --type-regex )
+are evaluated on the name string that has the following format:
+
+[\fInamespace \fR]\fIname\fR[\fB,\fIname\fR][\fB,\fIname\fR][\fB,\fIname\fR]
+
+The element type name expressions
+.RB ( --element-type-regex ),
+effective only when the
+.B --generate-element-type
+option is specified, are evaluated on the name string that has the following
+format:
+
+.I namespace name
+
+In the type name format the
+.I namespace
+part followed by a space is only present for global type names. For global
+types and elements defined in schemas without a target namespace, the
+.I namespace
+part is empty but the space is still present. In the type name format after
+the initial
+.I name
+component, up to three additional
+.I name
+components can be present, separated by commas. For example:
+
+.B http://example.com/hello type
+
+.B foo
+
+.B foo,iterator
+
+.B foo,const,iterator
+
+The following set of predefined regular expressions is used to transform
+type names when the upper-camel-case naming convention is selected:
+
+.B /(?:[^ ]* )?([^,]+)/\\\\u$1/
+
+.B /(?:[^ ]* )?([^,]+),([^,]+)/\\\\u$1\\\\u$2/
+
+.B /(?:[^ ]* )?([^,]+),([^,]+),([^,]+)/\\\\u$1\\\\u$2\\\\u$3/
+
+.B /(?:[^ ]* )?([^,]+),([^,]+),([^,]+),([^,]+)/\\\\u$1\\\\u$2\\\\u$3\\\\u$4/
+
+The accessor and modifier expressions
+.RB ( --*accessor-regex
+and
+.BR --*modifier-regex )
+are evaluated on the name string that has the following format:
+
+\fIname\fR[\fB,\fIname\fR][\fB,\fIname\fR]
+
+After the initial
+.I name
+component, up to two additional
+.I name
+components can be present, separated by commas. For example:
+
+.B foo
+
+.B dom,document
+
+.B foo,default,value
+
+The following set of predefined regular expressions is used to transform
+accessor names when the
+.B java
+naming convention is selected:
+
+.B /([^,]+)/get\\\\u$1/
+
+.B /([^,]+),([^,]+)/get\\\\u$1\\\\u$2/
+
+.B /([^,]+),([^,]+),([^,]+)/get\\\\u$1\\\\u$2\\\\u$3/
+
+For the parser, serializer, and enumerator categories, the corresponding
+regular expressions are evaluated on local names of elements and on
+enumeration values, respectively. For example, the following predefined
+regular expression is used to transform parsing function names when the
+.B java
+naming convention is selected:
+
+.B /(.+)/parse\\\\u$1/
+
+The const category is used to create C++ constant names for the
+element/wildcard/text content ids in ordered types.
+
+See also the REGEX AND SHELL QUOTING section below.
+
+\"
+\" TYPE MAP
+\"
+.SH TYPE MAP
+Type map files are used in C++/Parser to define a mapping between XML
+Schema and C++ types. The compiler uses this information to determine
+the return types of
+.B post_*
+functions in parser skeletons corresponding to XML Schema types
+as well as argument types for callbacks corresponding to elements
+and attributes of these types.
+
+The compiler has a set of predefined mapping rules that map built-in
+XML Schema types to suitable C++ types (discussed below) and all
+other types to
+.BR void .
+By providing your own type maps you can override these predefined rules.
+The format of the type map file is presented below:
+
+.RS
+.B namespace
+.I schema-namespace
+[
+.I cxx-namespace
+]
+.br
+.B {
+.br
+ (
+.B include
+.IB file-name ;
+)*
+.br
+ ([
+.B type
+]
+.I schema-type cxx-ret-type
+[
+.I cxx-arg-type
+.RB ] ;
+)*
+.br
+.B }
+.br
+.RE
+
+Both
+.I schema-namespace
+and
+.I schema-type
+are regex patterns while
+.IR cxx-namespace ,
+.IR cxx-ret-type ,
+and
+.I cxx-arg-type
+are regex pattern substitutions. All names can be optionally enclosed
+in \fR" "\fR, for example, to include white-spaces.
+
+.I schema-namespace
+determines XML Schema namespace. Optional
+.I cxx-namespace
+is prefixed to every C++ type name in this namespace declaration.
+.I cxx-ret-type
+is a C++ type name that is used as a return type for the
+.B post_*
+functions. Optional
+.I cxx-arg-type
+is an argument type for callback functions corresponding to elements and
+attributes of this type. If
+.I cxx-arg-type
+is not specified, it defaults to
+.I cxx-ret-type
+if
+.I cxx-ret-type
+ends with
+.B *
+or
+.B &
+(that is, it is a pointer or a reference) and
+.B const
+\fIcxx-ret-type\fB&\fR otherwise.
+.I file-name
+is a file name either in the \fR" "\fR or < > format and is added with the
+.B #include
+directive to the generated code.
+
+The \fB#\fR character starts a comment that ends with a new line or end of
+file. To specify a name that contains \fB#\fR enclose it in \fR" "\fR. For
+example:
+
+.RS
+namespace http://www.example.com/xmlns/my my
+.br
+{
+.br
+ include "my.hxx";
+.br
+
+ # Pass apples by value.
+ #
+ apple apple;
+.br
+
+ # Pass oranges as pointers.
+ #
+ orange orange_t*;
+.br
+}
+.br
+.RE
+
+In the example above, for the
+.B http://www.example.com/xmlns/my#orange
+XML Schema type, the
+.B my::orange_t*
+C++ type will be used as both return and argument types.
+
+Several namespace declarations can be specified in a single file.
+The namespace declaration can also be completely omitted to map
+types in a schema without a namespace. For instance:
+
+.RS
+include "my.hxx";
+.br
+apple apple;
+.br
+
+namespace http://www.example.com/xmlns/my
+.br
+{
+.br
+ orange "const orange_t*";
+.br
+}
+.br
+.RE
+
+
+The compiler has a number of predefined mapping rules that can be
+presented as the following map files. The string-based XML Schema
+built-in types are mapped to either
+.B std::string
+or
+.B std::wstring
+depending on the character type selected with the
+.B --char-type
+option
+.RB ( char
+by default).
+
+.RS
+namespace http://www.w3.org/2001/XMLSchema
+.br
+{
+.br
+ boolean bool bool;
+.br
+
+ byte "signed char" "signed char";
+.br
+ unsignedByte "unsigned char" "unsigned char";
+.br
+
+ short short short;
+.br
+ unsignedShort "unsigned short" "unsigned short";
+.br
+
+ int int int;
+.br
+ unsignedInt "unsigned int" "unsigned int";
+.br
+
+ long "long long" "long long";
+.br
+ unsignedLong "unsigned long long" "unsigned long long";
+.br
+
+ integer "long long" "long long";
+.br
+
+ negativeInteger "long long" "long long";
+.br
+ nonPositiveInteger "long long" "long long";
+.br
+
+ positiveInteger "unsigned long long" "unsigned long long";
+.br
+ nonNegativeInteger "unsigned long long" "unsigned long long";
+.br
+
+ float float float;
+.br
+ double double double;
+.br
+ decimal double double;
+.br
+
+ string std::string;
+.br
+ normalizedString std::string;
+.br
+ token std::string;
+.br
+ Name std::string;
+.br
+ NMTOKEN std::string;
+.br
+ NCName std::string;
+.br
+ ID std::string;
+.br
+ IDREF std::string;
+.br
+ language std::string;
+.br
+ anyURI std::string;
+.br
+
+ NMTOKENS xml_schema::string_sequence;
+.br
+ IDREFS xml_schema::string_sequence;
+.br
+
+ QName xml_schema::qname;
+.br
+
+ base64Binary std::auto_ptr<xml_schema::buffer>
+.br
+ std::auto_ptr<xml_schema::buffer>;
+.br
+ hexBinary std::auto_ptr<xml_schema::buffer>
+.br
+ std::auto_ptr<xml_schema::buffer>;
+.br
+
+ date xml_schema::date;
+.br
+ dateTime xml_schema::date_time;
+.br
+ duration xml_schema::duration;
+.br
+ gDay xml_schema::gday;
+.br
+ gMonth xml_schema::gmonth;
+.br
+ gMonthDay xml_schema::gmonth_day;
+.br
+ gYear xml_schema::gyear;
+.br
+ gYearMonth xml_schema::gyear_month;
+.br
+ time xml_schema::time;
+.br
+}
+.br
+.RE
+
+
+The last predefined rule maps anything that wasn't mapped by previous
+rules to
+.BR void :
+
+.RS
+namespace .*
+.br
+{
+.br
+ .* void void;
+.br
+}
+.br
+.RE
+
+When you provide your own type maps with the
+.B --type-map
+option, they are evaluated first. This allows you to selectively override
+predefined rules.
+
+.\"
+.\" REGEX AND SHELL QUOTING
+.\"
+.SH REGEX AND SHELL QUOTING
+When entering a regular expression argument in the shell command line
+it is often necessary to use quoting (enclosing the argument in " "
+or ' ') in order to prevent the shell from interpreting certain
+characters, for example, spaces as argument separators and $ as
+variable expansions.
+
+Unfortunately it is hard to achieve this in a manner that is portable
+across POSIX shells, such as those found on GNU/Linux and UNIX, and
+Windows shell. For example, if you use " " for quoting you will get
+a wrong result with POSIX shells if your expression contains $. The
+standard way of dealing with this on POSIX systems is to use ' '
+instead. Unfortunately, Windows shell does not remove ' ' from
+arguments when they are passed to applications. As a result you may
+have to use ' ' for POSIX and " " for Windows ($ is not treated as
+a special character on Windows).
+
+Alternatively, you can save regular expression options into a file,
+one option per line, and use this file with the
+.B --options-file
+option. With this approach you don't need to worry about shell quoting.
+
+.\"
+.\" DIAGNOSTICS
+.\"
+.SH DIAGNOSTICS
+If the input file is not a valid W3C XML Schema definition,
+.B xsd
+will issue diagnostic messages to
+.B STDERR
+and exit with non-zero exit code.
+.SH BUGS
+Send bug reports to the xsd-users@codesynthesis.com mailing list.
+.SH COPYRIGHT
+Copyright (c) 2005-2014 Code Synthesis Tools CC.
+
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License,
+version 1.2; with no Invariant Sections, no Front-Cover Texts and
+no Back-Cover Texts. Copy of the license can be obtained from
+http://codesynthesis.com/licenses/fdl-1.2.txt