XML格式解读
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- 简易元素的定义 -->
<xs:element name="Initialtime" type="xs:decimal"/>
<xs:element name="Finaltime" type="xs:decimal"/>
<xs:element name="Timestep" type="xs:decimal"/>
<xs:element name="TimeUnits" type="xs:string"/>
<xs:element name="max" type="xs:decimal"/>
<xs:element name="min" type="xs:decimal"/>
<xs:element name="equation" type="xs:string"/>
<xs:element name="initialvalue" type="xs:string"/>
<xs:element name="increment" type="xs:decimal"/>
<xs:element name="value" type="xs:decimal"/>
<xs:element name="name">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[^ ]*"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="unit">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[^ ]*"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<!-- 属性的定义 -->
<xs:attribute name="id" type="xs:integer"/>
<!-- 复合元素的定义 -->
<xs:element name="predecessor">
<xs:complexType>
<xs:attribute ref="id" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="succeed">
<xs:complexType>
<xs:attribute ref="id" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="predecessors">
<xs:complexType>
<xs:sequence>
<xs:element ref="predecessor" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="succeeds">
<xs:complexType>
<xs:sequence>
<xs:element ref="succeed" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!--
int id; // *必有
Component_Type type;// *必有
String name;// *必有
String equation;// *必有
String unit;
Vector<Float> hist_value;
float Max;
float Min;
List<Integer> predecessor;
List<Integer> succeed;
String initialvalue;// *必有 -->
<xs:element name="Stock">
<xs:complexType>
<xs:all>
<xs:element ref="name" />
<xs:element ref="equation" />
<xs:element ref="unit" minOccurs="0"/>
<xs:element ref="max" minOccurs="0"/>
<xs:element ref="min" minOccurs="0"/>
<xs:element ref="predecessors" minOccurs="0"/>
<xs:element ref="succeeds" minOccurs="0"/>
<xs:element ref="initialvalue" />
</xs:all>
<xs:attribute ref="id" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="Stocks">
<xs:complexType>
<xs:sequence>
<xs:element ref="Stock" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!--
int id; // *必有
Component_Type type;// *必有
String name;// *必有
String equation;// *必有
String unit;
Vector<Float> hist_value;
float Max;
float Min;
List<Integer> predecessor;
List<Integer> succeed;
float value; //可能是不需要的 -->
<xs:element name="Rate">
<xs:complexType>
<xs:all>
<xs:element ref="name" />
<xs:element ref="equation" />
<xs:element ref="unit" minOccurs="0"/>
<xs:element ref="max" minOccurs="0"/>
<xs:element ref="min" minOccurs="0"/>
<xs:element ref="predecessors" minOccurs="0"/>
<xs:element ref="succeeds" minOccurs="0"/>
<xs:element ref="value" minOccurs="0"/>
</xs:all>
<xs:attribute ref="id" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="Rates">
<xs:complexType>
<xs:sequence>
<xs:element ref="Rate" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!--
int id; // *必有
Component_Type type;// *必有
String name;// *必有
String equation;// *必有
String unit;
Vector<Float> hist_value;
float Max;
float Min;
List<Integer> predecessor;
List<Integer> succeed;
float Increment;
float value; //可能是不需要的 -->
<xs:element name="Variable">
<xs:complexType>
<xs:all>
<xs:element ref="name" />
<xs:element ref="equation" />
<xs:element ref="unit" minOccurs="0"/>
<xs:element ref="max" minOccurs="0"/>
<xs:element ref="min" minOccurs="0"/>
<xs:element ref="predecessors" minOccurs="0"/>
<xs:element ref="succeeds" minOccurs="0"/>
<xs:element ref="increment" minOccurs="0"/>
<xs:element ref="value" minOccurs="0"/>
</xs:all>
<xs:attribute ref="id" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="Variables">
<xs:complexType>
<xs:sequence>
<xs:element ref="Variable" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="setup">
<xs:complexType>
<xs:sequence>
<xs:element ref="Stocks" maxOccurs="1"/>
<xs:element ref="Rates" maxOccurs="1" minOccurs="0"/>
<xs:element ref="Variables" maxOccurs="1" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="execute">
<xs:complexType>
<xs:all>
<xs:element ref="Initialtime"/>
<xs:element ref="Finaltime"/>
<xs:element ref="Timestep"/>
<xs:element ref="TimeUnits" minOccurs="0"/>
</xs:all>
</xs:complexType>
</xs:element>
<xs:element name="simulation">
<xs:complexType>
<xs:all>
<xs:element ref="execute"/>
<xs:element ref="setup"/>
</xs:all>
</xs:complexType>
</xs:element>
</xs:schema>