From 4eb043c632ae97bc73c86c05c5618c68d7b7a565 Mon Sep 17 00:00:00 2001 From: Mark Taylor Date: Tue, 24 Feb 2026 16:29:35 +0000 Subject: [PATCH 01/12] Fix broken VOTable example Add whitespace surrounding attribute assignment required for well-formed XML for example in section 5.1. --- VOTable.tex | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/VOTable.tex b/VOTable.tex index 676caf1..884af05 100644 --- a/VOTable.tex +++ b/VOTable.tex @@ -1569,10 +1569,10 @@ \subsection{\elem{TABLEDATA} Serialization} \label{example2} \begin{verbatim} - + - - + + From 879a9380f46c6f389c6e84e4132cb26fc5bcb8f8 Mon Sep 17 00:00:00 2001 From: Mark Taylor Date: Tue, 24 Feb 2026 16:08:41 +0000 Subject: [PATCH 02/12] Spelling --- VOTable.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VOTable.tex b/VOTable.tex index 884af05..ba00325 100644 --- a/VOTable.tex +++ b/VOTable.tex @@ -1306,7 +1306,7 @@ \subsection{\elem{VALUES} Element} described by the \elem{VALUES} element. The domain may therefore be defined as a single interval, or as a set of individual values. Although the schema does not forbid all three -\elem{MIN}, \elem{MAX} and \elem{OPTION} sub-elements simultanesouly, +\elem{MIN}, \elem{MAX} and \elem{OPTION} sub-elements simultaneously, such usage is considered as bad practice and is discouraged. All three \elem{MIN}, \elem{MAX} and \elem{OPTION} sub-elements From 28259c3e658720d98d7f14fd195a0f3c79269e55 Mon Sep 17 00:00:00 2001 From: Mark Taylor Date: Tue, 24 Feb 2026 15:54:10 +0000 Subject: [PATCH 03/12] Remove INFO from DATA element summary figure The pictorial description of the DATA element in Section 7.1 has a trailing "..." at the end, after the closing tag. I don't think this is right; all of the other such boxes contain only a single element. Moreover, an entry appears after the entry in the TABLE box, so it really doesn't seem to be necessary here. This line seems to have got added between VOTable 1.1 and 1.2, when the position of the INFO element was revised, but I don't see any good reason for it, so it's just removed at this commit. --- VOTable.elem.tex | 1 - 1 file changed, 1 deletion(-) diff --git a/VOTable.elem.tex b/VOTable.elem.tex index b468a4e..c74720c 100644 --- a/VOTable.elem.tex +++ b/VOTable.elem.tex @@ -83,7 +83,6 @@ \choice {\element{FITS}}\\ \mv\order \element{STREAM}\\ \element{\slash DATA}\\ - \order \optelem{INFO}$\cdots$ \\ \hline\end{tabular} & \begin{tabular}{|l|}\hline From 61aa60dea1fa722e13450ae3e812295f05d3d8ae Mon Sep 17 00:00:00 2001 From: Mark Taylor Date: Tue, 24 Feb 2026 15:59:35 +0000 Subject: [PATCH 04/12] Update 1.5 to 1.6 in a few places The location of the schema file is updated from http://www.ivoa.net/xml/VOTable/votable-1.5.xsd to http://www.ivoa.net/xml/VOTable/votable-1.6.xsd in a couple of places (doesn't exist yet, but it will on publication). I also changed the VOTABLE version attribute from 1.5 to 1.6 in the first example VOTable in the document. --- VOTable.tex | 4 ++-- stc_example1.vot | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/VOTable.tex b/VOTable.tex index ba00325..027f19d 100644 --- a/VOTable.tex +++ b/VOTable.tex @@ -579,7 +579,7 @@ \section{The VOTable Document Structure} The overall VOTable document structure is described and controlled by its XML Schema \citep{std:XSD}. The schema for VOTable version \ivoaDocversion{} is given in \Arefx{XML-schema} of this document. It can also -be retrieved from \url{http://www.ivoa.net/xml/VOTable/votable-1.5.xsd}. +be retrieved from \url{http://www.ivoa.net/xml/VOTable/votable-1.6.xsd}. A VOTable document consists of a single all-containing element called {\elem{VOTABLE}}, which contains descriptive elements and global definitions @@ -2140,7 +2140,7 @@ \section{A Simplified View of the VOTable \ivoaDocversion{} Schema} The XML Schema defining a VOTable \ivoaDocversion{} document is available from -\url{http://www.ivoa.net/xml/VOTable/votable-1.5.xsd} +\url{http://www.ivoa.net/xml/VOTable/votable-1.6.xsd} as well as in \Arefx{XML-schema} of this document. In this section we illustrate this XML Schema by a set of boxes describing the structure of a VOTable, diff --git a/stc_example1.vot b/stc_example1.vot index 59ee06b..74625a1 100644 --- a/stc_example1.vot +++ b/stc_example1.vot @@ -1,5 +1,5 @@ - +
Apple 1 2 4 8 16 1.62 4.56 3.44
Orange 15 23 -11 9 2.33 4.66 9.53
From f4e63c58717d3b005618754f23bc36394aeb797b Mon Sep 17 00:00:00 2001 From: Mark Taylor Date: Tue, 24 Feb 2026 16:07:45 +0000 Subject: [PATCH 05/12] Minor edits for consistency --- VOTable.tex | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/VOTable.tex b/VOTable.tex index 027f19d..c595b2b 100644 --- a/VOTable.tex +++ b/VOTable.tex @@ -684,7 +684,8 @@ \subsection{{\attr{name}, \attr{ID} and \attr{ref} attributes}} the {\attr{name}} attribute need not. It is however recommended, as a good practice, to assign unique names within a \elem{TABLE} element. This recommendation means that, -between a \elem{TABLE} and its corresponding closing \elem{\slash TABLE} tag, +between a \elemdef{TABLE}{} and its corresponding closing +\elemdef{\slash TABLE}{} tag, {\attr{name}} attributes of \elem{FIELD}, \elem{PARAM} and optional \elem{GROUP} elements should be all different. @@ -806,7 +807,7 @@ \subsection{\elem{TIMESYS} Element} \attrval{xtype}{timestamp}, or years in the Julian or Besselian calendar when a column has \verb|yr|, \verb|a| or \verb|Ba| as its unit and no time origin is given. -When using calendar epochs written in julian or besselian years, note that +When using calendar epochs written in Julian or Besselian years, note that conventionally Julian years are tied to the TDB timescale and Besselian years to the ET (equivalent to TT) timescale \citep{2015A+A...574A..36R}. @@ -1554,7 +1555,8 @@ \subsection{\elem{TABLEDATA} Serialization} then the item is assumed to contain no data. Valid representations of values in a cell, depending on their \attr{datatype}, are detailed in \Aref{sec:datatypes}. -If the {\elem{TD}} element is empty ({\verb||}) +If the {\elem{TD}} element is empty +(\elemdef{TD}{\slash} or \elemdef{TD}{}\elemdef{\slash TD}{}) the cell is considered to contain no data, i.e.\ to be null. If a cell contains an array of numbers or a complex number, From 465466b555761639dca41ebc4d43dea557c444e9 Mon Sep 17 00:00:00 2001 From: Mark Taylor Date: Tue, 24 Feb 2026 16:09:24 +0000 Subject: [PATCH 06/12] Fix fencepost error in BINARY2 bit counting Given that the first byte is asserted to start with the first bit, surely the second byte starts with the ninth not the eighth bit? But please somebody check I'm right here. This was probably my counting error in the first place. --- VOTable.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VOTable.tex b/VOTable.tex index c595b2b..e590ab1 100644 --- a/VOTable.tex +++ b/VOTable.tex @@ -1729,7 +1729,7 @@ \subsection{\elem{BINARY2} Serialization} The most significant bit of the first flag byte corresponds to the first column, the second most significant bit of the first flag byte to the second column, -the most significant bit of the second flag byte to the eighth column, +the most significant bit of the second flag byte to the ninth column, and so on. A set (1) bit indicates that the corresponding cell is null, and an unset (0) bit indicates that its value is not null. Unused bits will be at the less-significant end of the final flag byte, From ed46fe665121bfb6a931ec1b685a591f821ee571 Mon Sep 17 00:00:00 2001 From: Mark Taylor Date: Tue, 24 Feb 2026 16:15:41 +0000 Subject: [PATCH 07/12] Change VALUES example from PARAM to FIELD The final VALUES example in section 4.7 as written was illegal, since the PARAM element had no values attribute. Changing the element to a FIELD fixes this. Probably the intention was to make clear that VALUES can be used with PARAM as well as with FIELD. This intention could be recovered, but it would be necessary to insert a value attribute (presumably either containing a circle triple or empty) into the example in that case for validity. --- VOTable.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/VOTable.tex b/VOTable.tex index e590ab1..38b68a7 100644 --- a/VOTable.tex +++ b/VOTable.tex @@ -1335,9 +1335,9 @@ \subsection{\elem{VALUES} Element} - + - + \end{verbatim} \noindent both the single value of \emph{flux} and all items in the \emph{fluxes} From d97f8d7b77564c1dca6f6a4a42ba574cb9079971 Mon Sep 17 00:00:00 2001 From: Mark Taylor Date: Tue, 24 Feb 2026 16:23:19 +0000 Subject: [PATCH 08/12] Avoid name attribute namespace collision in GROUP example The second example of the GROUP element in section 4.9 uses the value "Flux" for the name attribute both of one of the FIELDs and of the GROUP that references that field. This contradicts the advice from section 3.2: "It is however recommended, as a good practice, to assign unique names within a TABLE element. This recommendation means that, between a
| or \verb|
and its corresponding closing
tag, name attributes of FIELD, PARAM and optional GROUP elements should be all different." So I've renamed the group as "FluxGroup". Arguably it would be a good idea to rename the GROUP in the previous example from Velocity to VelocityGroup as well? But since that example lacks any context, there's no namespace clash there. --- VOTable.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VOTable.tex b/VOTable.tex index 38b68a7..c26ae2c 100644 --- a/VOTable.tex +++ b/VOTable.tex @@ -1452,7 +1452,7 @@ \subsection{\elem{GROUP}ing \elem{FIELD}s and \elem{PARAM}eters} datatype="float" width="6" precision="1" unit="mJy"/> - + Flux measured at 352MHz From 6361ddac4bc5442ac68cad8d3dafb78bfacdd90b Mon Sep 17 00:00:00 2001 From: Mark Taylor Date: Tue, 24 Feb 2026 17:00:45 +0000 Subject: [PATCH 09/12] Remove unwanted curly brackets from attr diagram Some of the \hline macros in VOTable.attr.tex which draws the Attribute Summary in section 7.3 were written \hline{}. This achieved, as far as I can tell, no good purpose, but resulted in very slightly annoying whitespace before the first attribute name in each box in the PDF rendering. s/hline/hline{}/g fixes it. --- VOTable.attr.tex | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/VOTable.attr.tex b/VOTable.attr.tex index 1d8249a..bb8ef39 100644 --- a/VOTable.attr.tex +++ b/VOTable.attr.tex @@ -5,7 +5,7 @@ \begin{tabular}{@{}c@{}} %%% Start cell r1c1 \begin{tabular}{|l|}\hline \multicolumn{1}{|c|}{\elem{VOTABLE}}\\ - \multicolumn{1}{|c|}{{\em(\Aref{elem:VOTABLE})}}\\ \hline{} + \multicolumn{1}{|c|}{{\em(\Aref{elem:VOTABLE})}}\\ \hline \attr{ID}\\ %%% what could be the usage of ID here ? \attr{version}\\ \hline\end{tabular} @@ -15,7 +15,7 @@ \begin{tabular}{@{}c@{}} %%% Start cell r1c2 \begin{tabular}{|l|}\hline \multicolumn{1}{|c|}{\elem{COOSYS}}\\ - \multicolumn{1}{|c|}{{\em(\Aref{elem:COOSYS})}}\\ \hline{} + \multicolumn{1}{|c|}{{\em(\Aref{elem:COOSYS})}}\\ \hline \requiredattr{ID}\\ \attr{equinox}\\ \attr{epoch}\\ @@ -25,7 +25,7 @@ \\ \\ \begin{tabular}{|l|}\hline \multicolumn{1}{|c|}{\elem{TIMESYS}}\\ - \multicolumn{1}{|c|}{{\em(\Aref{elem:TIMESYS})}}\\ \hline{} + \multicolumn{1}{|c|}{{\em(\Aref{elem:TIMESYS})}}\\ \hline \requiredattr{ID}\\ \attr{timeorigin}\\ \requiredattr{timescale}\\ @@ -37,7 +37,7 @@ \begin{tabular}{@{}c@{}} %%% Start cell r1c3 \begin{tabular}{|l|}\hline \multicolumn{1}{|c|}{\elem{INFO}}\\ - \multicolumn{1}{|c|}{{\em(\Aref{elem:INFO})}}\\ \hline{} + \multicolumn{1}{|c|}{{\em(\Aref{elem:INFO})}}\\ \hline \attr{ID}\\ \requiredattr{name}\\ \requiredattr{value}\\ @@ -53,7 +53,7 @@ \begin{tabular}{@{}c@{}} %%% Start cell r1c4 \begin{tabular}{|l|}\hline \multicolumn{1}{|c|}{\elem{GROUP}}\\ - \multicolumn{1}{|c|}{{\em(\Aref{elem:GROUP})}}\\ \hline{} + \multicolumn{1}{|c|}{{\em(\Aref{elem:GROUP})}}\\ \hline \attr{ID}\\ \attr{name}\\ \attr{ref}\\ @@ -63,7 +63,7 @@ \\ \\ \begin{tabular}{|l|}\hline \multicolumn{1}{|c|}{\elem{RESOURCE}}\\ - \multicolumn{1}{|c|}{{\em(\Aref{elem:RESOURCE})}}\\ \hline{} + \multicolumn{1}{|c|}{{\em(\Aref{elem:RESOURCE})}}\\ \hline \attr{ID}\\ \attr{name}\\ \attr{type}\\ @@ -75,7 +75,7 @@ \begin{tabular}{@{}c@{}} %%% Start cell r1c5 \begin{tabular}{|l|}\hline \multicolumn{1}{|c|}{\elem{PARAM}}\\ - \multicolumn{1}{|c|}{{\em(\Aref{elem:PARAM})}}\\ \hline{} + \multicolumn{1}{|c|}{{\em(\Aref{elem:PARAM})}}\\ \hline \attr{ID}\\ \attr{unit}\\ \requiredattr{datatype}\\ @@ -95,7 +95,7 @@ \begin{tabular}{@{}c@{}} %%% Start cell r1c6 \begin{tabular}{|l|}\hline \multicolumn{1}{|c|}{\elem{FIELD}}\\ - \multicolumn{1}{|c|}{{\em(\Aref{elem:FIELD})}}\\ \hline{} + \multicolumn{1}{|c|}{{\em(\Aref{elem:FIELD})}}\\ \hline \attr{ID}\\ \attr{unit}\\ \requiredattr{datatype}\\ @@ -118,7 +118,7 @@ \begin{tabular}{@{}c@{}} %%% Start cell r2c1 \begin{tabular}{|l|}\hline \multicolumn{1}{|c|}{\elem{TABLE}}\\ - \multicolumn{1}{|c|}{{\em(\Aref{elem:TABLE})}}\\ \hline{} + \multicolumn{1}{|c|}{{\em(\Aref{elem:TABLE})}}\\ \hline \attr{ID}\\ \attr{name}\\ \attr{ucd}\\ @@ -142,7 +142,7 @@ \begin{tabular}{|l|}\hline \multicolumn{1}{|c|}{\elem{PARAMref}}\\ \multicolumn{1}{|c|}{{\em(\Aref{elem:PARAMref})}}\\ - \hline{} + \hline \requiredattr{ref}\\ \attr{ucd}\\ \attr{utype}\\ @@ -153,7 +153,7 @@ \begin{tabular}{@{}c@{}} %%% Start cell r2c3 \begin{tabular}{|l|}\hline \multicolumn{1}{|c|}{\elem{STREAM}}\\ - \multicolumn{1}{|c|}{{\em(\Aref{elem:STREAM})}}\\ \hline{} + \multicolumn{1}{|c|}{{\em(\Aref{elem:STREAM})}}\\ \hline \attr{type}\\ \attr{href}\\ \attr{actuate}\\ @@ -167,19 +167,19 @@ \begin{tabular}{@{}c@{}} %%% Start cell r2c4 \begin{tabular}{|l|}\hline \multicolumn{1}{|c|}{\elem{FITS}}\\ - \multicolumn{1}{|c|}{{\em(\Aref{elem:FITS})}}\\ \hline{} + \multicolumn{1}{|c|}{{\em(\Aref{elem:FITS})}}\\ \hline \attr{extnum}\\ \hline\end{tabular} \\ \\ \begin{tabular}{|l|}\hline \multicolumn{1}{|c|}{\elem{TR}}\\ - \multicolumn{1}{|c|}{{\em(\Aref{elem:TR})}}\\ \hline{} + \multicolumn{1}{|c|}{{\em(\Aref{elem:TR})}}\\ \hline \attrx{ID}\\ \hline\end{tabular} \\ \\ \begin{tabular}{|l|}\hline \multicolumn{1}{|c|}{\elem{TD}}\\ - \multicolumn{1}{|c|}{{\em(\Aref{elem:TD})}}\\ \hline{} + \multicolumn{1}{|c|}{{\em(\Aref{elem:TD})}}\\ \hline %\attr{ref}\\ \attrx{encoding}\\ \hline\end{tabular} @@ -189,21 +189,21 @@ \begin{tabular}{@{}c@{}} %%% Start cell r2c5 \begin{tabular}{|l|}\hline \multicolumn{1}{|c|}{\elem{MIN}}\\ - \multicolumn{1}{|c|}{{\em(\Aref{elem:MIN})}}\\ \hline{} + \multicolumn{1}{|c|}{{\em(\Aref{elem:MIN})}}\\ \hline \requiredattr{value}\\ \attr{inclusive}\\ \hline\end{tabular} \\ \\ \begin{tabular}{|l|}\hline \multicolumn{1}{|c|}{\elem{MAX}}\\ - \multicolumn{1}{|c|}{{\em(\Aref{elem:MAX})}}\\ \hline{} + \multicolumn{1}{|c|}{{\em(\Aref{elem:MAX})}}\\ \hline \requiredattr{value}\\ \attr{inclusive}\\ \hline\end{tabular} \\ \\ \begin{tabular}{|l|}\hline \multicolumn{1}{|c|}{\elem{OPTION}}\\ - \multicolumn{1}{|c|}{{\em(\Aref{elem:OPTION})}}\\ \hline{} + \multicolumn{1}{|c|}{{\em(\Aref{elem:OPTION})}}\\ \hline \attr{name}\\ \requiredattr{value}\\ \hline\end{tabular} @@ -213,7 +213,7 @@ \begin{tabular}{@{}c@{}} %%% Start cell r2c6 \begin{tabular}{|l|}\hline \multicolumn{1}{|c|}{\elem{VALUES}}\\ - \multicolumn{1}{|c|}{{\em(\Aref{elem:VALUES})}}\\ \hline{} + \multicolumn{1}{|c|}{{\em(\Aref{elem:VALUES})}}\\ \hline \attr{ID}\\ \attr{type}\\ \attr{null}\\ @@ -223,7 +223,7 @@ \\ \\ \begin{tabular}{|l|}\hline \multicolumn{1}{|c|}{\elem{LINK}}\\ - \multicolumn{1}{|c|}{{\em(\Aref{elem:LINK})}}\\ \hline{} + \multicolumn{1}{|c|}{{\em(\Aref{elem:LINK})}}\\ \hline \attr{ID}\\ \attr{content-role}\\ \attr{content-type}\\ From 6edb2943be0a7b25300a9f7ef938b07f6b7dc8d0 Mon Sep 17 00:00:00 2001 From: Mark Taylor Date: Tue, 24 Feb 2026 17:04:58 +0000 Subject: [PATCH 10/12] Note editorial updates in version history --- VOTable.tex | 1 + 1 file changed, 1 insertion(+) diff --git a/VOTable.tex b/VOTable.tex index c26ae2c..c59a995 100644 --- a/VOTable.tex +++ b/VOTable.tex @@ -2424,6 +2424,7 @@ \subsection{Differences Between Versions 1.5 and 1.6} {\tt application/x-votable+xml} media type (\Aref{sec:mime}). \item Advice about character encoding is modernised: use UTF-8 without a {\tt charset} media type parameter (\Aref{sec:mime}). +\item Minor editorial corrections. \end{itemize} From 097a4131410c7604b644316fb292b314a0317571 Mon Sep 17 00:00:00 2001 From: Mark Taylor Date: Tue, 24 Feb 2026 17:07:22 +0000 Subject: [PATCH 11/12] Tiny formatting update --- VOTable.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VOTable.tex b/VOTable.tex index c59a995..9eb41f0 100644 --- a/VOTable.tex +++ b/VOTable.tex @@ -556,7 +556,7 @@ \subsubsection*{What can VOTable do but not FITS?} content of a parameter or field. It has the hierarchy and flexibility of XML: using \elem{GROUP} elements introduced in version 1.1, columns in a VOTable can be grouped in arbitrarily complex hierarchies; -and the ID attribute can be used in XML +and the \attr{ID} attribute can be used in XML to enable what are essentially pointers. FITS does not handle Unicode (extended alphabet) characters. From 8f6d9f754c4b83ee73a07e8a40677554fbc6d9ff Mon Sep 17 00:00:00 2001 From: Mark Taylor Date: Wed, 25 Feb 2026 16:55:44 +0000 Subject: [PATCH 12/12] Remove some trailing whitespace --- VOTable.tex | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/VOTable.tex b/VOTable.tex index 9eb41f0..9751a8c 100644 --- a/VOTable.tex +++ b/VOTable.tex @@ -2408,7 +2408,7 @@ \subsection{Differences Between Versions 1.5 and 1.6} and elements of the datatype \literalvalue{unicodeChar} are defined to contain UTF-16 2-byte code units for BMP code points (not UCS-2 characters). - Both types are represented using document encoding in the + Both types are represented using document encoding in the \elem{TABLEDATA} serialization. Furthermore the \literalvalue{unicodeChar} type is deprecated. These changes are entirely compatible with earlier VOTable versions @@ -2425,7 +2425,6 @@ \subsection{Differences Between Versions 1.5 and 1.6} \item Advice about character encoding is modernised: use UTF-8 without a {\tt charset} media type parameter (\Aref{sec:mime}). \item Minor editorial corrections. - \end{itemize} % NOTE: IVOA recommendations must be cited from docrepo.bib