About...
   OSML Elements
   Core library
XML Schema
Root Element
  osml
Integrity Element
  Secure
Declaration Elements
  Semantics
  Symbol
  Argument
Construction Elements
  Math
  Definition
  Apply
  Function
  Constant
  Sequence
  Link
  Element
  Number
  Sep
Meta-Data Element
  Annotation
   Examples
 
 
Version 1.0
Optical Spectroscopy Markup Language

 OSML Schema definition


XML-schema for the Optical Spectroscopy Markup Language : OSML.xsd.


<?xml version="1.0" encoding="UTF-8"?>

<!-- Schema for the Optical Spectroscopy Markup Language (OSML) -->
<!-- Domingos de Sousa Meneses (domingos.desousa-meneses@wanadoo.fr) -->
<!-- 7-April-03  Initial version -->

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

 <xsd:annotation>
  <xsd:documentation xml:lang="en"> Schema definition for the Optical Spectroscopy Markup Language </xsd:documentation>
 </xsd:annotation>

 
 <xsd:element name="osml">
  <xsd:annotation>
   <xsd:documentation> Root element of the Optical Spectroscopy Markup Language </xsd:documentation>
  </xsd:annotation>
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element name="secure" type="SecureKeyType" minOccurs="0"/>
    <xsd:element name="annotation" type="AnnotationType" minOccurs="0" maxOccurs="unbounded"/>
    <xsd:element name="semantics" type="SemanticType" minOccurs="0"/>
    <xsd:element name="math" type="MathType" minOccurs="0"/>
   </xsd:sequence>
   <xsd:attribute name="version" type="xsd:string" use="required"/>
  </xsd:complexType>
 </xsd:element>

 
 <xsd:complexType name="AnnotationType">
  <xsd:annotation>
   <xsd:documentation> Type for storing meta-data : documentation, application info,... </xsd:documentation>
  </xsd:annotation>
  <xsd:simpleContent>
   <xsd:extension base="xsd:string">
    <xsd:attribute name="content" type="xsd:token" use="optional"/>
    <xsd:attribute name="group" type="xsd:token" use="optional"/>
    <xsd:attribute name="name" type="xsd:token" use="optional"/>
   </xsd:extension>
  </xsd:simpleContent>
 </xsd:complexType>

 
 <xsd:simpleType name="HexBinaryList">
  <xsd:list itemType="xsd:hexBinary"/>
 </xsd:simpleType>

 <xsd:simpleType name="HexBinaryKey">
  <xsd:restriction base="HexBinaryList">
   <xsd:length value="8"/>
  </xsd:restriction>
 </xsd:simpleType>
 
 <xsd:complexType name="SecureKeyType">
  <xsd:annotation>
   <xsd:documentation> Type for testing the integrity of a document </xsd:documentation>
  </xsd:annotation>
  <xsd:simpleContent>
   <xsd:extension base="HexBinaryKey">
    <xsd:attribute name="algorithm" use="required" fixed="SHA-256"/>
   </xsd:extension>
  </xsd:simpleContent>
 </xsd:complexType>

 
 <xsd:complexType name="SemanticType">
  <xsd:annotation>
   <xsd:documentation> OSML : Semantics element type </xsd:documentation>
  </xsd:annotation>
  <xsd:sequence>
   <xsd:element name="symbol" type="SymbolType" maxOccurs="unbounded"/>
  </xsd:sequence>
 </xsd:complexType>

 
 <xsd:complexType name="ArgumentType">
  <xsd:annotation>
   <xsd:documentation> OSML : Argument element type </xsd:documentation>
  </xsd:annotation>
  <xsd:sequence>
   <xsd:element name="annotation" type="AnnotationType" minOccurs="0" maxOccurs="unbounded"/>
   <xsd:element name="number" type="NumberType"/>
  </xsd:sequence>
 </xsd:complexType>


 
 <xsd:simpleType name="symbolContent">
  <xsd:annotation>
   <xsd:documentation> A utility type, not for public use </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="xsd:NMTOKEN">
   <xsd:enumeration value="function"/>
   <xsd:enumeration value="constant"/>
   <xsd:enumeration value="sequence"/>
   <xsd:enumeration value="element"/>
  </xsd:restriction>
 </xsd:simpleType>

 <xsd:simpleType name="symbolEncoding">
  <xsd:annotation>
   <xsd:documentation> A utility type, not for public use </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="xsd:NMTOKEN">
   <xsd:enumeration value="OSML"/>
   <xsd:enumeration value="formula"/>
   <xsd:enumeration value="external"/>
  </xsd:restriction>
 </xsd:simpleType>

 <xsd:group name="FunctionDeclaration">
  <xsd:sequence>
    <xsd:element name="argument" type="ArgumentType" minOccurs="0" maxOccurs="unbounded"/>
    <xsd:element name="definition" type="DefinitionType" minOccurs="0" maxOccurs="unbounded"/>
  </xsd:sequence>
 </xsd:group>

 <xsd:complexType name="SymbolType">
  <xsd:annotation>
   <xsd:documentation> OSML : Symbol element type </xsd:documentation>
  </xsd:annotation>
  <xsd:sequence>
   <xsd:element name="annotation" type="AnnotationType" minOccurs="0" maxOccurs="unbounded"/>
   <xsd:choice>
    <xsd:element name="number" type="NumberType"/>
    <xsd:element name="formula" type="xsd:string"/>
    <xsd:group   ref="FunctionDeclaration"/>
   </xsd:choice>
  </xsd:sequence>
  <xsd:attribute name="name" type="xsd:string" use="required"/>
  <xsd:attribute name="type" type="symbolContent" use="required"/>
  <xsd:attribute name="encoding" type="xsd:string" use="optional" default="OSML"/>
 </xsd:complexType>

 
 <xsd:complexType name="IdentificationType">
  <xsd:annotation>
   <xsd:documentation>
     This complex type is the definition of the following OSML elements:
       - function
       - constant
       - sequence
       - element
   </xsd:documentation>
  </xsd:annotation>
  <xsd:attribute name="name" type="xsd:string"/>
  <xsd:attribute name="source" type="xsd:string"/>
 </xsd:complexType>

 
 <xsd:complexType name="ApplyType">
  <xsd:annotation>
   <xsd:documentation> OSML : Apply element type </xsd:documentation>
  </xsd:annotation>
  <xsd:sequence>
   <xsd:choice>
    <xsd:element name="function" type="IdentificationType"/>
    <xsd:element name="sequence" type="IdentificationType"/>
    <xsd:element name="element" type="IdentificationType"/>
   </xsd:choice>
   <xsd:choice minOccurs="0" maxOccurs="unbounded">
    <xsd:element name="function" type="IdentificationType"/>
    <xsd:element name="constant" type="IdentificationType"/>
    <xsd:element name="element" type="IdentificationType"/>
    <xsd:element name="number" type="NumberType"/>
    <xsd:element name="link" type="xsd:token"/>
    <xsd:element name="apply" type="ApplyType"/>
   </xsd:choice>
  </xsd:sequence>
 </xsd:complexType>

 
 <xsd:complexType name="MathType">
  <xsd:annotation>
   <xsd:documentation> OSML : Math element type </xsd:documentation>
  </xsd:annotation>
  <xsd:sequence>
   <xsd:element name="annotation" type="AnnotationType" minOccurs="0" maxOccurs="unbounded"/>
   <xsd:element name="definition" type="DefinitionType" maxOccurs="unbounded"/>
  </xsd:sequence>
 </xsd:complexType>

 
 <xsd:complexType name="DefinitionType">
  <xsd:annotation>
   <xsd:documentation> OSML : Definition element type </xsd:documentation>
  </xsd:annotation>
  <xsd:sequence>
   <xsd:element name="annotation" type="AnnotationType" minOccurs="0" maxOccurs="unbounded"/>
   <xsd:choice minOccurs="0">
    <xsd:element name="number" type="NumberType"/>
    <xsd:element name="apply" type="ApplyType"/>
   </xsd:choice>
  </xsd:sequence>
  <xsd:attribute name="name" type="xsd:token" use="required"/>
 </xsd:complexType>

 
 <xsd:simpleType name="numberChoice">
  <xsd:annotation>
   <xsd:documentation> A utility type, not for public use </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="xsd:NMTOKEN">
   <xsd:enumeration value="boolean"/>
   <xsd:enumeration value="integer"/>
   <xsd:enumeration value="rational"/>
   <xsd:enumeration value="real"/>
   <xsd:enumeration value="complex"/>
  </xsd:restriction>
 </xsd:simpleType>

 <xsd:simpleType name="numberEncoding">
  <xsd:annotation>
   <xsd:documentation>
   A utility type, not for public use</xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="xsd:NMTOKEN">
   <xsd:enumeration value="DECIMAL"/>
   <xsd:enumeration value="E-NOTATION"/>
   <xsd:enumeration value="FLOAT32"/>
   <xsd:enumeration value="FLOAT64"/>
  </xsd:restriction>
 </xsd:simpleType>

 
 <xsd:complexType name="numberType" mixed="true">
  <xsd:sequence>
   <xsd:element name="sep" minOccurs="0">
    <xsd:complexType>
    </xsd:complexType>
   </xsd:element>
  </xsd:sequence>
  <xsd:attribute name="type" type="numberChoice" use="required" default="real"/>
  <xsd:attribute name="encoding" type="numberEncoding" use="optional" default="E-NOTATION"/>
 </xsd:complexType>
</xsd:schema>