Files @ dcd49517f90b
Branch filter:

Location: EI/VirtualLeaf/data/leaves/vleaf.xsd

Roeland Merks
Two last corrections:
- Viewport was not written during automatic export of XML files, because Virtualization of XMLSettingsTree did not work due to inconsistent function definition (const vs. non-const)
- Some of the default parameter-file had "Start saving movie frames" switched on by default, dramatically slowing down the example runs. Now it is switched off in all example XML files.

user: Roeland Merks <roeland.merks@cwi.nl>
branch 'default'
changed data/leaves/auxin_growth.xml
changed data/leaves/tutorial5_init.xml
changed src/VirtualLeaf.cpp
changed src/mainbase.cpp
changed src/mainbase.h
<?xml version="1.0" encoding="UTF-8"?>

<!-- 
  $Rev$:  Revision of last commit
  $Author$:  Author of last commit
  $Source$:  Source file
  $Date$:  Date of last commit

  This file is part of the Virtual Leaf.

  The Virtual Leaf is free software: you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation, either version 3 of the License, or
  (at your option) any later version.

  The Virtual Leaf is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with the Virtual Leaf.  If not, see <http://www.gnu.org/licenses/>.

  Copyright 2010 Michael Guravage.
-->

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="vl" targetNamespace="vl"
    elementFormDefault="qualified" attributeFormDefault="unqualified">

    <xs:annotation>
        <xs:documentation> Virtual Leaf </xs:documentation>
    </xs:annotation>

    <!-- A precooked comment element -->
    <xs:element name="comment" type="xs:string"/>



    <!-- An element with a integer value named 'v.' -->
    <xs:complexType name="iValueType">
        <xs:attribute name="v" type="xs:integer"/>
    </xs:complexType>



    <!-- An element with a real value named 'v.' -->
    <xs:complexType name="rValueType">
        <xs:attribute name="v" type="xs:float"/>
    </xs:complexType>



    <!-- Leaf is the root element -->
    <xs:element name="leaf">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="comment" minOccurs="0"/>
                <xs:element name="parameter" type="ParameterType" minOccurs="0"/>
                <xs:element name="code" type="CodeType" minOccurs="0" maxOccurs="unbounded"/>
                <xs:element name="nodes" type="NodesType" minOccurs="0"/>
                <xs:element name="cells" type="CellsType" minOccurs="0"/>
                <xs:element name="walls" type="WallsType" minOccurs="0"/>
                <xs:element name="nodesets" type="NodesetsType" minOccurs="0"/>
                <xs:element name="settings" type="SettingsType" minOccurs="0"/>
            </xs:sequence>
            <xs:attributeGroup ref="leafAttrubutes"/>
        </xs:complexType>
    </xs:element>

    <!-- List of leaf attributes -->
    <xs:attributeGroup name="leafAttrubutes">
        <xs:attribute name="uri" type="xs:anyURI"/>
        <xs:attribute name="date" type="xs:dateTime"/>
        <xs:attribute name="simtime" type="xs:integer"/>
    </xs:attributeGroup>



    <!-- Parameters -->
    <xs:complexType name="ParameterType">
        <xs:sequence>
            <xs:element name="comment" minOccurs="0"/>
            <xs:element name="par" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="valarray" minOccurs="0">
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="val" type="rValueType" maxOccurs="unbounded"/>
                                </xs:sequence>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                    <xs:attribute name="name" type="xs:string" use="required"/>
                    <xs:attribute name="val" type="xs:string"/>
                    <xs:anyAttribute processContents="skip"/>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>


    <!-- Code -->
    <xs:complexType name="CodeType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="name" type="xs:string" use="required"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>



    <!-- Nodes -->
    <xs:complexType name="NodesType">
        <xs:sequence>
            <xs:element name="comment" minOccurs="0"/>
            <xs:element name="node" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:attributeGroup ref="nodeAttributes"/>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
        <xs:attributeGroup ref="nodesAttributes"/>
    </xs:complexType>

    <!-- A list of node attributes -->
    <xs:attributeGroup name="nodeAttributes">
        <xs:attribute name="x" type="xs:float" use="required"/>
        <xs:attribute name="y" type="xs:float" use="required"/>
        <xs:attribute name="fixed" type="xs:boolean"/>
        <xs:attribute name="boundary" type="xs:boolean"/>
        <xs:attribute name="sam" type="xs:boolean"/>
    </xs:attributeGroup>

    <!-- A list of nodes attributes -->
    <xs:attributeGroup name="nodesAttributes">
        <xs:attribute name="n" type="xs:integer" use="required"/>
        <xs:attribute name="target_length" type="xs:float" use="required"/>
    </xs:attributeGroup>



    <!-- Cells -->
    <xs:complexType name="CellsType">
        <xs:sequence>
            <xs:element name="comment" minOccurs="0"/>
            <xs:element name="cell" type="CellType" maxOccurs="unbounded"/>
            <xs:element name="boundary_polygon" type="CellType"/>
        </xs:sequence>
        <xs:attributeGroup ref="cellsAttributes"/>
    </xs:complexType>

    <!-- A list of cells attributes and their types -->
    <xs:attributeGroup name="cellsAttributes">
        <xs:attribute name="n" type="xs:integer" use="required"/>
        <xs:attribute name="offsetx" type="xs:float"/>
        <xs:attribute name="offsety" type="xs:float"/>
        <xs:attribute name="magnification" type="xs:float"/>
        <xs:attribute name="base_area" type="xs:float" use="required"/>
        <xs:attribute name="nchem" type="xs:integer" use="required"/>
    </xs:attributeGroup>

    <!-- Cell -->
    <xs:complexType name="CellType">
        <xs:sequence>
            <xs:element name="node" type="CellNodeType"  minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="wall" type="CellWallType"  minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="chem" type="CellChemType" minOccurs="0"/>
        </xs:sequence>
        <xs:attributeGroup ref="cellAttributes"/>
    </xs:complexType>

    <!-- A list of cell attributes and their types. -->
    <xs:attributeGroup name="cellAttributes">
        <xs:attribute name="index" type="xs:integer" use="required"/>
        <xs:attribute name="area" type="xs:float"/>
        <xs:attribute name="target_area" type="xs:float" use="required"/>
        <xs:attribute name="target_length" type="xs:float"/>
        <xs:attribute name="lambda_celllength" type="xs:float"/>
        <xs:attribute name="stiffness" type="xs:float"/>
        <xs:attribute name="fixed" type="xs:boolean"/>
        <xs:attribute name="pin_fixed" type="xs:boolean"/>
        <xs:attribute name="at_boundary" type="xs:boolean"/>
        <xs:attribute name="dead" type="xs:boolean"/>
        <xs:attribute name="source" type="xs:boolean"/>
        <xs:attribute name="boundary" type="xs:boolean"/>
        <xs:attribute name="div_counter" type="xs:integer"/>
        <xs:attribute name="cell_type" type="xs:integer"/>
    </xs:attributeGroup>

    <!-- Cell Node -->
    <xs:complexType name="CellNodeType">
        <xs:attribute name="n" type="xs:integer" use="required"/>
    </xs:complexType>

    <!-- Cell Wall -->
    <xs:complexType name="CellWallType">
        <xs:attribute name="w" type="xs:integer" use="required"/>
    </xs:complexType>

    <!-- Cell Chemical -->
    <xs:complexType name="CellChemType">
        <xs:sequence>
            <xs:element name="val" type="rValueType"  minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
        <xs:attribute name="n" type="xs:integer" use="required"/>
    </xs:complexType>



    <!-- Walls  -->
    <xs:complexType name="WallsType">
        <xs:sequence>
            <xs:element name="comment" minOccurs="0"/>
            <xs:element name="wall" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="transporter1" minOccurs="0">
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="val" type="rValueType" minOccurs="0" maxOccurs="unbounded"/>
                                </xs:sequence>
                            </xs:complexType>
                        </xs:element>
                        <xs:element name="transporter2" minOccurs="0">
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="val" type="rValueType" minOccurs="0" maxOccurs="unbounded"/>
                                </xs:sequence>
                            </xs:complexType>
                        </xs:element>
                        <xs:element name="apoplast" minOccurs="0">
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="val" type="rValueType" minOccurs="0" maxOccurs="unbounded"/>
                                </xs:sequence>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                    <xs:attribute name="index" type="xs:integer" use="required"/>
                    <xs:attribute name="c1" type="xs:integer" use="required"/>
                    <xs:attribute name="c2" type="xs:integer" use="required"/>
                    <xs:attribute name="n1" type="xs:integer" use="required"/>
                    <xs:attribute name="n2" type="xs:integer" use="required"/>
                    <xs:attribute name="length" type="xs:float"/>
                    <xs:attribute name="viz_flux" type="xs:integer"/>
                    <xs:attribute name="wall_type">
                        <xs:simpleType>
                            <xs:restriction base="xs:normalizedString">
                                <xs:enumeration value="normal"/>
                                <xs:enumeration value="aux_source"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:attribute>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
        <xs:attribute name="n" type="xs:integer" use="required"/>
    </xs:complexType>



    <!-- Nodesets -->
    <xs:complexType name="NodesetsType">
        <xs:attribute name="n" type="xs:integer" use="required"/>
    </xs:complexType>



    <!-- Settings -->
    <xs:complexType name="SettingsType">
        <xs:sequence>
            <xs:element name="comment" minOccurs="0"/>
            <xs:element name="setting" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:attribute name="name" type="xs:string" use="required"/>
                    <xs:attribute name="val" type="xs:boolean" use="required"/>
                    <xs:anyAttribute processContents="skip"/>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>

</xs:schema>