Template File Syntax (Reference) for Version 6 XML Attribute Files ================================================================== File Layout ----------- All attribute template and instance files must contain the XML element. The following table shows the XML Attributes that can be included in this XML Element. .. list-table:: XML Attributes for Element :widths: 10 40 :header-rows: 1 * - XML Attribute - Description * - Version - Integer value that indicates the SMTK attribute format (Required) Current value is 6 (latest version) * - DisplayHint - Boolean value that indicates if the Attribute Resource should be automatically displayed in an Attribute Editor when loaded into memory. (Optional – default is false which means the Resource will not automatically be displayed) * - TemplateType - A string providing a name for the workflow this attribute describes. (Optional – the default is an empty string.) * - TemplateVersion - An integer describing the version number of the schema for this attribute resource. The default value is 0. This element can contain the following optional children XML Elements: - Includes : used for including additional attribute files (see `Includes Section`_) - AdvanceLevels : used to define various advance access levels used in GUIs (see `Advance Level Section`_) - Categories : used to define workflow specific categories (see `Category Section`_) - Analyses : used to define various analysis groups (see `Analysis Section`_) - Analysis Configurations: predefined analysis configuration from which the user can choose from (see `Analysis Configuration Section`_) - Item Blocks : used to define reusable blocks of Item Definitions(see `Item Blocks Section`_) - Definitions : used to define attribute definitions (see `Definitions Section`_) - Attributes : used to define attributes - Views : used to define various Views (used to create GUIs) Includes Section -------------------- The attribute format supports the ability to include other attribute files. This allows designers to assemble a complete attribute description by referencing attribute files that represent specific aspects. For example a set of attribute definitions may be referenced by several different simulation workflows. Below is an example of including two attribute files both located in a sub-directory IncludeTest. .. code-block:: xml includeTest/b.xml includeTest/a.xml Each include file is contained within a File XML Element. Advance Level Section ------------------------------------- This is an optional section used to describe the various access levels used in GUIs created using SMTK's QT Attribute classes. For example a workflow could consist of the following advance levels: - General - Intermediate - Expert Using the element the following represents the above access levels. .. code-block:: xml 0 1 2 The value of each Level XML Element determines the ordering of the access levels and are used by the items contained within Definitions (see xxx). Notice that in :ref:`the GUI example `, the upper left corner "Show Level" entry is based on the Advance Levels. Advance Level Element Format ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Each advance level is represented by using a XML Element. The value of the element determines the absolute access level and should not be repeated among sibling Level Elements. The higher the value the more "advance" the level. The following table shows the XML Attributes that can be included in this XML Element. .. list-table:: XML Attributes for Element :widths: 10 40 :header-rows: 1 * - XML Attribute - Description * - Label - String value representing the access level name to be displayed in the GUI (Optional - else the label will be the word *Level* followed by the advance level) * - Color - String value representing the color to be used when displaying items that are associated with this access level. The format is "r, g, b" where r, g, and b are a value between 0 and 1 inclusive (Optional) Category Section ---------------- This is an optional section describing the set of categories used within the file. Attribute and Items Definitions can use these categories to define their category constraints. In addition, analyses are defined as sets of categories. For example, the following xml would define the following categories: - Constituent Transport - Heat Transfer - Flow - Time - General .. code-block:: xml Constituent Transport Heat Transfer Flow Time General Each category is contained within a Cat XML Element. The following table shows the XML Attributes that can be included in Element. .. list-table:: XML Attributes for Element :widths: 10 40 :header-rows: 1 * - XML Attribute - Description * - Default - String value representing the default categories a Definition's Item belongs to when no category is specified. Property Section for the Attribute Resource ------------------------------------------- This is an optional section describing a set of properties that should be added to the Attribute Resource. The Property section is defined by a XML **Properties** node which is composed of a set of children **Property** nodes as shown below: .. code-block:: xml 42 3.141 Test string YES You can also look at data/attribute/attribute_collection/propertiesExample.rst and smtk/attribute/testing/cxx/unitXmlReaderProperties.cxx for a sample XML file and test. The following table shows the XML Attributes that can be included in Element. .. list-table:: XML Attributes for Element :widths: 10 40 :header-rows: 1 * - XML Attribute - Description * - Name - String value representing the name of the property to be set. * - Type - String value representing the type of the property to be set. **Note** that the value is case insensitive. The values that the **Type** attribute can be set to are: * int for an integer property * double for a double property * string for a string property * bool for a boolean property The node's value is the value of the property being set. Supported Values for Boolean Properties ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The following are supported values for true: * t * true * yes * 1 The following are supported values for false: * f * false * no * 0 **Note** that boolean values are case insensitive and any surrounding white-space will be ignored. Properties and Include Files ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ If you include an Attribute XML file that also assigns Resource Properties, the include file's Properties are assigned first. Meaning that the file using the include file can override the Properties set by the include file. **Note** - the ability to unset a Property is currently not supported. **Note** - Properties are currently not saved in the XML format, but are saved if using the JSON format. Analysis Section ---------------- This is an optional section that define analyses. An analysis is defined as a resource of categories. For example, using the categories defined in the`Category Section`_, the following XML would define two analyses (Ground Water Flow, and Ground Water with Heat Transfer). .. code-block:: xml Flow General Time Flow General Heat Transfer Time An analysis can be composed of sub-analyses from which the user can choose. By default, the user can select a subset of these sub-analyses as shown below: .. findfigure:: analysisExample1.* :align: center :width: 90% Here you see analysis **B** is composed of 2 optional sub-analyses **B-D** and **B-E**. In this case **B-E** has been selected. An active sub-analysis will add its categories to those of its parent's analysis. The above example could be rewritten using the concept of sub-analyses: .. code-block:: xml Flow General Time Heat Transfer You can also indicate if the user must select only one sub-analysis by indicating that the base analysis is **Exclusive**. In the example below, analysis **C** has been marked **Exclusive** and consists of two sub-analyses **C-D** and **C-E**. The user must select one of these analyses. .. findfigure:: analysisExample2.* :align: center :width: 90% If you wish to have the user exclusively choose among the top level analyses, you can add the Exclusive attribute to the Analyses XML node itself as shown below. .. code-block:: xml A B Please see smtk/data/attribute/attribute_collection/SimpleAnalysisTest.sbt smtk/data/attribute/attribute_collection/analysisConfigurationExample.sbt for complete examples which can be loaded into ModelBuilder. Analysis Element Format ^^^^^^^^^^^^^^^^^^^^^^^ Each Analysis is defined within an XML Tag. The following table shows the XML Attributes that can be included in this XML Element. .. list-table:: XML Attributes for Element :widths: 10 40 :header-rows: 1 * - XML Attribute - Description * - Type - String value representing the type analysis being defined. Note that the type should be unique with respects to all other analyses being defined. (Required) * - BaseType - String value representing the type of the analysis this analysis is a sub-analysis of. (Optional) * - Exclusive - Boolean value indicating the sub-analyses of this analysis are exclusive. (Optional) * - Required - Boolean value indicating the analysis is required and not optional. (Optional) **Note** - Required Analyses can not be sub-analyses of an Analyses with **Exclusive** set to *true*. Each Analysis element contains a set of Cat XML Elements. Analysis Configuration Section ------------------------------ This is an optional section that define analyses configurations. The `Analysis Section`_ describes relationship between analyses, while the configuration section defines various analysis configurations from which the user can choose from. Here is an example configuration section from smtk/data/attribute/attribute_collection/analysisConfigurationExample.sbt: .. code-block:: xml .. list-table:: XML Attributes for Element :widths: 10 40 :header-rows: 1 * - XML Attribute - Description * - AnalysisAttributeType - String value representing the type name for the Attribute Definition used to represent an Analysis Configuration. (Required) The Configuration Element is composed of a set of Config Elements. Each Config Element represents an Analysis Configuration. .. list-table:: XML Attributes for Element :widths: 10 40 :header-rows: 1 * - XML Attribute - Description * - Name - String value representing the configuration's name (which will also be the name of an Analysis Attribute that represents that configuration). (Required) * - AdvanceReadLevel - Integer value representing the configuration's read access level. If the advance level is set below the configuration's AdvanceReadLevel, the configuration will not be displayed to the user. (Optional - default is 0) * - AdvanceWriteLevel - Integer value representing the configuration's write access level. If the advance level is set below the configuration's AdvanceWriteLevel, the user will not be allowed to edit the configuration. (Optional - default is 0) Each Config Element consists of a nested group of Analysis Elements. Each Analysis Element represents an analysis defined in the `Analysis Section`_. Specifying an Analysis indicates that the analysis is active when the configuration is selected. If the analysis is **Exclusive** then it **must** contain an Analysis Element referring to one of its sub-analyses. If it is **not Exclusive** then it can optionally contain multiple Analysis Elements indicating which sub-analyses should be active. .. list-table:: XML Attributes for Element :widths: 10 40 :header-rows: 1 * - XML Attribute - Description * - Type - String value representing an analysis type. Unique Roles Section -------------------- There are use cases where the developer would like to enforce a constraint among ComponentItems such that each item cannot point to the same resource component. In order to provide this functionality, we have introduced the concept of unique roles. Roles in this context refers to the roles defined in the resource links architecture and that are referenced in ReferenceItemDefinition. If the role specified in either a Reference or Component Item Definition is include in this section, it is considered **unique**. Here is an example of an Unique Role Section .. code-block:: xml In this case roles 10 and 0 are considered to be unique. Item Blocks Section --------------------------------- Item Definition Blocks allows the reuse of a group of Item Definitions in different Attribute Definitions. Providing a "hasA" relationship as opposed to the currently supported "isA". These blocks can then be referenced in the "ItemDefinitions" nodes of Attribute or Group Item Definitions or in the "ChildrenDefinitions" nodes for Reference or Value Item Definitions. Blocks themselves can reference other blocks. But care must be taken not to form a recursive relationship. In the parser detects such a pattern it will report an error. When referencing a Block, the items will be inserted relative to where the Block is being referenced. Category constraints are inherited as usual and that Blocks can call other blocks. Here is an example of an Item Block: .. code-block:: xml Solid Mechanics Fluid Flow Heat Transfer Heat Transfer See data/attribute/attribute_collection/ItemBlockTest.sbt and smtk/attribute/testing/cxx/unitItemBlocks.cxx for examples. The Item Block functionality has been extended so that an Item Block can be exported in one file and consumed in another using the **Export** XML attribute. In order to better organize Item Blocks, we have also introduced the concept of a *namespace* that behaves similar to namespaces in C++. A namespace scopes an Item Block and therefore must also be used when referring to an Item Block. **Note** Namespaces are only used w/r Item Blocks and they can not be nested. .. list-table:: XML Attributes for Element :widths: 10 40 :header-rows: 1 :class: smtk-xml-att-table * - XML Attribute - Description * - Namespace - String value representing the default namespace to which all of its Item Blocks belong to. (Optional) **Note** that if not specified SMTK assumes that the default namespace is the global namespace represented by "" .. list-table:: XML Attributes for Element :widths: 10 40 :header-rows: 1 :class: smtk-xml-att-table * - XML Attribute - Description * - Name - String value representing the name of the ItemBlock. (Required) * - Namespace - String value representing the namespace that the Item Block belongs to. (Optional) **Note** If not specified it will use the default namespace specified in the **ItemBlocks** node. * - Export - Boolean indicating that the ItemBlock should be made available to template files that include this one. (Optional) **Note** If not specified SMTK assumes that the value is *false* meaning that the ItemBlock is file-scope only Definitions Section --------------------------------- This is an optional section that defines a set of attribute definitions used to generate attributes with a SMTK-based program. This section is created using the XML Element. See :ref:`the example XML ` for how to create a set of attribute definitions. This element can contain the following children XML Elements: .. list-table:: XML Children Elements for Element :widths: 10 40 :header-rows: 1 * - XML Child Element - Description * - - Defines a new Attribute Definition See `AttDef Element Format`_. * - - Defines a set of Definitions whose Attributes would mutually exclude each other from being associated to the same Resource/Resource Component (Optional). See `Exclusions Format`_. * - - Defines a set of Definitions whose Attributes are required to be associated to a Resource or Resource Component prior to being able to associated Attributes from another Definition to the same Resource or Resource Component (Optional). See `Prerequisites Format`_. AttDef Element Format ^^^^^^^^^^^^^^^^^^^^^ This element define an attribute definition. This element can contain the following children XML Elements: .. list-table:: XML Children Elements for Element :widths: 10 40 :header-rows: 1 * - XML Child Element - Description * - - Specifies the local category constraints specified on the Definition See `CategoryInfo Format`_. * - - Defines the items contained within the attributes generated by this definition (Optional). See `Item Definitions Format`_. * - - Defines the association rules associated with this Definition (Optional). See `AssociationsDef Format`_. * - - Provides a brief description of the definition (Optional). * - - Provides a detailed description of the definition (Optional). The following table shows the XML Attributes that can be included in this XML Element. .. list-table:: XML Attributes for Element :widths: 10 40 :header-rows: 1 :class: smtk-xml-att-table * - XML Attribute - Description * - Type - String value representing the attribute definition type being defined. (Required). Note that this value should be unique with respects to all other definitions being defined with this section as well as all definitions being included via the Includes XML Element (See `Includes Section`_) * - BaseType - String value representing the attribute defintion that this definition is derived from. (Optional) Note that the base definition must be defined prior to this definition either in section or in the Includes Section. * - Label - String value representing the name display in a GUI (Optional) Note that if not specified, the Type value is displayed. * - Version - Integer value representing the "version" of the definition. (Optional) This is used for versioning the definition. If not specified then 0 is assumed. * - Abstract - Boolean value used to indicate if the definition is abstract or not. (Optional) If not specified, the definition is not abstract. Note that abstract definitions can not generate attributes. * - AdvanceLevel - Integer value used to indicate the advance level associated with the definition and the attributes it generates for reading and modifying. (Optional) This value should match one of the advance values defined in the `Advance Level Section`_. If not specified, 0 is assumed. * - AdvanceReadLevel - Integer value used to indicate the advance level associated with the definition and the attributes it generates for reading. (Optional) This value should match one of the advance values defined in the `Advance Level Section`_. If not specified, 0 is assumed. **Note** if the *AdvanceLevel* is also specified, *AdvanceReadLevel* will be ignored. * - AdvanceWriteLevel - Integer value used to indicate the advance level associated with the definition and the attributes it generates for modifying. (Optional) This value should match one of the advance values defined in the `Advance Level Section`_. If not specified, 0 is assumed. **Note** if the *AdvanceLevel* is also specified, *AdvanceWriteLevel* will be ignored. * - Unique - Boolean value used to indicate if the attributes this definition generates are unique with respects to the model entities it associated with. A resource or resource component can only have one unique attribute of a given type associated with it. (Optional) If not specified, the definition is assumed to be non-unique. * - Nodal - Boolean value used to indicate if the attribute effects the nodes of the analysis mesh or the elements. (Optional) If not specified the definition's attributes are not nodal. * - RootName - String value used to auto-generate names for attributes. (Optional) If not specified the definition's type name is used. * - Associations - String value indicating what type of model entities this definition's attributes can be associated on. (Optional) The information is represented as a string consisting of a set of the following characters separated by vertical bars (|): v (vertices) e (edges) f (faces) r (volumetric regions) m (model) g (groups) An example would be "e|f" for an attribute which may be associated with both edges and faces. If not specified, the definition's attributes can not be associated with any model entities. **Note** This is an old format and is only for model resource components. Instead you should be using an **AssociationsDef** XML Element. * - NotApplicationColor - String value representing the color to be used when coloring model entities that are not associated with this definition's attribute. (Optional) The format is "r, g, b" where r, g, and b are a value between 0 and 1 inclusive. If not specified its value is 0, 0, 0. * - Default Color - String value representing the color to be used when coloring model entities that are associated with this definition's attribute by default. (Optional) The format is "r, g, b" where r, g, and b are a value between 0 and 1 inclusive. If not specified its value is 0, 0, 0. CategoryInfo Format ~~~~~~~~~~~~~~~~~~~ This subsection of an AttDef Element describes the local category constants imposed on the Definition. All Item Definitions belonging to this Definition, as well as all Definitions derived from this, will inherit these constraints unless explicitly told not to. The category information is divided into two elements: * - represents the set of categories that will make this Definition relevant * - represents the set of categories that will make this Definition not relevant. The children of these elements include elements whose values are category names. These elements can optionally include an XML attribute called **Combination** which can be set to *Or* or *And*. If set to *And*, all of the categories listed must be active in the owning attribute resource in order for the set to be considered *satisfied*. If *Or* is specified, then only one of the categories need to be active in order for the set to be *satisfied*. The default is *Or*. The CategotyInfo Element itself can have the following XML Attributes: .. list-table:: XML Attributes for Element :widths: 10 40 :header-rows: 1 :class: smtk-xml-att-table * - XML Attribute - Description * - Combination - String value representing how the Inclusion and Exclusion sets should be combined. If set to *And*, then both the Inclusion set must be satisfied and the Exclusion set must not be *satisfied* in order for the Definition (and the Attributes it generates) to be relevant. If it is set to *Or*, then either the Inclusion set is satisfied or the Exclusion set is not, in order for the Definition (and the Attributes it generates) to be relevant. (Optional - Default is *And*) * - InheritanceMode - String value that indicates how the Definition should combine its local category information with the category information inherited from its Base Definition. If set to *And*, then its local category information will be and'd with its Base Definition's. If it is set to *Or*, then its local category information will be or'd with its Base Definition's. If it is set to *LocalOnly*, then the Base Definition's category information will be ignored. (Optional - the default is *And*) AssociationsDef Format ~~~~~~~~~~~~~~~~~~~~~~ The format is an extension of the `Reference Item Based Definitions`_. When dealing with Model Resource Components you can use a **MembershipMask** XML Element to indicate the type of Model Resource Component that can be associated. .. code-block:: xml edge The following table shows the XML Attributes that can be included in this XML Element in addition to those supported by Reference Item Definition. .. list-table:: XML Attributes for Element :widths: 10 40 :header-rows: 1 :class: smtk-xml-att-table * - XML Attribute - Description * - OnlyResources - Boolean value indicating that the association is only to Resources. (Optional). * - - Defines the labels that should be displayed next to the Item's values. This element should only be specified if the Item is either **Extensible** or has **NumberOfRequiredValues** > 1. See `Specifying Labels`_. (Optional) Exclusions Format ^^^^^^^^^^^^^^^^^ Contains a set of Definition exclusion rules. An exclusion rule is a set of Definitions that exclude each other. This means an Attribute from one of these excluded Definition that is associated with a Resource/ Resource Component will prevent attributes from any of the other excluded Definitions from being associated to the same Resource/Resource Component. .. list-table:: XML Children Elements for Element :widths: 10 40 :header-rows: 1 * - XML Child Element - Description * - - Defines a new Exclusion Rule Each exclusion rule is a set of Def XML Elements. Each Def XML Element contains the name of a Definition type. **Note** A rule must contain at least 2 Def Elements. .. list-table:: XML Children Elements for Element :widths: 10 40 :header-rows: 1 * - XML Child Element - Description * - - Contains a Definition Type Here is an example of an Exclusion Rule where Definitions A and B exclude each other: .. code-block:: xml A B Prerequisites Format ^^^^^^^^^^^^^^^^^^^^ Contains a set of Definition prerequisite rules. An prerequisite rule refers to a Definition and a set of prerequisite Definitions. .. list-table:: XML Children Elements for Element :widths: 10 40 :header-rows: 1 * - XML Child Element - Description * - - Defines a new Prerequisite Rule Each Prerequisite rule refers to a Definition that has the prerequisite which is represented as a set of Definitions. .. list-table:: XML Attributes for Element :widths: 10 40 :header-rows: 1 :class: smtk-xml-att-table * - XML Attribute - Description * - Type - String value representing the Definition type that has the prerequisite .. list-table:: XML Children Elements for Element :widths: 10 40 :header-rows: 1 * - XML Child Element - Description * - - Contains a Definition Type Here is an example of an Exclusion Rule where Definition A has a prerequisite requiring that an attribute of Type C must be associated to an object in order to be able to associate an attribute of type A to the same object. .. code-block:: xml C Item Definitions Format ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This subsection of an AttDef Element contains the definitions of all the items to be created within the attributes created by the attribute definition. The section is represented by the XML Element and can contain any of the elements described in the Item Definition Section. Item Definition Section ------------------------ All of the XML Elements described within this section can be added to any of the following elements: * of an attribute definition or Group Item Definition * of a Value Item Definition (, , ) The types of items currently supported include: - Basic Values: Doubles, Integers, and Strings - Groups - Attribute References - Directories and Files - Model Information - Voids All the elements can contain the following children XML Elements. Note that each element may have additional XML Children Elements that are specific to it. This element can contain the following children XML Elements: .. list-table:: Common XML Children Elements for Item Definition Elements :widths: 10 40 :header-rows: 1 * - XML Child Element - Description * - - Specifies the local category constraints specified on the Item Definition. The format is identical to the one used for Attribute Definitions except that the category inheritance mode controls how the Item Definition's local category information is combined with the category information it inherits from either its owning Attribute or Item Definition. (Optional) See `CategoryInfo Format`_. * - - Provides a brief description of the item (Optional). * - - Provides a detailed description of the item (Optional). All of the elements support the following common XML Attributes. Note that each element may have additional XML Attributes that are specific to it. .. list-table:: Common XML Attributes for Item Definition Elements :widths: 10 40 :header-rows: 1 * - XML Attribute - Description * - Name - String value representing the name of the item being defined. (Required) Note that this value should be unique with respects to all other items contained within this attribute definition (including its Base Type). * - Label - String value representing the label that should be displayed in the GUI for the item. (Optional - if not specified the Item's Name will be used) Note if it is set to ' ', this will indicate that no label should be displayed.. * - Version - Integer value representing the "version" of the item. (Optional) This is used for versioning the item. If not specified then 0 is assumed. * - Optional - Boolean value indicating if the item is considered optional or required. (Optional) If not specified the item is considered to be required. * - IsEnabledByDefault - Boolean value indicating if the item is considered to be enabled by default. (Optional) Note this is only used when Optional="true". If not specified, the item is considered to be disabled. * - AdvanceLevel - Integer value used to indicate the advance level associated with the item. (Optional) This value should match one of the advance values defined in the `Advance Level Section`_. If not specified, 0 is assumed. * - AdvanceReadLevel - Integer value used to indicate the advance read level associated with the item. (Optional) This value should match one of the advance values defined in the `Advance Level Section`_. Note that this is ignored if the AdvanceLevel XML Attribute is used. If not specified, 0 is assumed. * - AdvanceWriteLevel - Integer value used to indicate the advance write level associated with the item. (Optional) This value should match one of the advance values defined in the `Advance Level Section`_. Note that this is ignored if the AdvanceLevel XML Attribute is used. If not specified, 0 is assumed. Simple Void Items ^^^^^^^^^^^^^^^^^ A Void Item Definition, represented by a XML Element, is used to represent boolean information. By itself, it contains no additional information beyond what is specified for the information above and its corresponding item *value* rely solely on its *enabled* state. As a result, Void Items are almost always *Optional*. Basic Value Items ^^^^^^^^^^^^^^^^^^ Basic Value Items include Strings, Integers and Doubles. They are represented as follows: .. list-table:: XML Elements for Basic Value Item Definition. :widths: 10 40 :header-rows: 1 * - XML Element - Description * - - Represents an Integer Item Definition * - - Represents a Double Item Definition * - - Represents a String Item Definition .. list-table:: Common XML Attributes for Value Item Definition Elements :widths: 10 40 :header-rows: 1 * - XML Attribute - Description * - NumberOfRequiredValues - Integer value representing the minimum number of values the Item should have. (Optional - if not specified assumed to be 1) * - Extensible - Boolean value indicating that the Item's number of values can be extended past **NumberOfRequiredValues**. (Optional - if not specified assumed to be *false*) * - MaxNumberOfValues - Integer value representing the maximum number of values the Item can have. A value of 0 means there is no maximum limit. (Optional - if not specified assumed to be 0) **Note** - this is only used if **Extensible** is *true*. * - Units - String value representing the units the Item's value(s) are specified in. (Optional - if not specified assumed to be "") .. list-table:: Common XML Children Elements for Basic Value Item Definition Elements :widths: 10 40 :header-rows: 1 * - XML Child Element - Description * - - For Integer, String, and Double items, this element's text contains the default value for the item. This element is not allowed for other ItemDefinition types. See `Specifying Default Values`_. (Optional) * - - Defines a value range for the Item's values. See `Specifying Ranges`_. (Optional - if not specified there is no range constraint.) * - - Defines the labels that should be displayed next to the Item's values. This element should only be specified if the Item is either **Extensible** or has **NumberOfRequiredValues** > 1. See `Specifying Labels`_. (Optional) * - - Indicates that the Item's value(s) can be represented using an expression of the indicated type. (Optional) * - - Indicates that the Item is restricted to a discrete set of values See `Modeling Discrete Information Section`_ (Optional) * - - A set of Item Definitions that are referenced in the Item's element. The contents is identical to an Attribute Definition's element. (Optional) Specifying Default Values ~~~~~~~~~~~~~~~~~~~~~~~~~ For items that are not discrete and not extensible but do have NumberOfRequiredValues greater than 1, it is possible to provide a different default value for each component. In this case, commas are assumed to separate the values. If you wish to use a different separator, specify the "Sep" attribute on the DefaultValue tag. For example, a String item with 3 components might use .. code:: xml Oh, my!:Oh no!:Yes, please. to specify different defaults for each component. You can also use the separator to prevent a default value from having per-component values. For instance, the same String item might use .. code:: xml Commas, they are my style. to force the default value to have a single entry used to initialize all components. Specifying Ranges ~~~~~~~~~~~~~~~~~ The RangeInfo Element can indicate the min and/or max value for the an Item's value(s) as well as indicating if these values are inclusive or exclusive. This element is used for Double or Integer Item Definitions. .. list-table:: XML Children Elements for Elements :widths: 10 40 :header-rows: 1 * - XML Child Element - Description * - - Sets the minimum value for the Item's value(s) (Optional) * - - Sets the maximum value for the Item's value(s) (Optional) .. list-table:: XML Attributes for / Elements :widths: 10 40 :header-rows: 1 * - XML Attribute - Description * - Inclusive - Boolean value indicating if an Item's value can be set to the min / max value. (Optional - if not specified it is assumed to be *false*) In the example below, CommonDouble must be strictly > 0. .. code-block:: xml 3.1415899999999999 0 Specifying Labels ~~~~~~~~~~~~~~~~~ .. list-table:: XML Attributes for Element :widths: 10 40 :header-rows: 1 * - XML Attribute - Description * - CommonLabel - String Value representing the label that should precede each of the Item's values when being displayed (Optional) If each value requires a different label, this element would contain a set of