XML Schema "mivot.xsd"
Target Namespace:
http://www.ivoa.net/xml/mivot
Version:
1.1
Defined Components:
1 global element, 12 local elements, 12 complexTypes
Default Namespace-Qualified Form:
Local Elements: qualified; Local Attributes: unqualified
Schema Location:
/home/msdemlei/gavo/trunk/gavo/resources/schemata/mivot.xsd; see XML source
Imports Schemas (3):
v1.1 [src], v1.2 [src], v1.3 [src]
XML Source
<?xml version="1.0" encoding="UTF-8"?>
<!-- XML Schema for the VODML lite mapping L. Michel 06/2020 -->
<!-- MIVOT schema for the record -->
<!-- GL 2021-07-23: Refactoring towards using type definitions rather than
global elements. Following VOTable v 1.11 refactoring from 23-May-2006 LM
2021-08-25: add VOtable import, prefix prefixes with dm-mapping
-->
<!-- ======================= -->
<!-- XSD sample http://users.polytech.unice.fr/~pfz/LANGDOC/COURS/EXEMPLES/XSD_DXS/chapter14.html -->
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.ivoa.net/xml/mivot" version="1.1" xmlns:dm-mapping="http://www.ivoa.net/xml/mivot" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- Required to validate mapping block within a VOTable (LM 08/2021) -->
<!-- Top level structure of the mapping block -->
<xs:element name="VODML">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="1" minOccurs="0" name="REPORT" type="dm-mapping:Report"/>
<xs:element maxOccurs="unbounded" minOccurs="0" name="MODEL" type="dm-mapping:Model"/>
<xs:element maxOccurs="1" minOccurs="0" name="GLOBALS" type="dm-mapping:Globals"/>
<xs:element maxOccurs="unbounded" minOccurs="0" name="TEMPLATES" type="dm-mapping:Templates"/>
</xs:sequence>
<!-- MD proposal
-->
</xs:complexType>
<!-- Make sure dmid is unique within the mapping block -->
<xs:unique name="Uniquedmid">
<xs:selector xpath=".//*"/>
<xs:field xpath="@dmid"/>
</xs:unique>
</xs:element>
<!-- Annotation process report-->
<xs:complexType mixed="true" name="Report">
<xs:attribute name="status" type="xs:string" use="required"/>
</xs:complexType>
<!-- Declaration of one used model -->
<xs:complexType name="Model">
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="url" type="xs:anyURI"/>
</xs:complexType>
<!-- Mapping of the data that have a global scope (e.g. frames) -->
<xs:complexType name="Globals">
<xs:sequence>
<xs:choice>
<xs:element name="INSTANCE" type="dm-mapping:Instance"/>
<xs:element name="COLLECTION" type="dm-mapping:Collection"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
<!-- Mapping of the data contained in a particular table -->
<xs:complexType name="Templates">
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" name="WHERE" type="dm-mapping:Where"/>
<xs:element maxOccurs="unbounded" minOccurs="1" name="INSTANCE" type="dm-mapping:Instance"/>
</xs:sequence>
<xs:attribute name="tableref" type="xs:string"/>
</xs:complexType>
<!-- Mapping of either a Datatype or an Objecttype -->
<xs:complexType name="Instance">
<xs:sequence>
<xs:choice maxOccurs="unbounded">
<xs:element minOccurs="0" name="PRIMARY_KEY" type="dm-mapping:PrimaryKey"/>
</xs:choice>
<!-- can this now be an xs:all -->
<xs:choice maxOccurs="unbounded">
<xs:element minOccurs="0" name="REFERENCE" type="dm-mapping:Reference"/>
<xs:element minOccurs="0" name="ATTRIBUTE" type="dm-mapping:Attribute"/>
<xs:element minOccurs="0" name="INSTANCE" type="dm-mapping:Instance"/>
<xs:element minOccurs="0" name="COLLECTION" type="dm-mapping:Collection"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="dmrole" type="xs:string" use="optional"/>
<xs:attribute name="dmtype" type="xs:string" use="required"/>
<xs:attribute name="dmid" type="xs:string"/>
</xs:complexType>
<!-- Atomic attribute -->
<xs:complexType name="Attribute">
<xs:attribute name="dmrole" type="xs:string" use="optional"/>
<xs:attribute name="dmtype" type="xs:string" use="required"/>
<xs:attribute name="ref" type="xs:string"/>
<xs:attribute name="value" type="xs:string"/>
<xs:attribute name="unit" type="xs:string"/>
<xs:attribute name="arrayindex" type="xs:string"/>
</xs:complexType>
<!-- Data list mapping block -->
<xs:complexType name="Collection">
<xs:choice maxOccurs="unbounded">
<xs:element minOccurs="0" name="REFERENCE" type="dm-mapping:Reference"/>
<xs:element minOccurs="0" name="INSTANCE" type="dm-mapping:Instance"/>
<xs:element minOccurs="0" name="ATTRIBUTE" type="dm-mapping:Attribute"/>
<xs:element minOccurs="0" name="COLLECTION" type="dm-mapping:Collection"/>
<xs:element maxOccurs="1" minOccurs="0" name="JOIN" type="dm-mapping:Join"/>
</xs:choice>
<xs:attribute name="dmrole" type="xs:string" use="optional"/>
<xs:attribute name="size" type="xs:string"/>
<xs:attribute name="dmid" type="xs:string"/>
</xs:complexType>
<xs:complexType name="Reference">
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" name="FOREIGN_KEY" type="dm-mapping:ForeignKey"/>
</xs:sequence>
<xs:attribute name="dmrole" type="xs:string" use="optional"/>
<xs:attribute name="sourceref" type="xs:string"/>
<xs:attribute name="dmref" type="xs:string"/>
</xs:complexType>
<!-- Join with another table. -->
<xs:complexType name="Join">
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" name="WHERE" type="dm-mapping:Where"/>
</xs:sequence>
<xs:attribute name="sourceref" type="xs:string"/>
<xs:attribute name="dmref" type="xs:string"/>
</xs:complexType>
<!-- Select table rows with value of the column @ref = @value -->
<xs:complexType name="Where">
<xs:attribute name="foreignkey" type="xs:string"/>
<xs:attribute name="primarykey" type="xs:string"/>
<xs:attribute name="value" type="xs:string"/>
</xs:complexType>
<xs:complexType name="PrimaryKey">
<xs:attribute name="ref" type="xs:string"/>
<xs:attribute name="dmtype" type="xs:string"/>
<xs:attribute name="value" type="xs:string"/>
</xs:complexType>
<xs:complexType name="ForeignKey">
<xs:attribute name="ref" type="xs:string" use="required"/>
</xs:complexType>
</xs:schema>

