-@noindent
-Whether, in the corpus, other attributes are always present (``yes''),
-never present (``no''), or sometimes present (``opt'') depends on
-@code{baseFormat}:
-
-@multitable {maximumFractionDigits} {@code{dateTime}} {@code{elapsedTime}} {number} {string}
-@headitem Attribute @tab @code{dateTime} @tab @code{elapsedTime} @tab number @tab string
-@item errorCharacter @tab yes @tab yes @tab yes @tab opt
-@item @w{ }
-@item separatorChars @tab yes @tab no @tab no @tab no
-@item @w{ }
-@item mdyOrder @tab yes @tab no @tab no @tab no
-@item @w{ }
-@item showYear @tab yes @tab no @tab no @tab no
-@item yearAbbreviation @tab yes @tab no @tab no @tab no
-@item @w{ }
-@item showMonth @tab yes @tab no @tab no @tab no
-@item monthFormat @tab yes @tab no @tab no @tab no
-@item @w{ }
-@item showDay @tab yes @tab opt @tab no @tab no
-@item dayPadding @tab yes @tab opt @tab no @tab no
-@item dayOfMonthPadding @tab yes @tab no @tab no @tab no
-@item dayType @tab yes @tab no @tab no @tab no
-@item @w{ }
-@item showHour @tab yes @tab opt @tab no @tab no
-@item hourFormat @tab yes @tab opt @tab no @tab no
-@item hourPadding @tab yes @tab yes @tab no @tab no
-@item @w{ }
-@item showMinute @tab yes @tab yes @tab no @tab no
-@item minutePadding @tab yes @tab yes @tab no @tab no
-@item @w{ }
-@item showSecond @tab yes @tab yes @tab no @tab no
-@item secondPadding @tab no @tab yes @tab no @tab no
-@item @w{ }
-@item showMillis @tab no @tab yes @tab no @tab no
-@item @w{ }
-@item minimumIntegerDigits @tab no @tab no @tab yes @tab no
-@item maximumFractionDigits @tab no @tab yes @tab yes @tab no
-@item minimumFractionDigits @tab no @tab yes @tab yes @tab no
-@item useGrouping @tab no @tab opt @tab yes @tab no
-@item scientific @tab no @tab no @tab yes @tab no
-@item small @tab no @tab no @tab opt @tab no
-@item suffix @tab no @tab no @tab opt @tab no
-@item @w{ }
-@item tryStringsAsNumbers @tab no @tab no @tab no @tab yes
-@item @w{ }
-@end multitable
-
-@defvr {Attribute} errorCharacter
-A character that replaces the formatted value when it cannot otherwise
-be represented in the given format. Always @samp{*}.
-@end defvr
-
-@subsubheading Date and Time Attributes
-
-These attributes are used with @code{dateTime} and @code{elapsedTime}
-formats or both.
+@defvr {Attribute} maximumFractionDigits
+@defvrx {Attribute} minimumFractionDigits
+Maximum or minimum, respectively, number of digits to display after
+the decimal point. The observed values of each attribute range from 0
+to 9.
+@end defvr
+
+@defvr {Attribute} useGrouping
+Whether to use the grouping character to group digits in large
+numbers.
+@end defvr
+
+@defvr {Attribute} scientific
+This attribute controls when and whether the number is formatted in
+scientific notation. It takes the following values:
+
+@table @code
+@item onlyForSmall
+Use scientific notation only when the number's magnitude is smaller
+than the value of the @code{small} attribute.
+
+@item whenNeeded
+Use scientific notation when the number will not otherwise fit in the
+available space.
+
+@item true
+Always use scientific notation. Not observed in the corpus.
+
+@item false
+Never use scientific notation. A number that won't otherwise fit will
+be replaced by an error indication (see the @code{errorCharacter}
+attribute). Not observed in the corpus.
+@end table
+@end defvr
+
+@defvr {Attribute} small
+Only present when the @code{scientific} attribute is
+@code{onlyForSmall}, this is a numeric magnitude below which the
+number will be formatted in scientific notation. The values @code{0}
+and @code{0.0001} have been observed. The value @code{0} seems like a
+pathological choice, since no real number has a magnitude less than 0;
+perhaps in practice such a choice is equivalent to setting
+@code{scientific} to @code{false}.
+@end defvr
+
+@defvr {Attribute} prefix
+@defvrx {Attribute} suffix
+Specifies a prefix or a suffix to apply to the formatted number. Only
+@code{suffix} has been observed, with value @samp{%}.
+@end defvr
+
+@node SPV Detail stringFormat Element
+@subsubsection The @code{stringFormat} Element
+
+@example
+stringFormat => relabel* affix*
+
+relabel :from=real :to => EMPTY
+@end example
+
+The @code{stringFormat} element specifies how to display a string. By
+default, a string is displayed verbatim, but @code{relabel} can change
+it.
+
+The @code{relabel} element appears as a child of @code{stringFormat}
+(and of @code{format}, when it is used to format strings). It
+specifies how to display a given value. It is used to implement value
+labels and to display the system-missing value in a human-readable
+way. It has the following attributes:
+
+@defvr {Attribute} from
+The value to map. In the corpus this is an integer or the
+system-missing value @code{-1.797693134862316E300}.
+@end defvr
+
+@defvr {Attribute} to
+The string to display in place of the value of @code{from}. In the
+corpus this is a wide variety of value labels; the system-missing
+value is mapped to @samp{.}.
+@end defvr
+
+@node SPV Detail dateTimeFormat Element
+@subsubsection The @code{dateTimeFormat} Element
+
+@example
+dateTimeFormat
+ :baseFormat[dt_base_format]=(date | time | dateTime)
+ :separatorChars?
+ :mdyOrder=(dayMonthYear | monthDayYear | yearMonthDay)?
+ :showYear=bool?
+ :yearAbbreviation=bool?
+ :showQuarter=bool?
+ :quarterPrefix?
+ :quarterSuffix?
+ :showMonth=bool?
+ :monthFormat=(long | short | number | paddedNumber)?
+ :showWeek=bool?
+ :weekPadding=bool?
+ :weekSuffix?
+ :showDayOfWeek=bool?
+ :dayOfWeekAbbreviation=bool?
+ :dayPadding=bool?
+ :dayOfMonthPadding=bool?
+ :hourPadding=bool?
+ :minutePadding=bool?
+ :secondPadding=bool?
+ :showDay=bool?
+ :showHour=bool?
+ :showMinute=bool?
+ :showSecond=bool?
+ :showMillis=bool?
+ :dayType=(month | year)?
+ :hourFormat=(AMPM | AS_24 | AS_12)?
+=> affix*
+@end example
+
+This element appears only in schema version 2.5 and earlier
+(@pxref{SPV Detail visualization Element}).
+
+Data to be formatted in date formats is stored as strings in legacy
+data, in the format @code{yyyy-mm-ddTHH:MM:SS.SSS} and must be parsed
+and reformatted by the reader.
+
+The following attribute is required.
+
+@defvr {Attribute} baseFormat
+Specifies whether a date and time are both to be displayed, or just
+one of them.
+@end defvr
+
+Many of the attributes' meanings are obvious. The following seem to
+be worth documenting.