|
|
|
|
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>
|