The VOTable parser provided is believed to be able to parse correctly
any VOTable document which conforms to the 1.0, 1.1, 1.2, 1.3 or (draft) 1.4
VOTable recommendations.
In addition, it will happily cope with documents which violate the
standard in that they contain extra elements or attributes; such
elements or attributes will be inserted into the resulting DOM but
ignored as far as producing StarTable
s goes.
In general, if there is something obvious that the parser can do to
make sense of a document outside of the letter of the standard, then
it tries to do that.
There is currently one instance in which it can be useful for the parser deliberately to violate the standard, as a workaround for an error commonly encountered in VOTable documents. According to the standard, if a FIELD (or PARAM) element is declared like this:
<FIELD datatype="char"/> (1)it is considered equivalent to
<FIELD datatype="char" arraysize="1"/> (2)that is, it describes a column in which each cell contains a single character (the same remarks apply to
datatype="unicodeChar"
).
In fact, when people (or machines) write (1) above, what they often
mean to say is
<FIELD datatype="char" arraysize="*"/> (3)that is, it describes a column in which each cell contains a variable length string. In particular, some tables returned from the service have contained this defect. Working to the letter of the standard, this can lead to columns in which only the first character of the string in cell is visible. By default STIL interprets (1) above, in accordance with the standard, to mean (2). However, if you want to work around the problem and interpret (1) to mean (3), by using
VOElementFactory
's
setStrict
method or
STRICT_DEFAULT
variable,
or from outside the program by setting the system property
votable.strict="false"
.