This XML schema documentation has been generated with DocFlex/XML RE 1.8.0 using DocFlex/XML XSDDoc 2.2.0 template set.
DocFlex/XML RE is a reduced edition of DocFlex/XML, which is a tool for programming and running highly sophisticated documentation and reports generators by the data obtained from any kind of XML files. The actual doc-generators are implemented in the form of special templates that are designed visually using a high quality Template Designer GUI basing on the XML schema (or DTD) files describing the data source XML.
DocFlex/XML XSDDoc is a commercial template application of DocFlex/XML that implements a high-end XML Schema documentation generator with simultaneous support of framed multi-file HTML, single-file HTML and RTF output formats. (More formats are planned in the future).
A commercial license for "DocFlex/XML XSDDoc" will allow you:
  • To configure the generated documentation so much as you want. Thanks to our template technology, it was possible to support more than 300 template parameters (working the same as "options" of an ordinary doc-gen), which will give you an unprecedented control over the generated content!
  • To use certain features disabled in the free mode (such as the full documenting of substitution groups).
  • To enable/disable documenting of the initial, imported, included and redefined XML schemas selectively.
  • To document local element components both globally and locally (similar to attributes).
  • To enable/disable reproducing of namespace prefixes.
  • To format your annotations with XHTML tags and reproduce that formatting both in HTML and RTF output.
  • To insert images in your annotations using XHTML <img> tags (supported both in HTML and RTF output).
  • To use PlainDoc.tpl main template to generate all the XML schema documentation in the form of a single HTML file.
  • To use the same template to generate the incredible quality RTF documentation.
  • To document only selected XML schema components specified by name.
  • To remove this very advertisement text
Once having only such a license, you will be able to run the fully-featured XML schema documentation generator both with DocFlex/XML SDK and with DocFlex/XML RE, which is a reduced free edition containing only the template interpretor / output generator. No other licenses will be required!
But this is not all. In addition to it, a commercial license for DocFlex/XML SDK will allow you to modify the XSDDoc templates themselves as much as you want. You will be able to achieve whatever was impossible to do with the template parameters only. And, of course, you could develop any template applications by your own!
Please note: By purchasing a license for this software, you not only acquire a useful tool, you will also make an important investment in its future development, the result of which you could enjoy later by yourself. Every single your purchase matters and makes a difference for us!
To buy a license, please follow this link: http://www.filigris.com/shop/