I've been looking over the DTD version 2.0 Release Candidate 1, applying
it to validation of a dataset.
To do this I've been using emacs nxml-mode, which requires
pre-translation of the DTD to a RELAX-NG schema format. The translation
is performed automatically, but the change in format made a quirk in the
DTD mor obvious. DAVEfunc.dtd does not set a default namespace, but the
included MathML2 DTD does. This can have the effect of competing
namespaces, which will confuse some validating parsers. It has
absolutely no effect on any application of the DTD to data handling.
However, to avoid the problem entirely, I'd like to suggest that
DAVEfunc should be given a default, blank (or otherwise if you like)
namespace, and that this should be allocated before the mathml2 entity
is declared. I have attached a version of the DTD with this change
included. Please consider it.
--
Regards,
Dan Newman
Quantitative Aeronautics Pty Ltd
Email: [EMAIL PROTECTED]
Phone: +61 2 9212 7861
Mobile: +61 4 1229 3035
Fax: +61 2 8915 1531
<?xml version="1.0" encoding="UTF-8"?><!-- =================================================================
Dynamic Aerospace Vehicle Exchange DTD
Function Data Representation
Version: 2.0 Release Candidate 1
This DTD module is identified by these PUBLIC and SYSTEM
identifiers:
PUBLIC "-//NASA//DTD for Flight Dynamic Models - Functions 2.0//EN"
SYSTEM "http://daveml.larc.nasa.gov/DTDs/2p0RC1/DAVEfunc.dtd"
Developed by:
American Institute of Aeronautics and Astronautics (AIAA)
Modeling & Simulation Technical Committee
Simulation Modeling Standards Subcommittee
Contact information:
E. Bruce Jackson <mailto:[EMAIL PROTECTED]>
Bruce L. Hildreth <mailto:[EMAIL PROTECTED]>
<http://daveml.nasa.gov>
Purpose:
Proposed standard for exchanging dynamic models of aerospace
vehicles, including aero, engine, gear, inertia, and control
models.
This preliminary version defines static models typically
associated with aerodynamic subsystem models, but can be used to
describe any non-linear multi-dimensional function.
Status:
In development. Direct comments to above contacts.
================================================================= -->
<!-- =================================================================
Acknowledgements:
Assistance and encouragement by Jon S. Berndt whose JSBsim aero
& control law XML format was original work. Extensive
testing, collaboration, and encouragement from Geoff Brian of
the Australian DSTO, Bill Cleveland at NASA Ames and Brent York,
formerly of NAVAIR, who were the real beta testers. Statistical
encoding was made possible by contributions and suggestions from
J. Dana McMinn of NASA Langley Research Center.
================================================================= -->
<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!-- Level 0 Elements -->
<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!-- =================================================================
Root element is DAVEfunc, composed of a file header element
followed by 1 or more variable definitions and 0 or more break
point definitions, gridded or ungridded table definitions, and
function elements.
================================================================= -->
<!ELEMENT DAVEfunc
(fileHeader, variableDef+, breakpointDef*, griddedTableDef*, ungriddedTableDef*, function*, checkData*)
>
<!ATTLIST DAVEfunc
xmlns CDATA #FIXED ""
>
<!-- =================================================================
Include the MathML2 DTD for any math markup
================================================================= -->
<!ENTITY % mathml2 PUBLIC "-//W3C//DTD MathML 2.0//EN"
"http://www.w3.org/Math/DTD/mathml2/mathml2.dtd">
%mathml2;
<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!-- Level 1 Elements -->
<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!-- =================================================================
The header element requires at least one author, a creation date
and a version indicator; optional content are description,
references and mod records.
================================================================= -->
<!ELEMENT fileHeader
(author+, fileCreationDate, fileVersion?, description?, reference*, modificationRecord*, provenance*)
>
<!ATTLIST fileHeader
name CDATA #IMPLIED
>
<!-- =================================================================
variableDef elements provide wiring information - that is, they
identify the input and output signals used by these function
blocks. They also provide MathML content markup to indicate any
calculation required to arrive at the value of the variable,
using other variables as inputs. The variable definition can
include statistical information regarding the uncertainty of the
values which it might take on, when measured after any
calculation is performed. Information about the reason for
inclusion or change to this element can be included in an
optional provenance subelement.
================================================================= -->
<!ELEMENT variableDef
(description?,
(provenance? | provenanceRef?)
, calculation?, isOutput?, isState?, isStateDeriv?, isStdAIAA?, uncertainty?)
>
<!ATTLIST variableDef
name CDATA #REQUIRED
varID ID #REQUIRED
units CDATA #REQUIRED
axisSystem CDATA #IMPLIED
sign CDATA #IMPLIED
alias CDATA #IMPLIED
symbol CDATA #IMPLIED
initialValue CDATA #IMPLIED
>
<!ELEMENT variableRef EMPTY>
<!ATTLIST variableRef
varID IDREF #REQUIRED
>
<!-- =================================================================
A breakpointDef is where gridded table breakpoints are given.
Since these are separate from function data, may be reused.
================================================================= -->
<!ELEMENT breakpointDef
(description?, bpVals)
>
<!ATTLIST breakpointDef
name CDATA #IMPLIED
bpID ID #REQUIRED
units CDATA #IMPLIED
>
<!-- =================================================================
bpVals is a set of breakpoints; that is, a set of independent
variable values associated with one dimension of a gridded table
of data. An example would be the Mach or angle-of-attack values
that define the coordinates of each data point in a
two-dimensional coefficient value table.
================================================================= -->
<!ELEMENT bpVals (#PCDATA)>
<!-- =================================================================
A griddedTableDef contains points arranged in an orthogonal (but
multi-dimensional) array, where the independent variables are
defined by separate breakpoint vectors. This table definition
is specified separately from the actual function declaration and
requires an XML identifier attribute so that it may be used by
multiple functions. The table data point values are specified
as comma-separated values in floating-point notation
(0.93638E-06) in a single long sequence as if the table had been
unraveled with the last-specified dimension changing most
rapidly. Line breaks are to be ignored. Comments may be
embedded in the table to promote [human] readability.
================================================================= -->
<!ELEMENT griddedTableDef
(description?,
(provenance? | provenanceRef?)
, breakpointRefs, uncertainty?, dataTable)
>
<!ATTLIST griddedTableDef
name CDATA #IMPLIED
gtID ID #IMPLIED
units CDATA #IMPLIED
>
<!-- =================================================================
An ungriddedTableDef contains points that are not in an
orthogonal grid pattern; thus, the independent variable
coordinates are specified for each dependent variable value.
This table definition is specified separately from the actual
function declaration and requires an XML identifier attribute so
that it may be used by multiple functions.
================================================================= -->
<!ELEMENT ungriddedTableDef
(description?,
(provenance? | provenanceRef?)
, uncertainty?, dataPoint+)
>
<!ATTLIST ungriddedTableDef
name CDATA #IMPLIED
utID ID #IMPLIED
units CDATA #IMPLIED
>
<!-- =================================================================
Each function has optional description, optional provenance, and
either a simple input/output values or references to more
complete (possible multiple) input, output, and function data
elements.
================================================================= -->
<!ELEMENT function
(description?,
(provenance? | provenanceRef?)
,
(
(independentVarPts+, dependentVarPts)
|
(independentVarRef+, dependentVarRef, functionDefn)
)
)
>
<!ATTLIST function
name CDATA #REQUIRED
>
<!-- =================================================================
This top-level element is the placeholder for verification data of various forms. It will
include static check cases, trim shots, and dynamic check case
information. The checkData element may contain information about
the history of the checkData information.
================================================================= -->
<!ELEMENT checkData
(
(provenance? | provenanceRef?)
, staticShot*)
>
<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!-- Level 2 Elements -->
<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!-- =================================================================
author includes alternate means of identifying author using
XNS or normal e-mail/address. The address subelement is to be replaced
with the more complete contactInfo subelement.
================================================================= -->
<!ELEMENT author
(address* | contactInfo*)
>
<!ATTLIST author
name CDATA #REQUIRED
org CDATA #REQUIRED
xns CDATA #IMPLIED
email CDATA #IMPLIED
>
<!-- =================================================================
fileCreationDate is simply a string with a date in it. We
follow ISO 8601 and use dates like "2004-01-02" to refer to
January 2, 2004.
================================================================= -->
<!ELEMENT fileCreationDate EMPTY>
<!ATTLIST fileCreationDate
date CDATA #REQUIRED
>
<!-- =================================================================
This is a string describing, in some arbitrary text, the version
identifier for this function description.
================================================================= -->
<!ELEMENT fileVersion (#PCDATA)>
<!-- =================================================================
optional description is free-form text describing something.
================================================================= -->
<!ELEMENT description (#PCDATA)>
<!-- =================================================================
Optional isOutput element signals a variable that should be
forced to be an output, even if it is used as an input
elsewhere. Otherwise, using program should assume a signal
defined with no calculation is an input; a signal defined with a
calculation but not used elsewhere is an output; and a signal
defined as a calculation and used subsequently in the model is
an internal signal.
================================================================= -->
<!ELEMENT isOutput EMPTY>
<!-- =================================================================
Option isState element identifies this variable as a state
variable in a dynamic model; this tells the implementation that
this is the output of an integrator (for continous models) or a
discretely updated state (for discrete models).
================================================================= -->
<!ELEMENT isState EMPTY>
<!-- =================================================================
Option isStateDeriv element identifies this variable as a state
derivative variable in a dynamic model; this tells the
implementation that this is the output of an integrator (for
continous models only).
================================================================= -->
<!ELEMENT isStateDeriv EMPTY>
<!-- =================================================================
Optional isStdAIAA element identifies this variable is one of
the [draft] standard AIAA variable names which should be
recognizable exterior to this module,
e.g. AngleOfAttack_deg. This flag should assist importing tools
determine when an input or output should match a
facility-provided signal name without requiring further
information.
================================================================= -->
<!ELEMENT isStdAIAA EMPTY>
<!-- =================================================================
Optional calculation element is MathML 2 content markup
describing how the signal is calculated.
================================================================= -->
<!ELEMENT calculation (math)>
<!ATTLIST calculation
xmlns:mathml2 CDATA #FIXED 'http://www.w3.org/TR/MathML2'
>
<!-- =================================================================
A reference element associates an external document with an ID
making use of XLink semantics.
================================================================= -->
<!ELEMENT reference (description?)>
<!ATTLIST reference
xmlns:xlink CDATA #FIXED 'http://www.w3.org/1999/xlink'
xlink:type (simple) #FIXED 'simple'
refID ID #REQUIRED
author CDATA #REQUIRED
title CDATA #REQUIRED
classification CDATA #IMPLIED
accession CDATA #IMPLIED
date CDATA #REQUIRED
xlink:href CDATA #IMPLIED
>
<!-- =================================================================
A modificationRecord associates a single letter (such as
modification "A") with modification author(s), address, and any
optional external reference documents, in keeping with the AIAA
draft standard.
================================================================= -->
<!ELEMENT modificationRecord
(author+, description?, extraDocRef*)
>
<!ATTLIST modificationRecord
modID ID #REQUIRED
date CDATA #REQUIRED
refID IDREF #IMPLIED
>
<!-- =================================================================
A single modification event may have more than one documented
reference. This element can be used in place of the refID
attribute in a modificationRecord to record more than one
refIDs, pointing to the referenced document.
================================================================= -->
<!ELEMENT extraDocRef EMPTY>
<!ATTLIST extraDocRef
refID IDREF #REQUIRED
>
<!-- =================================================================
optional provenance describes history or source of data and
includes author, date, and zero or more references to documents
and modification records.
================================================================= -->
<!ELEMENT provenance
(author+, functionCreationDate, documentRef*, modificationRef*, description?)
>
<!ATTLIST provenance
provID ID #IMPLIED
>
<!-- =================================================================
When the provenance of a set of several data is identical, the
first provenance element may be given a provID and referenced by
later data elements as a space-saving measure.
================================================================= -->
<!ELEMENT provenanceRef EMPTY>
<!ATTLIST provenanceRef
provID IDREF #REQUIRED
>
<!-- =================================================================
An independentVarPts element is a simple list of breakpoints and contains a mandatory varID
identifier as well as optional name, units, and sign convention attributes.
An optional extrapolate attribute describes how to extrapolate the output value when the input
value exceeds specified values (default is 'neither,' meaning the value of the table is held
constant at the nearest defined value). An optional interpolate attribute indicates how to
perform the interpolation within the table (supporting discrete, linear, cubic or quadratic
splines). There are three different discrete options: 'discrete' means nearest-neighbor, with
an exact mid-point value being rounded in the positive direction; 'floor' means the function
takes on the value associated with the next (numerically) higher independent breakpoint as
soon as original value is exceeded, and 'ceiling' means the function holds the value
associated with each breakpoint until the next (numerically) higher breakpoint value is
reached by the independent argument. The default interpolation attribute value is 'linear.'
This element is used for simple functions that don't share breakpoint or table values with
other functions.
================================================================= -->
<!ELEMENT independentVarPts (#PCDATA)>
<!ATTLIST independentVarPts
varID IDREF #REQUIRED
name CDATA #IMPLIED
units CDATA #IMPLIED
sign CDATA #IMPLIED
extrapolate (neither | min | max | both) #IMPLIED
interpolate (discrete | floor | ceiling | linear | quadraticSpline | cubicSpline) #IMPLIED
>
<!-- =================================================================
A dependentVarPts element is a simple of function values and
contains a mandatory varID as well as optional name, units, and
sign convention attributes. Data points are arranged as single
vector with last-specified breakpoint values changing most
frequently. Note that the number of dependent values must equal
the product of the number of independent values for this simple,
gridded, realization. This element is used for simple functions
that don't share breakpoint or table values with other
functions.
================================================================= -->
<!ELEMENT dependentVarPts (#PCDATA)>
<!ATTLIST dependentVarPts
varID IDREF #REQUIRED
name CDATA #IMPLIED
units CDATA #IMPLIED
sign CDATA #IMPLIED
>
<!-- =================================================================
An independentVarRef more fully describes the input mapping of the function by pointing to a
separate breakpoint definition element.
An optional extrapolate attribute describes how to extrapolate the output value when the input
value exceeds specified values (default is 'neither,' meaning the value of the table is held
constant at the nearest defined value). An optional interpolate attribute indicates how to
perform the interpolation within the table (supporting discrete, linear, cubic or quadratic
splines). There are three different discrete options: 'discrete' means nearest-neighbor, with
an exact mid-point value being rounded in the positive direction; 'floor' means the
function takes on the value associated with the next (numerically) higher independent
breakpoint as soon as original value is exceeded, and 'ceiling' means the function
holds the value associated with each breakpoint until the next (numerically) higher breakpoint
value is reached by the independent argument. The default interpolation attribute value is
'linear.'
This element allows reuse of common breakpoint values for many tables, but with possible
differences in interpolation or extrapolation for each use.
================================================================= -->
<!ELEMENT independentVarRef EMPTY>
<!ATTLIST independentVarRef
varID IDREF #REQUIRED
min CDATA #IMPLIED
max CDATA #IMPLIED
extrapolate (neither | min | max | both) #IMPLIED
interpolate (discrete | floor | ceiling | linear | quadraticSpline | cubicSpline) #IMPLIED
>
<!-- =================================================================
A dependentVarRef ties the output of a function to a signal name
defined previously in a variable definition.
================================================================= -->
<!ELEMENT dependentVarRef EMPTY>
<!ATTLIST dependentVarRef
varID IDREF #REQUIRED
>
<!-- =================================================================
A functionDefn defines how function is represented in one of two
possible ways: gridded (implies breakpoints), or ungridded (with
explicit independent values for each point).
================================================================= -->
<!ELEMENT functionDefn
(griddedTableRef | griddedTableDef | griddedTable | ungriddedTableRef | ungriddedTableDef | ungriddedTable)
>
<!ATTLIST functionDefn
name CDATA #IMPLIED
>
<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!-- Level 3 Elements -->
<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!ELEMENT address (#PCDATA)>
<!-- =================================================================
Used to provide contact information about an author. Use
contactInfoType to differentiate what information is being
conveyed, and contactLocation to denote location of the address.
================================================================= -->
<!ELEMENT contactInfo (#PCDATA)>
<!ATTLIST contactInfo
contactInfoType (address | phone | fax | email | iname | web) #IMPLIED
contactLocation (professional | personal | mobile) #IMPLIED
>
<!ELEMENT functionCreationDate EMPTY>
<!ATTLIST functionCreationDate
date CDATA #REQUIRED
>
<!ELEMENT documentRef EMPTY>
<!ATTLIST documentRef
docID IDREF #IMPLIED
refID IDREF #REQUIRED
>
<!ELEMENT modificationRef EMPTY>
<!ATTLIST modificationRef
modID IDREF #REQUIRED
>
<!ELEMENT griddedTableRef EMPTY>
<!ATTLIST griddedTableRef
gtID IDREF #REQUIRED
>
<!ELEMENT griddedTable
(breakpointRefs, confidenceBound?, dataTable)
>
<!ATTLIST griddedTable
name CDATA #IMPLIED
>
<!ELEMENT ungriddedTableRef EMPTY>
<!ATTLIST ungriddedTableRef
utID IDREF #REQUIRED
>
<!ELEMENT ungriddedTable
(confidenceBound?, dataPoint+)
>
<!ATTLIST ungriddedTable
name CDATA #IMPLIED
>
<!-- =================================================================
Contains a description of the inputs and outputs, and possibly internal values, of a DAVE-ML
model in a particular instant of time.
================================================================= -->
<!ELEMENT staticShot
(checkInputs, internalValues?, checkOutputs)
>
<!ATTLIST staticShot
name CDATA #REQUIRED
refID IDREF #IMPLIED
>
<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!-- Level 4 Elements -->
<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!-- =================================================================
The breakpointRefs elements tie the independent variable names
for the function to specific breakpoint values defined earlier.
================================================================= -->
<!ELEMENT breakpointRefs (bpRef+)>
<!-- =================================================================
The confidenceBound element is used to declare the confidence
interval associated with the data table. This is a placeholder
and will be removed in a future version of DAVE-ML.
================================================================= -->
<!ELEMENT confidenceBound EMPTY>
<!ATTLIST confidenceBound
value CDATA #REQUIRED
>
<!-- =================================================================
This optional element is used in function and parameter
definitions to describe statistical variance in the possible
value of that function or parameter value. Only Gaussian
(normal) or uniform distributions of continuous random variable
distribution functions are supported.
================================================================= -->
<!ELEMENT uncertainty
(normalPDF | uniformPDF)
>
<!ATTLIST uncertainty
effect (additive | multiplicative | percentage | absolute) #REQUIRED
>
<!-- =================================================================
The dataTable element is used by gridded tables where the indep.
variable values are implied by breakpoint sets. Thus, the data
embedded between the dataTable element tags is expected to be
sorted ASCII values of the gridded table, wherein the last
independent variable listed in the function header varies most
rapidly. Values are comma or whitespace separated values.
A dataTable element can also be used in an uncertainty element
to provide duplicate uncertainty bound values.
================================================================= -->
<!ELEMENT dataTable (#PCDATA)>
<!-- =================================================================
The dataPoint element is used by ungridded tables to list the
values of independent variables that are associated with each
value of dependent variable. For example:
<dataPoint>
0.1, -4.0, 0.2 <!- Mach, alpha, CL ->
</dataPoint>
<dataPoint>
0.1, 0.0, 0.6 <!- Mach, alpha CL ->
</dataPoint>
Each data point may have associated with it a modification tag
to document the genesis of that particular point. No
requirement on ordering of independent variables is implied.
Since this is a ungridded table, the intepreting application is
required to handle what may be unsorted data.
================================================================= -->
<!ELEMENT dataPoint (#PCDATA)>
<!ATTLIST dataPoint
modID IDREF #IMPLIED
>
<!-- =================================================================
Specifies the contents of the input vector for the given check case.
================================================================= -->
<!ELEMENT checkInputs (signal+)>
<!-- =================================================================
Provides a set of all internal variable values to assist in debugging recalcitrant
implementations of DAVE-ML import tools.
================================================================= -->
<!ELEMENT internalValues (signal+)>
<!-- =================================================================
Specifies the contents of the output vector for the given check case.
================================================================= -->
<!ELEMENT checkOutputs (signal+)>
<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!-- Level 5 Elements -->
<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!-- =================================================================
The bpRef element provides references to breakpoint lists so
breakpoints can be defined separately from, and reused by,
several data tables.
================================================================= -->
<!ELEMENT bpRef EMPTY>
<!ATTLIST bpRef
bpID IDREF #REQUIRED
>
<!-- =================================================================
In a normally distributed random variable, a symmetrical
distribution of given standard deviation is assumed about the
nominal value (which is given elsewhere in the parent element).
The correlatesWith subelement references other functions or
variables that have a linear correlation to the current
parameter or function. The correlation subelement specifies the
correlation coefficient and references the other function or
variable whose random value helps determine the value of this
parameter.
================================================================= -->
<!ELEMENT normalPDF
(bounds, correlatesWith*, correlation*)
>
<!ATTLIST normalPDF
numSigmas CDATA #REQUIRED
>
<!-- =================================================================
In a uniformly distributed random variable, the value of the
parameter has equal likelihood of assuming any value within the
(possibly asymmetric) bounds, which must bracket the nominal
value (which is given elsewhere in the parent element).
================================================================= -->
<!ELEMENT uniformPDF (bounds+)>
<!ATTLIST uniformPDF
symmetric (yes | no) #REQUIRED
>
<!-- =================================================================
This element contains some description of the statistical limits
to the values the citing parameter element might take on. This
can be in the form of a scalar value, a[n] [un]griddedTableRef
reference to an existing table definition, or a private
[un]griddedTableDef, or a private table. In the case of formal
table references or definitions, these tables define their own
dependency, independent of the underlying random variable (whose
nominal value is probably specified in a parent table
definition). In the more common instance, this element will
either be a scalar constant value or a simple table, whose
dimensions must match the parent nominal function table and
whose independent variables are identical to the nominal
table. It is also possible that this limit be determined by an
independent variable.
================================================================= -->
<!ELEMENT bounds
(#PCDATA | dataTable | variableDef | variableRef)*
>
<!-- =================================================================
When present, this element indicates the parent function or
variable is correlated with the referenced other function or
variable in a linear sense. This alerts the application that
the random number used to calculate this function or variable's
immediate value will be used to calculate another function of
variable's value.
================================================================= -->
<!ELEMENT correlatesWith EMPTY>
<!ATTLIST correlatesWith
varID IDREF #REQUIRED
>
<!-- =================================================================
When present, this element indicates the parent function or
variable is correlated with the referenced other function or
variable in a linear sense, and gives the correlation
coefficient for determining this function's random value based
upon the correlating function(s) random value.
================================================================= -->
<!ELEMENT correlation EMPTY>
<!ATTLIST correlation
varID IDREF #REQUIRED
corrCoef CDATA #REQUIRED
>
<!-- =================================================================
This element is used to document the name, ID, value, tolerance, and units of measure for
checkcases. When used with checkInputs or checkOutputs, the signalName subelement must be
present (since check cases are viewed from "outside" the model); when used in an
internalValues element, the signalID subelement should be used to identify the signal by ID
(which is the model-unique internal reference for each signal). When used in a checkOutputs
vector, the tol element must be present.
================================================================= -->
<!ELEMENT signal
(
(
(signalName, signalUnits?)
|
(signalID)
)
, signalValue, tol?)
>
<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!-- Level 6 Elements -->
<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!-- =================================================================
Used inside a checkCase element to specify the input or output variable name
================================================================= -->
<!ELEMENT signalName (#PCDATA)>
<!-- =================================================================
Used inside a checkCase element to specify the input or output varID
================================================================= -->
<!ELEMENT signalID (#PCDATA)>
<!-- =================================================================
Used inside a checkCase element to specify the units-of-measure for an input or output
variable, for verification of proper implementation of a model.
================================================================= -->
<!ELEMENT signalUnits (#PCDATA)>
<!-- =================================================================
Used inside a checkCase element to give the current value of an internal signal or
input/output variable, for verification of proper implementation of a model.
================================================================= -->
<!ELEMENT signalValue (#PCDATA)>
<!-- =================================================================
This element specifies the allowable tolerance of error in an output value such that the model
can be considered verified. It is assumed all uncertainty is removed in performing the model
calculations.
================================================================= -->
<!ELEMENT tol (#PCDATA)>