<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns="http://netconfcentral.org/ns/yuma-app-common"
  targetNamespace="http://netconfcentral.org/ns/yuma-app-common"
  elementFormDefault="qualified" attributeFormDefault="unqualified"
  xml:lang="en" version="2011-10-06"
  xmlns:ncx="http://netconfcentral.org/ns/yuma-ncx"
  xmlns:yt="http://netconfcentral.org/ns/yuma-types">
  <xs:annotation>
    <xs:documentation>Converted from YANG file 'yuma-app-common.yang' by yangdump version 2.2.1737
      
      Module: yuma-app-common
      Organization: Netconf Central
      Version: 2011-10-06
      Contact: Andy Bierman &lt;andy at netconfcentral.org&gt;</xs:documentation>
    <xs:documentation>Common CLI parameters used in all yuma applications.</xs:documentation>
    <xs:appinfo>
      <ncx:source>/usr/share/yuma/modules/netconfcentral/yuma-app-common.yang</ncx:source>
      <ncx:organization>Netconf Central</ncx:organization>
      <ncx:contact>Andy Bierman &lt;andy at netconfcentral.org&gt;</ncx:contact>
    </xs:appinfo>
    <xs:appinfo>
      <ncx:revision>
        <ncx:version>2011-10-06</ncx:version>
        <ncx:description>Add HomeParm grouping.
          Split CommonFeatureParms from NcxAppCommon grouping.</ncx:description>
      </ncx:revision>
      <ncx:revision>
        <ncx:version>2011-04-24</ncx:version>
        <ncx:description>Remove empty featureParms grouping.
          Add ProtocolsParm grouping.</ncx:description>
      </ncx:revision>
      <ncx:revision>
        <ncx:version>2011-01-28</ncx:version>
        <ncx:description>Add OutputParm grouping</ncx:description>
      </ncx:revision>
      <ncx:revision>
        <ncx:version>2010-12-18</ncx:version>
        <ncx:description>Change warn-linelen default value to 0 to turn it off</ncx:description>
      </ncx:revision>
      <ncx:revision>
        <ncx:version>2010-01-25</ncx:version>
        <ncx:description>Allow revision date in module parm for 0.10 release.</ncx:description>
      </ncx:revision>
      <ncx:revision>
        <ncx:version>2010-01-14</ncx:version>
        <ncx:description>Initial version for 0.9.9 release.</ncx:description>
      </ncx:revision>
    </xs:appinfo>
  </xs:annotation>
  <xs:simpleType name="CliWithDefaultsType">
    <xs:annotation>
      <xs:documentation>Add 'none' to standard enumerations</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="none">
        <xs:annotation>
          <xs:appinfo>
            <ncx:value>0</ncx:value>
          </xs:appinfo>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="report-all">
        <xs:annotation>
          <xs:appinfo>
            <ncx:value>1</ncx:value>
          </xs:appinfo>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="report-all-tagged">
        <xs:annotation>
          <xs:appinfo>
            <ncx:value>2</ncx:value>
          </xs:appinfo>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="trim">
        <xs:annotation>
          <xs:appinfo>
            <ncx:value>3</ncx:value>
          </xs:appinfo>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="explicit">
        <xs:annotation>
          <xs:appinfo>
            <ncx:value>4</ncx:value>
          </xs:appinfo>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:group name="CliWithDefaultsParm">
    <xs:sequence>
      <xs:element name="with-defaults" type="CliWithDefaultsType"
        minOccurs="0"/>
    </xs:sequence>
  </xs:group>
  <xs:group name="HelpMode">
    <xs:sequence>
      <xs:choice>
        <xs:annotation>
          <xs:appinfo>
            <ncx:choice-name>help-mode</ncx:choice-name>
          </xs:appinfo>
        </xs:annotation>
        <xs:sequence>
          <xs:annotation>
            <xs:appinfo>
              <ncx:case-name>brief</ncx:case-name>
            </xs:appinfo>
          </xs:annotation>
          <xs:element name="brief" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Show brief help text</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:any minOccurs="0" maxOccurs="unbounded"
            namespace="##other" processContents="lax"/>
        </xs:sequence>
        <xs:sequence>
          <xs:annotation>
            <xs:appinfo>
              <ncx:case-name>normal</ncx:case-name>
            </xs:appinfo>
          </xs:annotation>
          <xs:element name="normal" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Show normal help text</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:any minOccurs="0" maxOccurs="unbounded"
            namespace="##other" processContents="lax"/>
        </xs:sequence>
        <xs:sequence>
          <xs:annotation>
            <xs:appinfo>
              <ncx:case-name>full</ncx:case-name>
            </xs:appinfo>
          </xs:annotation>
          <xs:element name="full" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Show full help text</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:any minOccurs="0" maxOccurs="unbounded"
            namespace="##other" processContents="lax"/>
        </xs:sequence>
        <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other"
          processContents="lax"/>
      </xs:choice>
    </xs:sequence>
  </xs:group>
  <xs:group name="IndentParm">
    <xs:sequence>
      <xs:element name="indent" type="yt:IndentType" default="2"
        minOccurs="0">
        <xs:annotation>
          <xs:documentation>Number of spaces to indent (0..9) in formatted output.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:group>
  <xs:group name="DatapathParm">
    <xs:sequence>
      <xs:element name="datapath" type="yt:NcPathList" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Internal file search path for config files.
            Overrides the YUMA_DATAPATH environment variable.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:group>
  <xs:group name="RunpathParm">
    <xs:sequence>
      <xs:element name="runpath" type="yt:NcPathList" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Internal file search path for executable modules.
            Overrides the YUMA_RUNPATH environment variable.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:group>
  <xs:group name="NcxAppCommon">
    <xs:sequence>
      <xs:element name="config" type="xs:string" minOccurs="0">
        <xs:annotation>
          <xs:documentation>The name of the configuration file to use.
            Any parameter except this one can be set in the config file.
            The default config file will be not be checked if this
            parameter is present.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="help" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Print program help file and exit.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:choice>
        <xs:annotation>
          <xs:appinfo>
            <ncx:choice-name>help-mode</ncx:choice-name>
            <ncx:config>true</ncx:config>
          </xs:appinfo>
        </xs:annotation>
        <xs:sequence>
          <xs:annotation>
            <xs:appinfo>
              <ncx:case-name>brief</ncx:case-name>
            </xs:appinfo>
          </xs:annotation>
          <xs:element name="brief" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Show brief help text</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:any minOccurs="0" maxOccurs="unbounded"
            namespace="##other" processContents="lax"/>
        </xs:sequence>
        <xs:sequence>
          <xs:annotation>
            <xs:appinfo>
              <ncx:case-name>normal</ncx:case-name>
            </xs:appinfo>
          </xs:annotation>
          <xs:element name="normal" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Show normal help text</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:any minOccurs="0" maxOccurs="unbounded"
            namespace="##other" processContents="lax"/>
        </xs:sequence>
        <xs:sequence>
          <xs:annotation>
            <xs:appinfo>
              <ncx:case-name>full</ncx:case-name>
            </xs:appinfo>
          </xs:annotation>
          <xs:element name="full" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Show full help text</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:any minOccurs="0" maxOccurs="unbounded"
            namespace="##other" processContents="lax"/>
        </xs:sequence>
        <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other"
          processContents="lax"/>
      </xs:choice>
      <xs:element name="indent" type="yt:IndentType" default="2"
        minOccurs="0">
        <xs:annotation>
          <xs:documentation>Number of spaces to indent (0..9) in formatted output.</xs:documentation>
          <xs:appinfo>
            <ncx:config>true</ncx:config>
          </xs:appinfo>
        </xs:annotation>
      </xs:element>
      <xs:element name="log" type="xs:string" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Filespec for the log file to use instead of STDOUT.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="log-append" minOccurs="0">
        <xs:annotation>
          <xs:documentation>If present, the log will be appended not over-written.
            If not, the log will be over-written.
            Only meaningful if the 'log' parameter is
            also present.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="log-level" type="yt:NcDebugType" default="info"
        minOccurs="0">
        <xs:annotation>
          <xs:documentation>Sets the debug logging level for the program.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="modpath" type="yt:NcPathList" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Directory search path for YANG or YIN modules.
            Overrides the YUMA_MODPATH environment variable.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="version" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Print program version string and exit.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="warn-idlen" default="64" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Control whether identifier length warnings will be
            generated.  The value zero disables all identifier
            length checking.  If non-zero, then a warning will
            be generated if an identifier is defined which
            has a length is greater than this amount.</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:union>
            <xs:simpleType>
              <xs:restriction base="xs:unsignedInt">
                <xs:maxInclusive value="0"/>
              </xs:restriction>
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="xs:unsignedInt">
                <xs:minInclusive value="8"/>
                <xs:maxInclusive value="1023"/>
              </xs:restriction>
            </xs:simpleType>
          </xs:union>
        </xs:simpleType>
      </xs:element>
      <xs:element name="warn-linelen" default="0" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Control whether line length warnings will be
            generated.  The value zero disables all line length
            checking.  If non-zero, then a warning will
            be generated if the line length is greater than
            this amount.  Tab characters are counted as 8 spaces.</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:union>
            <xs:simpleType>
              <xs:restriction base="xs:unsignedInt">
                <xs:maxInclusive value="0"/>
              </xs:restriction>
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="xs:unsignedInt">
                <xs:minInclusive value="40"/>
                <xs:maxInclusive value="4095"/>
              </xs:restriction>
            </xs:simpleType>
          </xs:union>
        </xs:simpleType>
      </xs:element>
      <xs:element name="warn-off" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>Control whether the specified warning number will be
            generated and counted in the warning total for the
            module being parsed.</xs:documentation>
          <xs:appinfo>
            <ncx:ordered-by>system</ncx:ordered-by>
          </xs:appinfo>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:unsignedInt">
            <xs:minInclusive value="400"/>
            <xs:maxInclusive value="899"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="yuma-home" type="xs:string" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Directory for the yuma project root to use.
            If present, this directory location will
            override the 'YUMA_HOME' environment variable,
            if it is present.  If a zero-length string is
            entered, then the YUMA_HOME environment variable
            will be ignored.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:group>
  <xs:group name="CommonFeatureParms">
    <xs:sequence>
      <xs:element name="feature-enable-default" type="xs:boolean"
        default="true" minOccurs="0">
        <xs:annotation>
          <xs:documentation>If true, then features will be enabled by default.
            If false, then features will be disabled by default.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="feature-enable" type="yt:FeatureSpec"
        minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>Identifies a feature which should be considered
            enabled.</xs:documentation>
          <xs:appinfo>
            <ncx:ordered-by>system</ncx:ordered-by>
          </xs:appinfo>
        </xs:annotation>
      </xs:element>
      <xs:element name="feature-disable" type="yt:FeatureSpec"
        minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>Identifies a feature which should be considered
            disabled.</xs:documentation>
          <xs:appinfo>
            <ncx:ordered-by>system</ncx:ordered-by>
          </xs:appinfo>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:group>
  <xs:group name="FeatureCodeParms">
    <xs:sequence>
      <xs:element name="feature-code-default" default="dynamic"
        minOccurs="0">
        <xs:annotation>
          <xs:documentation>The default feature code generation type.</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="static">
              <xs:annotation>
                <xs:documentation>The default behavior for feature behavior
                  is to use statically defined features at
                  compile-time.</xs:documentation>
                <xs:appinfo>
                  <ncx:value>0</ncx:value>
                </xs:appinfo>
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="dynamic">
              <xs:annotation>
                <xs:documentation>The default behavior for feature behavior
                  is to use dynamically defined features at
                  load-time.</xs:documentation>
                <xs:appinfo>
                  <ncx:value>1</ncx:value>
                </xs:appinfo>
              </xs:annotation>
            </xs:enumeration>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="feature-static" type="yt:FeatureSpec"
        minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>Identifies a feature which is configured to be a
            static feature, and therefore set at compile time.</xs:documentation>
          <xs:appinfo>
            <ncx:ordered-by>system</ncx:ordered-by>
          </xs:appinfo>
        </xs:annotation>
      </xs:element>
      <xs:element name="feature-dynamic" type="yt:FeatureSpec"
        minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>Identifies a feature which is configured to be a
            static feature, and therefore set at compile time.</xs:documentation>
          <xs:appinfo>
            <ncx:ordered-by>system</ncx:ordered-by>
          </xs:appinfo>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:group>
  <xs:group name="ModuleParm">
    <xs:sequence>
      <xs:element name="module" type="yt:NcModuleSpec" minOccurs="0"
        maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>YANG source module name to use.</xs:documentation>
          <xs:appinfo>
            <ncx:ordered-by>system</ncx:ordered-by>
          </xs:appinfo>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:group>
  <xs:group name="SubtreeParm">
    <xs:sequence>
      <xs:element name="subtree" type="yt:NcPathSpec" minOccurs="0"
        maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>Path specification of the directory subtree to use.
            All of the YANG source modules contained in the
            specified directory sub-tree will be processed.
            
            Note that symbolic links are not followed
            during the directory traversal.  Only real directories
            will be searched and regular files will be checked as
            modules.  Processing will continue to the next file
            if a module contains errors.
            
            If this string begins with a '~' character,
            then a username is expected to follow or
            a directory separator character.  If it begins
            with a '$' character, then an environment variable
            name is expected to follow.
            
            ~/some/path ==&gt; &lt;my-home-dir&gt;/some/path
            
            ~fred/some/path ==&gt; &lt;fred-home-dir&gt;/some/path
            
            $workdir/some/path ==&gt; &lt;workdir-env-var&gt;/some/path</xs:documentation>
          <xs:appinfo>
            <ncx:ordered-by>system</ncx:ordered-by>
          </xs:appinfo>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:group>
  <xs:group name="DeviationParm">
    <xs:sequence>
      <xs:element name="deviation" type="yt:NcModuleSpec" minOccurs="0"
        maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>YANG deviation file.
            
            This parameter identifies a YANG module that
            should only be checked for deviation statements
            for external modules.  These will be collected
            and applied to the real module(s) being processed.
            
            Deviations are applied as patches to the target module.
            Since they are not identified in the target module at
            all (ala imports), they have to be specified
            explicitly, so they will be correctly processed.
            
            If this string represents a filespec,
            ending with the '.yang' or '.yin' extension,
            then only that file location will be checked.
            
            If this string represents a module name, then
            the module search path will be checked for
            a file with the module name and the '.yang'
            or '.yin' extension.
            
            If this string begins with a '~' character,
            then a username is expected to follow or
            a directory separator character.  If it begins
            with a '$' character, then an environment variable
            name is expected to follow.
            
            ~/some/path ==&gt; &lt;my-home-dir&gt;/some/path
            
            ~fred/some/path ==&gt; &lt;fred-home-dir&gt;/some/path
            
            $workdir/some/path ==&gt; &lt;workdir-env-var&gt;/some/path
            </xs:documentation>
          <xs:appinfo>
            <ncx:ordered-by>system</ncx:ordered-by>
          </xs:appinfo>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:group>
  <xs:group name="SubdirsParm">
    <xs:sequence>
      <xs:element name="subdirs" type="xs:boolean" default="true"
        minOccurs="0">
        <xs:annotation>
          <xs:documentation>If false, the file search paths for modules, scripts,
            and data files will not include sub-directories if they
            exist in the specified path.
            
            If true, then these file search paths will include
            sub-directories, if present.  Any directory name beginning
            with a dot '.' character, or named 'CVS', will be ignored.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:group>
  <xs:group name="OutputParm">
    <xs:sequence>
      <xs:element name="output" type="xs:string" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Output directory or file name to use.
            Default is STDOUT if none specified and the
            'defnames' parameter is also set to 'false'.
            
            For yangdump, if this parameter represents an existing
            directory, then the 'defnames' parameter will be set
            to 'true' by default, and the translation output file(s)
            will be generated in the specified directory.
            
            For yangdump, if this parameter represents a file name,
            then the 'defnames' parameter will be ignored,
            and all translation output will be directed
            to the specified file.
            
            If this string begins with a '~' character,
            then a username is expected to follow or
            a directory separator character.   If it begins
            with a '$' character, then an environment variable
            name is expected to follow.
            
              ~/some/path ==&gt; &lt;my-home-dir&gt;/some/path
            
              ~fred/some/path ==&gt; &lt;fred-home-dir&gt;/some/path
            
              $workdir/some/path ==&gt; &lt;workdir-env-var&gt;/some/path
            
            If this parameter is present, and identifies
            an existing directory, then any translation output
            files will be generated in that directory.  If that
            parameter identifies a file, then that one file will
            be used for output.
            
            For yangdump, if the 'format' parameter is present,
            then one file with the default name will be generated
            for each YANG or YIN file found in the sub-tree.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:group>
  <xs:group name="ProtocolsParm">
    <xs:sequence>
      <xs:element name="protocols" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Specifies which protocol versions the program or session
            will attempt to use. Empty set is not allowed.</xs:documentation>
          <xs:appinfo>
            <ncx:must>
              <ncx:xpath>. != ''</ncx:xpath>
            </ncx:must>
          </xs:appinfo>
        </xs:annotation>
        <xs:simpleType>
          <xs:list>
            <xs:simpleType>
              <xs:restriction base="xs:string">
                <xs:enumeration value="netconf1.0">
                  <xs:annotation>
                    <xs:documentation>RFC 4741 base:1.0</xs:documentation>
                    <xs:appinfo>
                      <ncx:position>0</ncx:position>
                    </xs:appinfo>
                  </xs:annotation>
                </xs:enumeration>
                <xs:enumeration value="netconf1.1">
                  <xs:annotation>
                    <xs:documentation>RFC xxxx base:1.1</xs:documentation>
                    <xs:appinfo>
                      <ncx:position>1</ncx:position>
                    </xs:appinfo>
                  </xs:annotation>
                </xs:enumeration>
              </xs:restriction>
            </xs:simpleType>
          </xs:list>
        </xs:simpleType>
      </xs:element>
    </xs:sequence>
  </xs:group>
  <xs:group name="HomeParm">
    <xs:sequence>
      <xs:element name="home" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Directory specification for the home directory
            to use instead of HOME.</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:minLength value="1"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
    </xs:sequence>
  </xs:group>
</xs:schema>

