diff options
author | Jörg Frings-Fürst <debian@jff.email> | 2025-03-19 15:41:36 +0100 |
---|---|---|
committer | Jörg Frings-Fürst <debian@jff.email> | 2025-03-19 15:41:36 +0100 |
commit | 018e1ba581ec6f01f069a45ec4cf89f152b44d5f (patch) | |
tree | 0e7dda4bb693a6714066fbe5efcd2f24ff7c1a65 /doc/pregenerated/xsd.1 | |
parent | 1c188393cd2e271ed2581471b601fb5960777fd8 (diff) |
remerge
Diffstat (limited to 'doc/pregenerated/xsd.1')
-rw-r--r-- | doc/pregenerated/xsd.1 | 1500 |
1 files changed, 0 insertions, 1500 deletions
diff --git a/doc/pregenerated/xsd.1 b/doc/pregenerated/xsd.1 deleted file mode 100644 index 74c9e89..0000000 --- a/doc/pregenerated/xsd.1 +++ /dev/null @@ -1,1500 +0,0 @@ -.\" Process this file with -.\" groff -man -Tascii xsd.1 -.\" -.TH XSD 1 "January 2023" "XSD 4.2.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 -. -.IP "\fB--std\fR \fIversion\fR" -Specify the C++ standard that the generated code should conform to\. Valid -values are \fBc++98\fR, \fBc++11\fR (default), \fBc++14\fR, \fBc++17\fR, -\fBc++20\fR, and \fBc++23\fR\. - -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\fR instead of deprecated \fBstd::auto_ptr\fR\. -Currently, there is no difference between the C++11 and the later standards -modes\. - -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\fR) 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\fR macro for -your entire project\. -.IP "\fB--char-type\fR \fItype\fR" -Generate code using the provided character \fItype\fR instead of the default -\fBchar\fR\. Valid values are \fBchar\fR and \fBwchar_t\fR\. -.IP "\fB--char-encoding\fR \fIenc\fR" -Specify the character encoding that should be used in the generated code\. -Valid values for the \fBchar\fR character type are \fButf8\fR (default), -\fBiso8859-1\fR, \fBlcp\fR (Xerces-C++ local code page), and \fBcustom\fR\. If -you pass \fBcustom\fR 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\fR option)\. - -For the \fBwchar_t\fR character type the only valid value is \fBauto\fR and -the encoding is automatically selected between UTF-16 and UTF-32/UCS-4, -depending on the \fBwchar_t\fR type size\. -.IP "\fB--output-dir\fR \fIdir\fR" -Write generated files to \fIdir\fR instead of the current directory\. -.IP "\fB--generate-inline\fR" -Generate simple functions inline\. This option triggers creation of the inline -file\. -.IP "\fB--generate-xml-schema\fR" -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\fR option to include this file in the generated files -for other schemas\. -.IP "\fB--extern-xml-schema\fR \fIfile\fR" -Include a header file derived from \fIfile\fR 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\fR option to generate this header file\. -.IP "\fB--namespace-map\fR \fIxns\fR=\fIcns\fR" -Map XML Schema namespace \fIxns\fR to C++ namespace \fIcns\fR\. 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\fR - -Will map the \fBhttp://example\.com/foo/bar\fR XML Schema namespace to the -\fBfoo::bar\fR C++ namespace\. -.IP "\fB--namespace-regex\fR \fIregex\fR" -Add \fIregex\fR to the list of regular expressions used to translate XML -Schema namespace names to C++ namespace names\. \fIregex\fR is a Perl-like -regular expression in the form -\fB/\fR\fIpattern\fR\fB/\fR\fIreplacement\fR\fB/\fR\fR\. Any character can be -used as a delimiter instead of '\fB/\fR'\. Escaping of the delimiter character -in \fIpattern\fR or \fIreplacement\fR 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\fR \fInamespace\fR\fR - -For example, if you have file \fBhello\.xsd\fR with namespace -\fBhttp://example\.com/hello\fR and you run \fBxsd\fR on this file, then the -string in question will be: - -\fBhello\.xsd\. http://example\.com/hello\fR - -For the built-in XML Schema namespace the string is: - -\fBXMLSchema\.xsd http://www\.w3\.org/2001/XMLSchema\fR - -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/\fR' are replaced with '\fB::\fR'\. - -3\. The result is verified to be a valid C++ scope name (e\.g\., -\fBfoo::bar\fR)\. 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\fR to C++ namespaces in the form -\fBfoo::bar\fR: - -\fB%\.* http://example\.com/(\.+)%$1%\fR - -See also the REGEX AND SHELL QUOTING section below\. -.IP "\fB--namespace-regex-trace\fR" -Trace the process of applying regular expressions specified with the -\fB--namespace-regex\fR option\. Use this option to find out why your regular -expressions don't do what you expected them to do\. -.IP "\fB--reserved-name\fR \fIn\fR[=\fIr\fR]" -Add name \fIn\fR to the list of names that should not be used as identifiers\. -The name can optionally be followed by \fB=\fR and the replacement name -\fIr\fR that should be used instead\. All the C++ keywords are already in this -list\. -.IP "\fB--include-with-brackets\fR" -Use angle brackets (<>) instead of quotes ("") in generated \fB#include\fR -directives\. -.IP "\fB--include-prefix\fR \fIprefix\fR" -Add \fIprefix\fR to generated \fB#include\fR directive paths\. - -For example, if you had the following import element in your schema - -\fB<import namespace="\.\.\." schemaLocation="base\.xsd"/>\fR - -and compiled this fragment with \fB--include-prefix schemas/\fR, then the -include directive in the generated code would be: - -\fB#include "schemas/base\.hxx"\fR -.IP "\fB--include-regex\fR \fIregex\fR" -Add \fIregex\fR to the list of regular expressions used to transform -\fB#include\fR directive paths\. \fIregex\fR is a Perl-like regular expression -in the form \fB/\fR\fIpattern\fR\fB/\fR\fIreplacement\fR\fB/\fR\fR\. Any -character can be used as a delimiter instead of '\fB/\fR'\. Escaping of the -delimiter character in \fIpattern\fR or \fIreplacement\fR 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\fR to paths in the form \fBgenerated/foo/bar\fR: - -\fB%schemas/(\.+)%generated/$1%\fR - -See also the REGEX AND SHELL QUOTING section below\. -.IP "\fB--include-regex-trace\fR" -Trace the process of applying regular expressions specified with the -\fB--include-regex\fR option\. Use this option to find out why your regular -expressions don't do what you expected them to do\. -.IP "\fB--guard-prefix\fR \fIprefix\fR" -Add \fIprefix\fR 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\fR \fIsuffix\fR" -Use the provided \fIsuffix\fR instead of the default \fB\.hxx\fR 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\fR \fIsuffix\fR" -Use the provided \fIsuffix\fR instead of the default \fB\.ixx\fR to construct -the name of the inline file\. -.IP "\fB--cxx-suffix\fR \fIsuffix\fR" -Use the provided \fIsuffix\fR instead of the default \fB\.cxx\fR to construct -the name of the source file\. -.IP "\fB--fwd-suffix\fR \fIsuffix\fR" -Use the provided \fIsuffix\fR instead of the default \fB-fwd\.hxx\fR to -construct the name of the forward declaration file\. -.IP "\fB--hxx-regex\fR \fIregex\fR" -Use the provided expression to construct the name of the header file\. -\fIregex\fR is a Perl-like regular expression in the form -\fB/\fR\fIpattern\fR\fB/\fR\fIreplacement\fR\fB/\fR\fR\. 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\fR \fIregex\fR" -Use the provided expression to construct the name of the inline file\. -\fIregex\fR is a Perl-like regular expression in the form -\fB/\fR\fIpattern\fR\fB/\fR\fIreplacement\fR\fB/\fR\fR\. See also the REGEX -AND SHELL QUOTING section below\. -.IP "\fB--cxx-regex\fR \fIregex\fR" -Use the provided expression to construct the name of the source file\. -\fIregex\fR is a Perl-like regular expression in the form -\fB/\fR\fIpattern\fR\fB/\fR\fIreplacement\fR\fB/\fR\fR\. See also the REGEX -AND SHELL QUOTING section below\. -.IP "\fB--fwd-regex\fR \fIregex\fR" -Use the provided expression to construct the name of the forward declaration -file\. \fIregex\fR is a Perl-like regular expression in the form -\fB/\fR\fIpattern\fR\fB/\fR\fIreplacement\fR\fB/\fR\fR\. See also the REGEX -AND SHELL QUOTING section below\. -.IP "\fB--hxx-prologue\fR \fItext\fR" -Insert \fItext\fR at the beginning of the header file\. -.IP "\fB--ixx-prologue\fR \fItext\fR" -Insert \fItext\fR at the beginning of the inline file\. -.IP "\fB--cxx-prologue\fR \fItext\fR" -Insert \fItext\fR at the beginning of the source file\. -.IP "\fB--fwd-prologue\fR \fItext\fR" -Insert \fItext\fR at the beginning of the forward declaration file\. -.IP "\fB--prologue\fR \fItext\fR" -Insert \fItext\fR at the beginning of each generated file for which there is -no file-specific prologue\. -.IP "\fB--hxx-epilogue\fR \fItext\fR" -Insert \fItext\fR at the end of the header file\. -.IP "\fB--ixx-epilogue\fR \fItext\fR" -Insert \fItext\fR at the end of the inline file\. -.IP "\fB--cxx-epilogue\fR \fItext\fR" -Insert \fItext\fR at the end of the source file\. -.IP "\fB--fwd-epilogue\fR \fItext\fR" -Insert \fItext\fR at the end of the forward declaration file\. -.IP "\fB--epilogue\fR \fItext\fR" -Insert \fItext\fR at the end of each generated file for which there is no -file-specific epilogue\. -.IP "\fB--hxx-prologue-file\fR \fIfile\fR" -Insert the content of the \fIfile\fR at the beginning of the header file\. -.IP "\fB--ixx-prologue-file\fR \fIfile\fR" -Insert the content of the \fIfile\fR at the beginning of the inline file\. -.IP "\fB--cxx-prologue-file\fR \fIfile\fR" -Insert the content of the \fIfile\fR at the beginning of the source file\. -.IP "\fB--fwd-prologue-file\fR \fIfile\fR" -Insert the content of the \fIfile\fR at the beginning of the forward -declaration file\. -.IP "\fB--prologue-file\fR \fIfile\fR" -Insert the content of the \fIfile\fR at the beginning of each generated file -for which there is no file-specific prologue file\. -.IP "\fB--hxx-epilogue-file\fR \fIfile\fR" -Insert the content of the \fIfile\fR at the end of the header file\. -.IP "\fB--ixx-epilogue-file\fR \fIfile\fR" -Insert the content of the \fIfile\fR at the end of the inline file\. -.IP "\fB--cxx-epilogue-file\fR \fIfile\fR" -Insert the content of the \fIfile\fR at the end of the source file\. -.IP "\fB--fwd-epilogue-file\fR \fIfile\fR" -Insert the content of the \fIfile\fR at the end of the forward declaration -file\. -.IP "\fB--epilogue-file\fR \fIfile\fR" -Insert the content of the \fIfile\fR at the end of each generated file for -which there is no file-specific epilogue file\. -.IP "\fB--export-symbol\fR \fIsymbol\fR" -Insert \fIsymbol\fR in places where DLL export/import control statements -(\fB__declspec(dllexport/dllimport)\fR) are necessary\. -.IP "\fB--export-xml-schema\fR" -Export/import types in the XML Schema namespace using the export symbol -provided with the \fB--export-symbol\fR option\. The \fBXSD_NO_EXPORT\fR 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\fR" -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\fR\. This -option is only valid together with \fB--generate-polymorphic\fR\. The -\fBXSD_NO_EXPORT\fR 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\fR" -Import polymorphism support maps to a Win32 DLL or executable into which this -generated code is linked\. See the \fB--export-maps\fR option documentation -for details\. This options is only valid together with -\fB--generate-polymorphic\fR\. The \fBXSD_NO_EXPORT\fR 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\fR" -Generate \fBmake\fR dependency information\. This option triggers the creation -of the \fB\.d\fR 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\fR to implement automatic dependency tracking\. See also the -\fB--dep-*\fR options\. - -Note also that automatic dependency generation is not supported in the -file-per-type mode (\fB--file-per-type\fR)\. 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*\fR options\. -.IP "\fB--generate-dep-only\fR" -Generate \fBmake\fR dependency information only\. -.IP "\fB--dep-phony\fR" -Generate phony targets for included/imported schema files, causing each to -depend on nothing\. Such dummy rules work around \fBmake\fR errors caused by -the removal of schema files without also updating the dependency file to -match\. -.IP "\fB--dep-target\fR \fItarget\fR" -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\fR \fIsuffix\fR" -Use \fIsuffix\fR instead of the default \fB\.d\fR to construct the name of the -dependency file\. See also \fB--dep-file\fR\. -.IP "\fB--dep-file\fR \fIpath\fR" -Use \fIpath\fR as the generated dependency file path instead of deriving it -from the input file name\. Write the dependency information to \fBstdout\fR if -\fIpath\fR is \fB-\fR\. See also \fB--dep-regex\fR\. -.IP "\fB--dep-regex\fR \fIregex\fR" -Use the provided expression to construct the name of the dependency file\. -\fIregex\fR is a Perl-like regular expression in the form -\fB/\fR\fIpattern\fR\fB/\fR\fIreplacement\fR\fB/\fR\fR\. See also the REGEX -AND SHELL QUOTING section below\. -.IP "\fB--disable-warning\fR \fIwarn\fR" -Disable printing warning with id \fIwarn\fR\. If \fBall\fR is specified for -the warning id then all warnings are disabled\. -.IP "\fB--options-file\fR \fIfile\fR" -Read additional options from \fIfile\fR\. Each option should appearing on a -separate line optionally followed by space and an option value\. Empty lines -and lines starting with \fB#\fR are ignored\. Option values can be enclosed in -double (\fB"\fR) or single (\fB'\fR) 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"'\fR\. 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\fR 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\fR" -Show the number of generated physical source lines of code (SLOC)\. -.IP "\fB--sloc-limit\fR \fInum\fR" -Check that the number of generated physical source lines of code (SLOC) does -not exceed \fInum\fR\. -.IP "\fB--proprietary-license\fR" -Indicate that the generated code is licensed under a proprietary license -instead of the GPL\. -.IP "\fB--custom-literals\fR \fIfile\fR" -Load custom XML string to C++ literal mappings from \fIfile\fR\. 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\fR XML Schema file that -can be found in the documentation directory\. -.IP "\fB--preserve-anonymous\fR" -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\fR" -Show elements and attributes that are of anonymous types\. This option only -makes sense together with the \fB--preserve-anonymous\fR option\. -.IP "\fB--anonymous-regex\fR \fIregex\fR" -Add \fIregex\fR to the list of regular expressions used to derive names for -anonymous types from the enclosing attributes/elements\. \fIregex\fR is a -Perl-like regular expression in the form -\fB/\fR\fIpattern\fR\fB/\fR\fIreplacement\fR\fB/\fR\fR\. Any character can be -used as a delimiter instead of '\fB/\fR'\. Escaping of the delimiter character -in \fIpattern\fR or \fIreplacement\fR 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\fR \fInamespace\fR \fIxpath\fR\fR - -For instance: - -\fBhello\.xsd http://example\.com/hello element\fR - -\fBhello\.xsd http://example\.com/hello type/element\fR - -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%\fR - -See also the REGEX AND SHELL QUOTING section below\. -.IP "\fB--anonymous-regex-trace\fR" -Trace the process of applying regular expressions specified with the -\fB--anonymous-regex\fR option\. Use this option to find out why your regular -expressions don't do what you expected them to do\. -.IP "\fB--location-map\fR \fIol\fR=\fInl\fR" -Map the original schema location \fIol\fR that is specified in the XML Schema -include or import elements to new schema location \fInl\fR\. Repeat this -option to map more than one schema location\. For example, the following -option maps the \fBhttp://example\.com/foo\.xsd\fR URL to the \fBfoo\.xsd\fR -local file\. - -\fB--location-map http://example\.com/foo\.xsd=foo\.xsd\fR -.IP "\fB--location-regex\fR \fIregex\fR" -Add \fIregex\fR to the list of regular expressions used to map schema -locations that are specified in the XML Schema include or import elements\. -\fIregex\fR is a Perl-like regular expression in the form -\fB/\fR\fIpattern\fR\fB/\fR\fIreplacement\fR\fB/\fR\fR\. Any character can be -used as a delimiter instead of '\fB/\fR'\. Escaping of the delimiter character -in \fIpattern\fR or \fIreplacement\fR 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\fR to local files in the form -\fBbar\.xsd\fR: - -\fB%http://\.+/(\.+)%$1%\fR - -See also the REGEX AND SHELL QUOTING section below\. -.IP "\fB--location-regex-trace\fR" -Trace the process of applying regular expressions specified with the -\fB--location-regex\fR 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\fR" -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\fR, -\fB--schema-file-regex\fR, \fB--fat-type-file\fR, and \fB--file-list\fR\. -.IP "\fB--type-file-regex\fR \fIregex\fR" -Add \fIregex\fR to the list of regular expressions used to translate type -names to file names when the \fB--file-per-type\fR option is specified\. -\fIregex\fR is a Perl-like regular expression in the form -\fB/\fR\fIpattern\fR\fB/\fR\fIreplacement\fR\fB/\fR\fR\. Any character can be -used as a delimiter instead of '\fB/\fR'\. Escaping of the delimiter character -in \fIpattern\fR or \fIreplacement\fR 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\fR \fItype-name\fR\fR - -For example, the following expression maps type \fBfoo\fR that is defined in -the \fBhttp://example\.com/bar\fR namespace to file name \fBbar-foo\fR: - -\fB%http://example\.com/(\.+) (\.+)%$1-$2%\fR - -See also the REGEX AND SHELL QUOTING section below\. -.IP "\fB--type-file-regex-trace\fR" -Trace the process of applying regular expressions specified with the -\fB--type-file-regex\fR 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\fR \fIregex\fR" -Add \fIregex\fR to the list of regular expressions used to translate schema -file names when the \fB--file-per-type\fR option is specified\. \fIregex\fR is -a Perl-like regular expression in the form -\fB/\fR\fIpattern\fR\fB/\fR\fIreplacement\fR\fB/\fR\fR\. Any character can be -used as a delimiter instead of '\fB/\fR'\. Escaping of the delimiter character -in \fIpattern\fR or \fIreplacement\fR 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\fR -directive paths as well as the generated C++ file paths\. This option, along -with \fB--type-file-regex\fR 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/\fR subdirectory to the files in the \fBfoo/\fR subdirectory\. -As a result, the \fB#include\fR directive paths for such schemas will be in -the \fBfoo/schema\.hxx\fR form and the generated C++ files will be placed into -the \fBfoo/\fR subdirectory: - -\fB%\.*/foo/1\.0\.0/(\.+)%foo/$1%\fR - -See also the REGEX AND SHELL QUOTING section below\. -.IP "\fB--schema-file-regex-trace\fR" -Trace the process of applying regular expressions specified with the -\fB--schema-file-regex\fR 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\fR" -Generate code corresponding to global elements into type files instead of -schema files when the \fB--type-file-regex\fR 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\fR \fIfile\fR" -Write a list of generated C++ files to \fIfile\fR or to \fBstdout\fR if -\fIfile\fR is \fB-\fR\. This option is primarily useful in the file-per-type -compilation mode (\fB--file-per-type\fR) to create a list of generated C++ -files, for example, as a makefile fragment\. -.IP "\fB--file-list-only\fR" -Only write the list of C++ files that would be generated without actually -generating them\. This option only makes sense together with -\fB--file-list\fR\. -.IP "\fB--file-list-prologue\fR \fItext\fR" -Insert \fItext\fR at the beginning of the file list\. As a convenience, all -occurrences of the \fB\en\fR character sequence in \fItext\fR 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\fR \fItext\fR" -Insert \fItext\fR at the end of the file list\. As a convenience, all -occurrences of the \fB\en\fR character sequence in \fItext\fR are replaced -with new lines\. -.IP "\fB--file-list-delim\fR \fItext\fR" -Delimit file names written to the file list with \fItext\fR instead of new -lines\. As a convenience, all occurrences of the \fB\en\fR character sequence -in \fItext\fR are replaced with new lines\. -.\" -.\" C++/Tree options. -.\" -.SS cxx-tree command options -.IP "\fB--generate-polymorphic\fR" -Generate polymorphism-aware code\. Specify this option if you use substitution -groups or \fBxsi:type\fR\. Use the \fB--polymorphic-type\fR or -\fB--polymorphic-type-all\fR option to specify which type hierarchies are -polymorphic\. -.IP "\fB--polymorphic-type\fR \fItype\fR" -Indicate that \fItype\fR 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\fR\. The \fItype\fR argument is an -XML Schema type name that can be optionally qualified with a namespace in the -\fInamespace\fR\fB#\fR\fIname\fR\fR form\. -.IP "\fB--polymorphic-type-all\fR" -Indicate that all types should be treated as polymorphic\. -.IP "\fB--polymorphic-plate\fR \fInum\fR" -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\fR \fItype\fR" -Indicate that element order in \fItype\fR 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\fR argument is an XML Schema type name that can be optionally -qualified with a namespace in the \fInamespace\fR\fB#\fR\fIname\fR\fR 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\fR" -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\fR" -Automatically treat complex types with mixed content as ordered\. -.IP "\fB--ordered-type-all\fR" -Indicate that element order in all types is significant\. -.IP "\fB--order-container\fR \fItype\fR" -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\fR\. See -\fB--ordered-type\fR 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*\fR options\. -.IP "\fB--generate-serialization\fR" -Generate serialization functions\. Serialization functions convert the object -model back to XML\. -.IP "\fB--generate-ostream\fR" -Generate ostream insertion operators (\fBoperator<<\fR) for generated types\. -This allows one to easily print a fragment or the whole object model for -debugging or logging\. -.IP "\fB--generate-doxygen\fR" -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\fR" -Generate comparison operators (\fBoperator==\fR and \fBoperator!=\fR) for -complex types\. Comparison is performed member-wise\. -.IP "\fB--generate-default-ctor\fR" -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\fR" -Generate constructors that expect an instance of a base type followed by all -required members\. -.IP "\fB--suppress-assignment\fR" -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\fR" -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\fR" -Generate accessors and modifiers as well as parsing and serialization code for -XML Schema wildcards (\fBany\fR and \fBanyAttribute\fR)\. 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\fR" -Extract and store content of the XML Schema \fBanyType\fR 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\fR \fIos\fR" -Generate data representation stream insertion operators for the \fIos\fR -output stream type\. Repeat this option to specify more than one stream type\. -The ACE CDR stream (\fBACE_OutputCDR\fR) and RPC XDR are recognized by the -compiler and the necessary \fB#include\fR directives are automatically -generated\. For custom stream types use the \fB--hxx-prologue*\fR options to -provide the necessary declarations\. -.IP "\fB--generate-extraction\fR \fIis\fR" -Generate data representation stream extraction constructors for the \fIis\fR -input stream type\. Repeat this option to specify more than one stream type\. -The ACE CDR stream (\fBACE_InputCDR\fR) and RPC XDR are recognized by the -compiler and the necessary \fB#include\fR directives are automatically -generated\. For custom stream types use the \fB--hxx-prologue*\fR options to -provide the necessary declarations\. -.IP "\fB--generate-forward\fR" -Generate a separate header file with forward declarations for the types being -generated\. -.IP "\fB--suppress-parsing\fR" -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\fR" -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\fR" -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\fR\. -.IP "\fB--generate-intellisense\fR" -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\fR" -Omit attributes with default and fixed values from serialized XML documents\. -.IP "\fB--type-naming\fR \fIstyle\fR" -Specify the type naming convention that should be used in the generated code\. -Valid styles are \fBknr\fR (default), \fBucc\fR, and \fBjava\fR\. See the -NAMING CONVENTION section below for more information\. -.IP "\fB--function-naming\fR \fIstyle\fR" -Specify the function naming convention that should be used in the generated -code\. Valid styles are \fBknr\fR (default), \fBlcc\fR, \fBucc\fR, and -\fBjava\fR\. See the NAMING CONVENTION section below for more information\. -.IP "\fB--type-regex\fR \fIregex\fR" -Add \fIregex\fR 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\fR \fIregex\fR" -Add \fIregex\fR 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\fR \fIregex\fR" -Add \fIregex\fR 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\fR \fIregex\fR" -Add \fIregex\fR 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\fR \fIregex\fR" -Add \fIregex\fR 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\fR \fIregex\fR" -Add \fIregex\fR 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\fR \fIregex\fR" -Add \fIregex\fR 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\fR \fIregex\fR" -Add \fIregex\fR 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\fR \fIregex\fR" -Add \fIregex\fR 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\fR \fIregex\fR" -Add \fIregex\fR 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\fR \fIregex\fR" -Add \fIregex\fR 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\fR \fIregex\fR" -Add \fIregex\fR 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\fR \fIregex\fR" -Add \fIregex\fR 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\fR \fIregex\fR" -Add \fIregex\fR 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\fR" -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\fR" -Treat only the first global element as a document root\. By default all global -elements are considered document roots\. -.IP "\fB--root-element-last\fR" -Treat only the last global element as a document root\. By default all global -elements are considered document roots\. -.IP "\fB--root-element-all\fR" -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\fR" -Do not treat any global elements as document roots\. By default all global -elements are considered document roots\. -.IP "\fB--root-element\fR \fIelement\fR" -Treat only \fIelement\fR as a document root\. Repeat this option to specify -more than one root element\. -.IP "\fB--custom-type\fR \fImap\fR" -Use a custom C++ type instead of the generated class\. The \fImap\fR argument -is in the form \fIname\fR[\fB=\fR\fItype\fR[\fB/\fR\fIbase\fR]]\fR, where -\fIname\fR is a type name as defined in XML Schema and \fItype\fR is a C++ -type name that should be used instead\. If \fItype\fR 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\fR is specified -then the generated class is still generated but with that name\. -.IP "\fB--custom-type-regex\fR \fIregex\fR" -Use custom C++ types instead of the generated classes\. The \fIregex\fR -argument is in the form -\fB/\fR\fIname-pat\fR\fB/\fR[\fItype-sub\fR\fB/\fR[\fIbase-sub\fR\fB/\fR]]\fR, -where \fIname-pat\fR is a regex pattern that will be matched against type -names as defined in XML Schema and \fItype-sub\fR is a C++ type name -substitution that should be used instead\. If \fItype-sub\fR 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\fR 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\fR \fInum\fR" -Split generated source code into \fInum\fR 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\fR \fIsuffix\fR" -Use \fIsuffix\fR instead of the default '\fB-\fR' to separate the file name -from the part number\. -\" -\" C++/Parser -\" -.SS cxx-parser command options -.IP "\fB--type-map\fR \fImapfile\fR" -Read XML Schema to C++ type mapping information from \fImapfile\fR\. 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\fR\. See the TYPE MAP section below for more -information\. -.IP "\fB--xml-parser\fR \fIparser\fR" -Use \fIparser\fR as the underlying XML parser\. Valid values are \fBxerces\fR -for Xerces-C++ (default) and \fBexpat\fR for Expat\. -.IP "\fB--generate-validation\fR" -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\fR)\. -.IP "\fB--suppress-validation\fR" -Suppress the generation of validation code\. Validation is suppressed by -default when the selected underlying XML parser is validating (\fBxerces\fR)\. -.IP "\fB--generate-polymorphic\fR" -Generate polymorphism-aware code\. Specify this option if you use substitution -groups or \fBxsi:type\fR\. -.IP "\fB--generate-noop-impl\fR" -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\fR this option triggers the -generation of two additional C++ files in the form: \fBname-pimpl\.hxx\fR -(parser implementation header file) and \fBname-pimpl\.cxx\fR (parser -implementation source file)\. -.IP "\fB--generate-print-impl\fR" -Generate a sample parser implementation that prints the XML data to -STDOUT\fR\. For an input file in the form \fBname\.xsd\fR this option triggers -the generation of two additional C++ files in the form: \fBname-pimpl\.hxx\fR -(parser implementation header file) and \fBname-pimpl\.cxx\fR (parser -implementation source file)\. -.IP "\fB--generate-test-driver\fR" -Generate a test driver for the sample parser implementation\. For an input -file in the form \fBname\.xsd\fR this option triggers the generation of an -additional C++ file in the form \fBname-driver\.cxx\fR\. -.IP "\fB--force-overwrite\fR" -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\fR" -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\fR" -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\fR \fIelement\fR" -Indicate that \fIelement\fR is the document root\. This information is used to -generate the test driver for the sample implementation\. -.IP "\fB--skel-type-suffix\fR \fIsuffix\fR" -Use the provided \fIsuffix\fR instead of the default \fB_pskel\fR to construct -the names of the generated parser skeletons\. -.IP "\fB--skel-file-suffix\fR \fIsuffix\fR" -Use the provided \fIsuffix\fR instead of the default \fB-pskel\fR to construct -the names of the generated parser skeleton files\. -.IP "\fB--impl-type-suffix\fR \fIsuffix\fR" -Use the provided \fIsuffix\fR instead of the default \fB_pimpl\fR 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\fR \fIsuffix\fR" -Use the provided \fIsuffix\fR instead of the default \fB-pimpl\fR 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 ucc -value (stands for upper-camel-case) signifies a naming convention where the -first letter of each word 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). The binary XML Schema types are mapped to either -.B std::unique_ptr<xml_schema::buffer> -or -.B std::auto_ptr<xml_schema::buffer> -depending on the C++ standard selected with the -.B --std -option -.RB ( c++11 -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::[unique|auto]_ptr<xml_schema::buffer> -.br - std::[unique|auto]_ptr<xml_schema::buffer>; -.br - hexBinary std::[unique|auto]_ptr<xml_schema::buffer> -.br - std::[unique|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-2023 Code Synthesis. - -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 -https://www.codesynthesis.com/licenses/fdl-1.2.txt |