Bruce, I'm with Rob. Any (good) XML parser automatically counts the number of subelements of a particular type and returns that number when requested (e.g. getLength() in Xerces-C used by Janus) or allows you to iterate through the list without (e.g. "for i in vars:" in various XML modules in Python). The dimensions attribute would only add redundancy that isn't helpful if it is correct and causes errors if it is wrong (or maybe just confusion: if "dimensions" is 3 and there are only two <dim> elements, should the third dimension be assumed to be length 1?).
I do agree that <dim> and not dim1, etc. is the way to go. An alternative that makes it look a little closer (in style) to how <breakpointRefs>/<bpRef> is used in <griddedTableDef> would be <variableDef name="myDataMatrixr_m" varID="myDataMatrix" units="m"> <dimensions> <dim>2</dim> <dim>6</dim> <dim>3</dim> </dimensions> <initialValue> ... Although I don't know if that really adds anything useful. Again, the parser will easily know the number of <dim> elements, so it will easily figure out whether it is a scalar or a vector/array. Note that the parser already has to count such things in the <breakpointRefs>/<bpRef> system. Of course the real fun of the vector/array will be the mux/demux, subreferencing, and MathML connections. Examples: 1) Can an initialValue of an array be one or more previously defined variables? (scalars, vectors or arrays) 2) Can elements of an array be referenced by scalar variables? array: eulerAngle_d(3) scalars: rollEulerAngle_d, pitchEulerAngle_d, yawEulerAngle_d 3) Just for fun: 0-based (C) or 1-based (Fortran) indices? Dennis --- Dennis J. Linse, Aerospace Engineer Science Applications International Corporation +1-703-294-4449 <mailto:[EMAIL PROTECTED]> -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Bruce Jackson Sent: Thursday, March 13, 2008 8:17 AM To: Curtin, Robert (Contractor) Cc: Aerospace Sim Standard discussion group Subject: Re: arrayDef & draft simstd comments Rob, I need to find some time to review your wonderfully rich suggestions in depth, but I had a rationale for adding a "dimensions" attribute: without it, a parser will have to count the number of <dim> elements to determine how many dimensions are required. Plus, it serves as a check to make sure the two counts match. Also, I am trying to avoid names like dim1, dim2, dim3, etc... This implies a parser would be limited in how many dimensions it is required to look for (up to dim199?). Good catch on the naming for the initialValue - it does need to be consistent with the current element definition. And it may be a good idea to reuse variableDef in place of a new arrayDef element. In this case, the presence of a "dimensions" attribute (with a value other than 1) would clue the parser that the variable is not scalar. I'm passing the comments about coordinate frames along to Bruce Hildreth for his consideration, and I expect we'll be getting back to you; I think you have some very valid points from the perspective of an implementer. Thanks again, and enjoy your Fall (as we are enjoying Spring), -- Bruce On Mar 12, 2008, at 6:40 PM, Curtin, Robert (Contractor) wrote: > Hi Bruce, > > You suggestion looks good. The "dimensions" attribute would be > unnecessary, as it's defined by the number of <dim> elements, in the > same way that a gridded table's dimensional size is specified by the > number of <independentVarRef> (and also <bpRef>) elements. > > I'd keep <initialValue> singular to avoid confusion. I'd also carry > across the optional "axisSystem" attribute, for use with arrays that > define cartesian vectors/tensors. In fact, could we do all this using > the existing <variableDef> element, by adding the appropriate > subelements & rules? > > [...] > > Cheers, Rob > > > Rob Curtin > QinetiQ Consulting > on contract to Air Vehicles Division, > Defence Science & Technology Organisation > Tel: +61 (0)3 9626 7730 > > > -----Original Message----- > From: Bruce Jackson [mailto:[EMAIL PROTECTED] > Sent: Wednesday, 12 March 2008 11:20 PM > To: Brian, Geoff > Cc: Aerospace Sim Standard discussion group > Subject: Re: Matrix and Vector definitions for DaveML > > Geoff, > > This is a needed improvement to DAVE-ML. > > My first thought is the arrayDef attribute should be something like > 'dimensions="3"' and then a (set) of subelements that define the > actual > dimensions: > > <arrayDef name="myDataMatrixr_m" varID="myDataMatrix" units="m" > dimensions="3"> > <dim>2</dim> > <dim>6</dim> > <dim>3</dim> > <description>My Data Matrix is a 2x6x3 matrix; the last dimension > changes most rapidly</description> > <initialValues> > 111 112 113 <!-- the actual order is important, not the > way the > data is formatted --> > 121 122 123 > 131 132 133 > 141 142 143 > 151 152 153 > 161 162 163 > <!-- second plane shows another valid way of listing a 6x3 > matrix --> > 211 212 213 221 222 223 231 232 233 241 242 243 251 252 > 253 261 262 263 <!-- whitespace is unimportant > --> > </initialValues> > </arrayDef> >