VOTable1.2 is meant to serialize tabular documents in thecontext of Virtual Observatory applications. This schemacorresponds to the VOTable document available fromhttp://www.ivoa.net/Documents/latest/VOT.html
<xs:simpleType name="ucdType"><xs:restriction base="xs:token"><xs:annotation><xs:documentation>Accept UCD1+ Accept also old UCD1 (but not / + %) including SIAP convention (with :)</xs:documentation></xs:annotation><xs:pattern value="[A-Za-z0-9_.:;\-]*"/><!-- UCD1 use also / + % --></xs:restriction></xs:simpleType>
content-role was previsouly restricted as:<xs:attribute name="content-role"> <xs:simpleType> <xs:restriction base="xs:NMTOKEN"> <xs:enumeration value="query"/> <xs:enumeration value="hints"/> <xs:enumeration value="doc"/> <xs:enumeration value="location"/> </xs:restriction> </xs:simpleType></xs:attribute>; is now a name token.
Diagram
Used by
Elements
Field/LINK, Resource/LINK, Table/LINK
Attributes
QName
Type
Use
ID
xs:ID
optional
action
xs:anyURI
optional
content-role
xs:NMTOKEN
optional
content-type
xs:NMTOKEN
optional
gref
xs:token
optional
href
xs:anyURI
optional
title
xs:string
optional
value
xs:string
optional
Source
<xs:complexType name="Link"><xs:annotation><xs:documentation>content-role was previsouly restricted as:<![CDATA[
<xs:attribute name="content-role">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="query"/>
<xs:enumeration value="hints"/>
<xs:enumeration value="doc"/>
<xs:enumeration value="location"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>]]>; is now a name token.</xs:documentation></xs:annotation><xs:attribute name="ID" type="xs:ID"/><xs:attribute name="content-role" type="xs:NMTOKEN"/><xs:attribute name="content-type" type="xs:NMTOKEN"/><xs:attribute name="title" type="xs:string"/><xs:attribute name="value" type="xs:string"/><xs:attribute name="href" type="xs:anyURI"/><xs:attribute name="gref" type="xs:token"/><!-- Deprecated in V1.1 --><xs:attribute name="action" type="xs:anyURI"/></xs:complexType>
<xs:complexType name="Definitions"><xs:annotation><xs:documentation>Deprecated in Version 1.1</xs:documentation></xs:annotation><xs:choice minOccurs="0" maxOccurs="unbounded"><xs:element name="COOSYS" type="CoordinateSystem"/><!-- Deprecated in V1.2 --><xs:element name="PARAM" type="Param"/></xs:choice></xs:complexType>
<xs:complexType name="Field"><xs:sequence><!-- minOccurs="0" maxOccurs="unbounded" --><xs:element name="DESCRIPTION" type="anyTEXT" minOccurs="0"/><xs:element name="VALUES" type="Values" minOccurs="0"/><!-- maxOccurs="2" --><xs:element name="LINK" type="Link" minOccurs="0" maxOccurs="unbounded"/></xs:sequence><xs:attribute name="ID" type="xs:ID"/><xs:attribute name="unit" type="xs:token"/><xs:attribute name="datatype" type="dataType" use="required"/><xs:attribute name="precision" type="precType"/><xs:attribute name="width" type="xs:positiveInteger"/><xs:attribute name="xtype" type="xs:token"/><xs:attribute name="ref" type="xs:IDREF"/><xs:attribute name="name" type="xs:token" use="required"/><xs:attribute name="ucd" type="ucdType"/><xs:attribute name="utype" type="xs:string"/><xs:attribute name="arraysize" type="xs:string"/><!-- GL: is the next deprecated element remaining
(is not in PARAM, but will in new model be inherited)
--><xs:attribute name="type"><!-- type is not in the Version 1.1, but is kept for
backward compatibility purposes
--><xs:simpleType><xs:restriction base="xs:NMTOKEN"><xs:enumeration value="hidden"/><xs:enumeration value="no_query"/><xs:enumeration value="trigger"/><xs:enumeration value="location"/></xs:restriction></xs:simpleType></xs:attribute></xs:complexType>
<xs:complexType name="Group"><xs:sequence><xs:element name="DESCRIPTION" type="anyTEXT" minOccurs="0"/><!-- GL I guess I can understand the next choice element as one may (?)
really want to group fields and params and groups in a particular order.
--><xs:choice minOccurs="0" maxOccurs="unbounded"><xs:element name="FIELDref" type="FieldRef"/><xs:element name="PARAMref" type="ParamRef"/><xs:element name="PARAM" type="Param"/><xs:element name="GROUP" type="Group"/><!-- GL a GroupRef could remove recursion --></xs:choice></xs:sequence><xs:attribute name="ID" type="xs:ID"/><xs:attribute name="name" type="xs:token"/><xs:attribute name="ref" type="xs:IDREF"/><xs:attribute name="ucd" type="ucdType"/><xs:attribute name="utype" type="xs:string"/></xs:complexType>
<xs:complexType name="Data"><xs:annotation><xs:documentation>Added in Version 1.2: INFO for diagnostics</xs:documentation></xs:annotation><xs:sequence><xs:choice><xs:element name="TABLEDATA" type="TableData"/><xs:element name="BINARY" type="Binary"/><xs:element name="FITS" type="FITS"/></xs:choice><xs:element name="INFO" type="Info" minOccurs="0" maxOccurs="unbounded"/></xs:sequence></xs:complexType>
The ID attribute is added here to the TR tag to avoid problems of code generators which do not properly interpret the TR/TD structures
Diagram
Used by
Element
TableData/TR
Model
TD+
Children
TD
Attributes
QName
Type
Use
ID
xs:ID
optional
Source
<xs:complexType name="Tr"><xs:annotation><xs:documentation>The ID attribute is added here to the TR tag to avoid problems of code generators which do not properly interpret the TR/TD structures</xs:documentation></xs:annotation><xs:sequence><xs:element name="TD" type="Td" maxOccurs="unbounded"/></xs:sequence><xs:attribute name="ID" type="xs:ID"/></xs:complexType>
<xs:complexType name="Td"><xs:simpleContent><xs:extension base="xs:string"><!-- xs:attribute name="ref" type="xs:IDREF"/ --><xs:annotation><xs:documentation>The 'encoding' attribute is added here to avoid problems of code generators which do not properly interpret the TR/TD structures. 'encoding' was chosen because it appears in appendix A.5</xs:documentation></xs:annotation><xs:attribute name="encoding" type="encodingType"/></xs:extension></xs:simpleContent></xs:complexType>
<xs:complexType name="Table"><xs:annotation><xs:documentation>Added in Version 1.2: INFO for diagnostics</xs:documentation></xs:annotation><xs:sequence><xs:element name="DESCRIPTION" type="anyTEXT" minOccurs="0"/><!-- GL: why a choice iso for example --><!--
<xs:element name="PARAM" type="Param" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="FIELD" type="Field" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="GROUP" type="Group" minOccurs="0" maxOccurs="unbounded"/>
--><!--
This could also enforce groups to be defined after the fields and params
to which they must have a reference, which is somewhat more logical
--><!-- Added Version 1.2: --><xs:element name="INFO" type="Info" minOccurs="0" maxOccurs="unbounded"/><!-- An empty table without any FIELD/PARAM should not be acceptable --><xs:choice minOccurs="1" maxOccurs="unbounded"><xs:element name="FIELD" type="Field"/><xs:element name="PARAM" type="Param"/><xs:element name="GROUP" type="Group"/></xs:choice><xs:element name="LINK" type="Link" minOccurs="0" maxOccurs="unbounded"/><!-- This would allow several DATA parts in a table (future extension?)
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="DATA" type="Data"/>
<xs:element name="INFO" type="Info" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
--><xs:element name="DATA" type="Data" minOccurs="0"/><xs:element name="INFO" type="Info" minOccurs="0" maxOccurs="unbounded"/></xs:sequence><xs:attribute name="ID" type="xs:ID"/><xs:attribute name="name" type="xs:token"/><xs:attribute name="ref" type="xs:IDREF"/><xs:attribute name="ucd" type="ucdType"/><xs:attribute name="utype" type="xs:string"/><xs:attribute name="nrows" type="xs:nonNegativeInteger"/></xs:complexType>
Complex Type Resource
Namespace
http://www.ivoa.net/xml/VOTable/v1.2
Annotations
Added in Version 1.2: INFO for diagnostics in several places
Diagram
Used by
Elements
Resource/RESOURCE, VOTABLE/RESOURCE
Model
DESCRIPTION{0,1} , INFO* , (COOSYS | GROUP | PARAM) , LINK* , (TABLE | RESOURCE) , INFO* , ANY element from ANY namespace OTHER than 'http://www.ivoa.net/xml/VOTable/v1.2'