SiLeBAT/FSK-Lab

View on GitHub
de.bund.bfr.knime.foodprocess.pcml/src/de/bund/bfr/knime/pcml/schema/pcml-1-0.xsd

Summary

Maintainability
Test Coverage
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xs:schema xmlns="http://www.bfr.bund.de/PCML-1_0" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.bfr.bund.de/PCML-1_0">
    <xs:element name="PCML">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="Header"/>
                <xs:element maxOccurs="1" minOccurs="0" ref="ProcessChain"/>
                <xs:element maxOccurs="1" minOccurs="0" ref="ProcessChainData"/>
                <xs:element maxOccurs="unbounded" minOccurs="0" ref="Extension"/>
            </xs:sequence>
            <xs:attribute name="version" type="xs:string" use="required"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="Header">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="unbounded" minOccurs="0" ref="Extension"/>
                <xs:element minOccurs="0" ref="Application"/>
                <xs:element maxOccurs="unbounded" minOccurs="0" ref="Annotation"/>
                <xs:element minOccurs="0" ref="Timestamp"/>
            </xs:sequence>
            <xs:attribute name="copyright" type="xs:string" use="required"/>
            <xs:attribute name="description" type="xs:string"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="Application">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="unbounded" minOccurs="0" ref="Extension"/>
            </xs:sequence>
            <xs:attribute name="name" type="xs:string" use="required"/>
            <xs:attribute name="version" type="xs:string"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="Annotation">
        <xs:complexType mixed="true">
            <xs:sequence>
                <xs:element maxOccurs="unbounded" minOccurs="0" ref="Extension"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="Timestamp">
        <xs:complexType mixed="true">
            <xs:sequence>
                <xs:element maxOccurs="unbounded" minOccurs="0" ref="Extension"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    
    <xs:complexType name="NameAndDatabaseId">
        <xs:attribute name="name" type="xs:string" use="required"/>
        <xs:attribute name="db-id" type="xs:int"/>
    </xs:complexType>
    
    <xs:element name="ProcessChain">
        <xs:complexType>
            <xs:sequence maxOccurs="unbounded" minOccurs="0">
                <xs:element ref="ProcessNode"/>
                <xs:element maxOccurs="unbounded" minOccurs="0" ref="Extension"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="ProcessNode">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Process" type="NameAndDatabaseId"/>
                <xs:element name="Parameters" type="ProcessParameters"/>
                <xs:element maxOccurs="4" minOccurs="0" ref="Inport"/>
                <xs:element maxOccurs="4" minOccurs="1" ref="Outport"/>
            </xs:sequence>
            <xs:attribute name="id" type="xs:string" use="required"/>
            <xs:attribute name="type" type="ProcessNodeType"/>
        </xs:complexType>
    </xs:element>

    <xs:simpleType name="ProcessNodeType">
        <xs:restriction base="xs:string">
            <xs:enumeration value="processing"/>
            <xs:enumeration value="admixing"/>
            <xs:enumeration value="contaminating"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:complexType name="ProcessParameters">
        <xs:sequence>
            <xs:element maxOccurs="unbounded" minOccurs="0" ref="Extension"/>
        </xs:sequence>
        <xs:attribute name="capacity" type="xs:double"/>
        <xs:attribute name="duration" type="xs:double" use="required"/>
        <xs:attribute name="numberComputations" type="xs:int"/>
        <xs:attribute name="temperature" type="xs:string"/>
        <xs:attribute name="pH" type="xs:string"/>
        <xs:attribute name="aw" type="xs:string"/>
        <xs:attribute name="pressure" type="xs:string"/>
    </xs:complexType>
    <xs:element name="Inport">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="OutportRef"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="OutportRef">
        <xs:complexType>
            <!-- <xs:sequence> -->
            <!-- </xs:sequence> -->
            <xs:attribute name="ref" type="xs:string" use="required"/>
            <xs:attribute name="out-index" type="xs:int" use="required"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="Outport">
        <xs:complexType>
            <xs:sequence>
                <!-- Für Neudefinition einer Matrix -->
                <xs:element maxOccurs="1" minOccurs="0" name="Matrix" type="NameAndDatabaseId"/>
                <xs:element maxOccurs="1" minOccurs="0" ref="MatrixRecipe"/>
                <xs:element maxOccurs="1" minOccurs="0" ref="AgentRecipe"/>
                <xs:element maxOccurs="unbounded" minOccurs="0" ref="Extension"/>
            </xs:sequence>
            <xs:attribute name="volume" type="xs:string" use="required"/>
            <xs:attribute name="temperature" type="xs:string"/>
            <xs:attribute name="pH" type="xs:string"/>
            <xs:attribute name="aw" type="xs:string"/>
            <xs:attribute name="pressure" type="xs:string"/>
            <xs:attribute name="flowSpeed" type="xs:string"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="MatrixRecipe">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="unbounded" minOccurs="1" ref="MatrixIncredient"/>
                <xs:element maxOccurs="unbounded" minOccurs="0" ref="Extension"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="MatrixIncredient">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Matrix" type="NameAndDatabaseId"/>
            </xs:sequence>
            <xs:attribute name="fraction" type="xs:double" use="required"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="AgentRecipe">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="unbounded" minOccurs="1" ref="AgentIncredient"/>
                <xs:element maxOccurs="unbounded" minOccurs="0" ref="Extension"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="AgentIncredient">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Agent" type="NameAndDatabaseId"/>
            </xs:sequence>
            <xs:attribute name="fraction" type="xs:double"/>
            <xs:attribute name="unit" type="xs:string"/>
            <xs:attribute name="object" type="xs:string"/>
        </xs:complexType>
    </xs:element>

    <xs:element name="Extension">
        <xs:complexType>
            <xs:complexContent mixed="true">
                <xs:restriction base="xs:anyType">
                    <xs:sequence>
                        <xs:any maxOccurs="unbounded" minOccurs="0" processContents="skip"/>
                    </xs:sequence>
                    <xs:attribute name="extender" type="xs:string" use="optional"/>
                    <xs:attribute name="name" type="xs:string" use="optional"/>
                    <xs:attribute name="value" type="xs:string" use="optional"/>
                </xs:restriction>
            </xs:complexContent>
        </xs:complexType>
    </xs:element>

    <xs:element name="ProcessChainData">
        <xs:complexType>
            <xs:sequence maxOccurs="unbounded" minOccurs="0">
                <xs:element ref="ProcessData"/>
                <xs:element maxOccurs="unbounded" minOccurs="0" ref="Extension"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="ProcessData">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="DataTable"/>
            </xs:sequence>
            <!-- Reference to the ProcessNode element. -->
            <xs:attribute name="ref" type="xs:string" use="required"/>
            <xs:attribute name="time" type="xs:double"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="DataTable">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="unbounded" minOccurs="0" ref="Extension"/>
                <xs:element ref="ColumnList"/>
                <xs:choice>
                    <xs:element ref="TableLocator"/>
                    <xs:element ref="InlineTable"/>
                </xs:choice>
            </xs:sequence>
            <xs:attribute name="name" type="xs:string"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="ColumnList">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="unbounded" minOccurs="1" ref="Column"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="Column">
        <xs:complexType>
            <xs:sequence>
                <xs:choice>
                    <xs:element name="Matrix" type="NameAndDatabaseId"/>
                    <xs:element name="Agent" type="NameAndDatabaseId"/>
                    <xs:element name="ColumnId" type="NameAndDatabaseId"/>
                </xs:choice>
            </xs:sequence>
            <xs:attribute name="name" type="xs:string"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="TableLocator">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="unbounded" minOccurs="0" ref="Extension"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="InlineTable">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="unbounded" minOccurs="0" ref="Extension"/>
                <xs:element maxOccurs="unbounded" minOccurs="0" ref="row"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="row">
        <xs:complexType>
            <xs:complexContent mixed="true">
                <xs:restriction base="xs:anyType">
                    <xs:sequence>
                        <xs:any maxOccurs="unbounded" minOccurs="1" processContents="skip"/>
                    </xs:sequence>
                </xs:restriction>
            </xs:complexContent>
        </xs:complexType>
    </xs:element>
</xs:schema>