module yangdump-pro {

    yang-version 1.1;
    namespace "http://yumaworks.com/ns/yangdump-pro";
    prefix "ydpro";

    import ietf-yang-structure-ext { prefix sx; }

    import yuma-ncx { prefix ncx; }

    import yuma-app-common { prefix ncxapp; }

    import yuma-types { prefix yt; }

    import yumaworks-app-common { prefix ywapp; }

    organization "YumaWorks, Inc.";

    contact
        "Support <support at yumaworks.com>";

    description
       "yangdump-pro provides validation and translation of YANG data
        models. Information about a module or submodule can be
        generated as well.

        INPUT FILES

           Operations can be performed on one or more files with
           the 'module' parameter, or an entire directory tree
           with the 'subtree' parameter.  Unless the 'help' or
           'version' parameters is entered, one of these input
           parameters must be present.

        SEARCH PATH

            When a module name is entered as input, or when a
            module or submodule name is specified in an import or
            include statement within the file, the following search
            algorithm is used to find the file:

            1) file is in the current directory
            2) YUMAPRO_MODPATH environment var (or set by modpath parm)
            3) $HOME/modules directory
            4) $YUMAPRO_HOME/modules directory
            5) $YUMAPRO_INSTALL/modules directory OR
               default install module location,
               '/usr/share/yumapro/modules'

            By default, the entire directory tree for all locations
            (except step 1) will be searched, not just the specified
            directory.  The 'subdirs' parameter can be used to
            prevent sub-directories from being searched.

            Any directory name beginning with a dot character '.'
            will be skipped.  Also, any directory named 'CVS' will
            be skipped in directory searches.

        TRANSLATION MODES

            The 'format' parameter is used to select a translation output mode.
            If it is missing, then no translation will be done.
            This parameter can be used with the module reports parameters,
            but the translation output should be directed to a file
            instead of STDOUT to keep them separated.

            For XSD 1.0 translation, use the 'format=xsd' parameter.

            For XHTML 1.0 translation, use the 'format=html' parameter.

            For YIN translation, use the 'format=yin' parameter.

        MODULE REPORTS

            For a 1 line output of the module name and version,
            use the 'modversion' parameter.

            For a listing of all the symbols that the file exports
            to other files, use the 'exports' parameter.

            For a listing of all the files that the file depends on,
            to compile, use the 'dependencies' parameter.

            For a listing of all the accessible object identifiers that
            the file contains, use the 'identifiers' parameter.

            For a tree listing of all the accessible object identifiers that
            the file contains, use the 'tree-identifiers' parameter.

        OUTPUT MODES

            By default, any translation output will be sent to STDOUT.

            The 'output' parameter can be used to specify the
            full filespec of the output file,  or a
            partial directory specification to be combined
            with a default filename.

            The 'defnames' parameter can be used to generate a default
            filename in the current directory for the output, or
            in the 'output' directory, if one is specified.

            By default, an output filename will have the form:

                  <module-name>.<module-revision>.<ext>

            If the 'versionnames=false' parameter is used, then the
            default filename will have the form:

                  <module-name>.<ext>

            This parameter will also affect URL generation during
            HTML translation.

            When the 'subtree' input parameter is used for XSD or HTML
            translation, the 'defnames' parameter will be automatically
            set to 'true', to maintain well-formed XML documents when
            multiple translations are possible.

            If the 'unified' parameter is set to 'true', then all
            submodules will be processed when the input is a main
            module that includes any submodules.  For XSD and HTML
            translation, the submodule content will be generated
            instead of an 'include' statement.  Submodule files
            will be skipped in 'subtree' mode.

        ERROR LOGGING

            By default, warnings and errors are sent to STDOUT.

            A log file can be specified instead with the 'log' parameter.
            Existing log files can be reused with the 'logappend'
            parameter, otherwise log files are overwritten.

            The logging level can be controlled with the 'log-level'
            parameter.  The default log level is 'info'.  The
            log-levels are additive:

               off:    suppress all errors (not recommended!)
                       A program return code of '1' indicates some error.
               error:  print errors
               warn:   print warnings
               info:   print generally interesting trace info
               debug:  print general debugging trace info
               debug2: print verbose debugging trace info

     Copyright (c) 2010 - 2026 YumaWorks, Inc. All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject
     to the license terms contained in, the BSD 3-Clause License
     http://opensource.org/licenses/BSD-3-Clause";

    revision 2026-02-01 {
      description
        "25.10-5:
          -  Add 'count' to --sid-action
          -  Add 'summary' to --megarange-action
        ";
    }

    revision 2025-12-05 {
      description
        "25.10-4:
          -  Add --sid-list parameter
          -  Add --sid-update-file parameter
          -  Add --sid-extra-range parameter
          -  Add sid-action choice
        ";
    }

    revision 2025-11-24 {
      description
        "25.10-3:
          -  Add --with-yang-metadata CLI parameter.
        ";
    }

    revision 2025-03-12 {
      description
        "24.10T-7:
          -  Add --sid-generate-file parameter
          -  Add --sid-finalize parameter
          -  Add --megarange-file parameter
          -  Add --megarange-action parameter";
    }

    revision 2024-11-09 {
      description
        "24.10-2: Add --warn-off-yang parameter";
    }

    revision 2024-05-21 {
      description
        "23.10T-9: Change defaults for --sil-edit to use EDIT3 callbacks.";
    }

    revision 2024-02-25 {
      description
        "Add sil-edit3 CLI parameters.";
    }

    revision 2023-08-04 {
      description
        "22.10T-11: Change CLI container to sx:structure";
    }

    revision 2021-10-23 {
      description
        "Change defaults for some code generation parameters
         that are now deprecated. Changes start in 21.10-1.
         Add --sil-edit1 and --sil-get1 parameters to preserve
         deprecated behavior with new CLI parameters.";
    }

     revision 2021-05-02 {
       description
         "Add --doxygen-headers parameter.";
    }

     revision 2020-11-14 {
       description
         "Add short-names and force-prefix parameters.";
    }

     revision 2019-09-22 {
       description
         "Add sil-nmda parameter.";
    }

     revision 2018-03-28 {
       description
         "Add lang-errors parameter.";
    }

     revision 2017-06-14 {
       description
         "Add quiet-mode parameter.";
    }

     revision 2017-04-27 {
       description
         "Add with-ocpattern parameter.";
    }

     revision 2015-08-27 {
       description
         "Add sil-get2 and sil-edit2 CLI parameters.";
    }

    revision 2014-05-03 {
       description
         "Add --sil-sa parameter.";
    }

    revision 2013-10-08 {
       description
         "Add --sil-bundle and --sil-include parameters.";
    }

    revision 2012-08-16 {
       description
         "Split out from yangdump.yang.";
    }

    revision 2011-10-08 {
       description
         "Add --home parameter.";
    }

    revision 2011-09-12 {
       description
          "Add --format=uc and --format=uh to support
           generation of separate SIL user functions";
    }

    revision 2011-01-28 {
       description
          "Change output leaf to ncxapp:OutputParm grouping";
    }

    revision 2010-05-31 {
       description
          "Added --stats and --totals parameters
           for YANG statistics reporting.";
    }

    revision 2010-03-11 {
       description
          "Added new format enum for TG2 code generation.";
    }

    revision 2010-01-30 {
       description
          "Initial version for 0.10 release.";
    }

    typedef FormatType {
        description "Conversion Output Formats.";
        type enumeration {
           enum xsd {
              description "Convert YANG to XSD";
           }
           enum sql {
              description
                 "Convert YANG to SQL history collection (TBD)";
           }
           enum sqldb {
              description
                 "Convert YANG to SQL input for netconfcentral.org
                  database.";
           }
           enum html {
              description
                 "Convert YANG to HTML documentation format.";
           }
           enum yang {
              description
                 "Convert YANG to canonical YANG format.";
           }
           enum copy {
              description
                 "Copy and rename the YANG file to canonical name
                  format.";
           }
           enum h {
              description
                 "Generate combined server instrumentation library
                  H file. Compatible with version 1 'h' format";
           }
           enum c {
              description
                 "Generate combined server instrumentation library
                  C file. Compatible with version 1 'c' format";
           }
           enum cpp_test {
              description
                 "Generate combined server instrumentation library
                  CPP file for testing purposes.";
           }
           enum uh {
              description
                 "Generate server instrumentation library
                  user callback H file.";
           }
           enum uc {
              description
                 "Generate server instrumentation library
                  user callback C file.";
           }
           enum yh {
              description
                 "Generate split server instrumentation library
                  user callback H file.";
           }
           enum yc {
              description
                 "Generate server instrumentation library
                  user callback H file.";
           }
           enum yin {
              description
                 "Convert YANG to YIN format.";
           }
           enum tg2 {
              description
                 "Convert YANG to Turbogears 2 Source code files.";
           }
           enum bh {
              description
                 "Generate server instrumentation library
                  bundle callback H file.";
           }
           enum bc {
              description
                 "Generate server instrumentation library
                  bundle callback C file.";
           }

        }
    }

    typedef TocType {
        description
           "Requested table of contents type.";
        type enumeration {
            enum none;
            enum plain;
            enum menu;
        }
        default "menu";
    }

    typedef ObjViewType {
        description
           "Requested view format for objects.";

        type enumeration {
            enum raw {
              description
                 "output includes augment and uses clauses, not the
                  expanded results of those clauses.";
            }
            enum cooked {
               description
                  "output does not include augment or uses clauses,
                   just the objects generated from those clauses (if any).";
            }
        }
       default "raw";
    }

    sx:structure yangdump-pro {
      ncx:cli;
      ncx:default-parm module;

      description
         "CLI Parameter Set for the YANG Converter Application.";

        uses ncxapp:NcxAppCommon;

        uses ncxapp:NewConfigParm;

        uses ncxapp:CommonFeatureParms;

        uses ncxapp:FeatureCodeParms;

        uses ncxapp:HomeParm;

        uses ywapp:YumaproHomeParm;

        uses ncxapp:ModuleParm;

        uses ncxapp:SubtreeParm;

        uses ncxapp:DeviationParm;

        uses ncxapp:OutputParm;

        uses ywapp:OcPatternParm;

        leaf defnames {
          description
            "If 'true', then output to a file with the default name
             for the format, usually to the current directory.
             Not used if the format parameter is missing.

             If the 'output' parameter is present and represents
             an existing directory, then the default filename
             will be created in that directory, instead of the
             current directory.

             If 'false', then default naming will not be used.
             Output will either be to the current directory
             or to STDOUT.";
          type boolean;
          default false;
        }

        leaf doxygen-headers {
          description
            "Controls whether doxygen format headers will be used.

             If 'true' then doxygen comments will be generated
             in the yumapro-sdk program for C and H file generation.

             If 'false' then the older existing  header format
             will be generated in the yumapro-sdk program for
             C and H file generation.";
           type boolean;
           default true;
         }


        leaf force-prefix {
          description
            "If the 'short-names' parameter is 'true' then this
             object can be used to force a specific prefix
             value instead of the module prefix, when generating
             instrumentation code.

             This object should only be used if the module prefix is
             known to cause a naming conflict with existing code.

             This object cannot be used if the 'sil-bundle' parameter
             is also used, and --short-names=true.";
          type yt:NcxName;
        }

        leaf format {
          description
            "Type of conversion desired, if any. If this
             parameter is missing, then no translation
             will be done, but the module will be validated,
             and any requested reports will be generated.

             The following values are supported:
                xsd  == XSD 1.0 translation
                sql == SQL schema (TBD)
                sqldb == netconfcentral.org database info
                html == XHTML 1.0 translation
                yang == Canonical YANG translation
                copy == Validate and copy with a new name.
                h == netconfd instrumentation H file
                c == netconfd instrumentation C file.";
          type FormatType;
        }

        leaf modversion {
          description
             "Validate the file, write the [sub]module
              name, version and source filespec, then exit.";
          type empty;
        }

        leaf exports {
          description
             "Validate the file, write information for the symbols
              that this [sub]module exports, then exit.  Report
              includes the following info for the specific file,
              not the entire module, if submodules are used:
                  - [sub]module name
                  - version
                  - source filespec
                  - namespace (module only)
                  - prefix (module only)
                  - belongs-to (submodule only)
                  - typedefs
                  - groupings
                  - objects, rpcs, notifications
                  - extensions.";
          type empty;
        }

        leaf dependencies {
          description
             "Validate the file, write the module name, version
              and module source for each file that this [sub]module
              imports and includes, then exit.

              Each dependency type, name, version, and source
              is listed once.

              If the dependency version and source are missing,
              then that import or include file was not found.";
          type empty;
        }

        leaf identifiers {
          description
             "Validate the file, write the list of object identifiers,
              that this [sub]module contains, then exit.

              Each accessible object node is listed once,
              including all child nodes.  Notifications and
              RPC methods are considered top-level objects,
              and have object identifiers as well as configuration
              and state data..";
          type empty;
        }

        leaf html-div {
          description
            "If 'true', and HTML translation is requested, then this
             parameter will cause the output to be a single <div> element,
             instead of  an entire HTML file.

             This allows the HTML translation to be easily integrated
             within more complex WEB pages, but the proper CSS definitions
             need to be present for the HTML to render properly.

             The default filename extension will be '.div' instead of '.html'
             if this parameter is present.  The contents will be well-formed
             XHTML 1.0, but without any namespace declarations.

             If 'false', then a complete <html> element will be generated
             instead.";
          type boolean;
          default false;
        }

        leaf html-toc {
          description
            "The HTML Table of Contents output mode.
             Ignored unless the 'format' parameter is
             set to 'html'.  Default is 'menu'.
             Values:
               - none: no ToC generated
               - plain: plain list ToC generated
               - menu: drop-down menu ToC generated.";

          type TocType;
        }

        leaf megarange-action {
          description
            "Specifies the action to perform using the
             megarange-file parameter file.

             The following actions are defined:

             - summary: print a summary of the megarange contents

             - template: generate a megarange.json template file

             - new: generate the data for an initial control file using
               the header information.  Uses 350 SIDs per
               allocation.

             - autonew: Automatically generate the header and data
               an initial control file and SID file set.

             - new-sid: generate all the initial SID files


             The following operations are planned for a future release:

             - update: generate the updated data for an existing
               control file using the header and data information

             - autoupdate: generate the updated data and SID files
               for an existing control file and set of SID files
               using the header and data information.

             - update-sid: generate all the updated SID files
               based on the specified megarange file.";

          type string;
        }

        leaf megarange-file {
          description
            "Specifies a YANG Megarange file for a
             YANG repo. The string contains a filespec for
             the Megarange control file to be used for
             megarange parameter input.";

          type string;
        }

        leaf objview {
          description
             "Determines how objects are generated in HTML and
              YANG outputs.
              The default mode is the 'raw' view.
              XSD output is always 'cooked', since refined groupings
              and locally-scoped definitions are not supported in XSD.

              raw -- output includes augment and uses clauses, not the
                     expanded results of those clauses.

              cooked -- output does not include augment or uses clauses,
                    just the objects generated from those clauses.";

          type ObjViewType;
        }

        leaf quiet-mode {
          description
            "If present, do not print summaries with 0 errors and
             zero warnings. Only print parser summaries if
             warnings or errors are found.

             If not present then parse in the normal mode and print
             parser summaries for these modules.";
          type empty;
        }

        leaf short-names {
          description
            "If 'true', generate instrumentation code using short
             names whenever possible. The module prefix and the
             node name will be used. A numeric qualifier will be
             appended to the name if the short name would cause
             a duplicate symbol to be generated. The 'force-prefix'
             value will be use for the prefix if that parameter is
             present.

             If 'false', then generate instrumentation code using
             long names which encode the module name and the
             entire path to the object into the name.";
          type boolean;
          default true;
        }

        leaf sid-finalize {
          description
            "If present, generate a final published YANG SID file.
             Argument is the same as pyang parameter.

             If missing then an unstable SID file will be generated";
          type empty;
        }

        choice sid-action {
          description
            "Only one SID file action is allowed.";

          leaf sid-generate-file {
            description
              "If present, generate a YANG SID file for a
               YANG module.  Argument is the same as pyang
               parameter.

                The string follows the format:

                 ('count' | range-start:range-size)

               If the string 'count' is used then the number of
               SIDs required will be printed in the output and
               no SID file will be generated. Otherwise a
               range specification is expected.

               If the range starts at 10000 and the
               range size is 50 then the string '10000:50'
               would be used.

               There must be one --module parameter entered
               or the request will be rejected with an error.";

            type string;
          }

          case update {
            leaf sid-update-file {
              mandatory true;
              description
                "If present, update a YANG SID file for a
                 YANG module.

                 The argument has 2 forms

                 1) date string
                 2) filespec including '.sid' filespec

                 There must be one --module parameter entered
                 or the request will be rejected with an error.

                 Example:
                   --sid-update-file=2020-01-01
                   --module=foo@2025-10-10

                   OR

                   --sid-update-file=foo@2020-01-05.sid
                   --module=foo@2025-10-10
                ";
              type union {
                type yt:Date;
                type yt:NcModuleSpec;
              }
            }

            leaf sid-extra-range {
              description
                "Specifies an additional range to use if the
                 last range is filled.  Assigns the range even
                 if not used!

                 The string follows the format:

                 [range-start]:[range-size]

                 If the range starts at 10000 and the
                 range size is 50 then the string 10000:50
                 would be used.";
              type string;
            }
          }   // end case update
        }  // end choice sid-action


        leaf sid-list {
          description
            "If present, print the YANG SID assignments
             to STDOUT before writing the YANG SID file.

             Ignored unless a parameter from the 'sid-action'
             choice is also present.
            ";
          type empty;
        }

        leaf show-errors {
          description
            "If present, list each error or warning
             number and its default message string.
             The program will exit after this is done.";
          type empty;
        }

        leaf lang-errors {
          description
            "If present, list each error or warning
             number and its default message string
             using the language error string format.
             The program will exit after this is done.";
          type empty;
        }

        leaf simurls {
          description
            "If 'true', and HTML translation is requested, then this
             parameter will cause the format of URLs within links
             to be generated in simplified form, for WEB development
             engines such as CherryPy, which support this format.

             Normal URL format (false):
                example.html?parm1=foo&parm2=bar#frag

             Simplified URL format (true):
               example/foo/bar#frag
            ";
          type boolean;
          default false;
        }

        leaf sil-bundle {
          description
            "The name of the SIL bundle to create.  This parameter
             is only used if the format parameter is also used and
             is equal to 'c', 'h', 'yc', or 'yh'.  It is used to
             create SIL code stubs for a bundle of YANG modules.

             All the specified modules will be loaded into memory.
             Then the SIL code stubs will be generated according
             to the given parameters.  Any external augment-stmt
             data will be expanded at this point, so the SIL code
             will be generated for the fully augmented version.";
          type yt:NcxName;
        }

        leaf-list sil-include {
          ordered-by user;
          description
            "The name of an include file to inject into C files
             when the conversion format is equal to 'c' or 'yc'.
             An #include statement will be generated for each
             instance of this parameter, in the order these
             parameters are given.

             The #include statements will be generated after
             the system <include> statement and general
             YumaPro include statements, but before the
             YANG module specific include statements.";
          type string;
        }

        choice sil-edit {
          description "Type of edit callback code generation";
          leaf sil-edit1 {
            description
              "If present, then the deprecated first generation
               'edit' functions will be generated for SIL or SIL-SA modes
               instead of current 2nd generation 'edit' functions,
               if code generation is being requested. Ignored otherwise.
               The EDIT1 callbacks are now deprecated.
               A warning will be generated if this parameter is used
               for code generation.";
            type empty;
            status deprecated;
          }

          leaf sil-edit2 {
            description
              "If present, then the 2nd generation 'edit' functions
               will be generated for SIL or SIL-SA modes
               instead of first generation 'edit' functions,
               if code generation is being requested.
               Ignored otherwise.";
            type empty;
          }

          leaf sil-edit3 {
            description
              "If present, then the 3nd generation 'edit' functions
               will be generated for SIL or SIL-SA modes
               instead of other generation 'edit' functions,
               if code generation is being requested.

               The default is to use this mode so this parameter can
               be omitted.";
            type empty;
          }
        }

        choice sil-get {
          description "Type of get callback code generation";
          leaf sil-get1 {
            description
              "If present, then the first generation 'get' functions
               will be generated for SIL or SIL-SA modes
               instead of second generation 'GET2' functions,
               if code generation is being requested. Ignored otherwise.
               The GET1 callbacks are now deprecated.
               A warning will be generated if this parameter is used
               for code generation.";
            type empty;
            status deprecated;
          }

          leaf sil-get2 {
            description
              "If present, then the 2nd generation 'get' functions
               will be generated for SIL or SIL-SA modes
               instead of first generation 'get' functions,
               if code generation is being requested. Ignored otherwise.

               The GET2 callbacks are now the default.
               This parameter is no longer needed.";
            type empty;
          }
        }

        leaf sil-nmda {
          description
            "If present, then the 2nd generation NMDA 'get' functions
             will be generated for SIL or SIL-SA modes,
             if code generation is being requested. Ignored otherwise.
             The GET2 callbacks will be generated with extra NMDA
             specific code for config=true data nodes. It is an error
             if sil-nmda is selected but sil-get2 is not selected.";
          type empty;
        }

        leaf sil-sa {
          description
            "If present, then SIL-SA (subagent) code will be generated
             instead of SIL (master-agent) code, if code generation
             is being requested. Ignored otherwise.";
          type empty;
        }

        uses ncxapp:SubdirsParm;

        choice stats-report {
          default statistics;
          case statistics {
             leaf stats {
               description
                 "Generate a statistics report for each input
                  module.

                  The following metrics are reported:
                    ...
                  Developers: see ydump/yangstats.h";
               type enumeration {
                  enum none {
                     description
                       "No statistics reporting will be done.";
                  }
                  enum brief {
                     description
                       "Brief statistics reporting will be done:
                          - Complexity score
                          - Total nodes
                       ";
                  }
                  enum basic {
                     description
                       "Basic statistics reporting will be done.";
                  }
                  enum advanced {
                     description
                       "Advanced statistics reporting will be done.";
                  }
                  enum all {
                    description
                      "All possible statistics reporting will be done.";
                  }
               }
               default "none";
             }

             leaf totals {
                description
                   "Controls how stats totals are displayed.";
                type enumeration {
                   enum none {
                     description
                       "No statistics totals will be reported.";
                   }
                   enum summary {
                     description
                       "Summary statistics totals will be
                        reported, based on the stats mode
                        that is requested.";
                   }
                   enum summary-only {
                     description
                       "Only the summary statistics totals
                        will be reported, based on the stats
                        mode that is requested.  This mode
                        will cause all individual module
                        statistics reports to be generated,
                        and a summary for all input modules
                        will be generated instead.";
                   }
                }
                default "none";
             }
          }
        }

        leaf tree-identifiers {
          description
             "Validate the file, write the list of object identifiers,
              in tree format, that this [sub]module contains, then exit.

              Each accessible object node is listed once,
              including all child nodes.  Notifications and
              RPC methods are considered top-level objects,
              and have object identifiers as well as configuration
              and state data..";
          type empty;
        }

        leaf unified {
          description
            "If set to 'true', then submodules will be processed
             within the main module, in a unified report,
             instead of separately, one report for each file.

             For translation purposes, this parameter will cause
             any sub-modules to be treated as if they were defined in
             the main module.  Actual definitions will be generated
             instead of an 'include' directive, for each submodule.

             If this mode is selected, then submodules entered
             with the 'module' parameter will be ignored.

             If 'false', a separate output file is generated for each
             input file, so that XSD output and other reports
             for a main module will not include information for
             submodules.";

          type boolean;
          default false;
        }

        leaf urlstart {
          description
            "If present, then this string will be used to prepend
             to HREF links and URLs generated for SQL and HTML
             translation.  It is expected to be a URL ending
             with a directory path.  The trailing separator '/'
             will be added if it is missing.

             If not present (the default), then relative URLs,
             starting with the file name will be generated instead.

             For example, if this parameter is set to

                'http://example.com/public'

             then the URL generated for the 'bar' type on line 53,
             in the module FOO (version 2008-01-01) would be:

             if versionnames=false:

                'http://example.com/public/FOO.html#bar.53'

             OR

             if versionnames=true (default):

                'http://example.com/public/FOO_2008-01-01.html#bar.53' ";

          type string;
        }

	leaf versionnames {
          description
             "If false, the default filenames will not contain
              the module version string.
              If true, the [sub]module name and version string
              are both used to generate a default file name,
              when the 'defnames' parameter is set to 'true'.";
          type boolean;
          default true;
        }

        uses ywapp:WarnOffYangParm;

        uses ywapp:WithYangMetadataParm;

        leaf xsd-schemaloc {
          description
            "If present, then the schemaLocation attribute will
             be generated during XSD translation.  This will be
             done for the module being processed, and any modules
             that are imported into that module.

             If not present (the default), then the schemaLocation
             attribute is not generated during XSD translation.
             Relative URLs for include and import directives will
             be generated, starting with the file name.

             For example, if this parameter is set to

                'http://example.com/public'

             then the schemaLocation XSD for the module test3
             (version 10-19-2008) would be:

             if versionnames=false:

               xsi:schemaLocation='http://netconfcentral.com/ns/test3
                  http://example.com/public/test3.xsd'

             OR

             if versionnames=true (default):

               xsi:schemaLocation='http://netconfcentral.com/ns/test3
                  http://example.com/public/test3_2008-10-19.xsd'
            ";
          type string;
        }
    }

}
