The user interface

We can see:

The tool bar contain (from left to right):

Write a XML Schema

XMLSchema is a W3C recommendation. If you already know XMLSchema you can pass to the next item.

A XMLSchema describe some constraints on a XML file. We say that a XML file is valid if the file follows the constraints described in a XMLSchema file.

For example:
<?xml version="1.0"?>
  <simulationName>Simu 1</simulationName>
	<branch type="0" value="3" />
	<branch type="1" value="5" />
	<branch type="6" value="29" />

Could have for XSD :

<?xml version="1.0"?>
<xs:schema xmlns:xs="" elementFormDefault="qualified">

<xs:element name="parameters">      <!-- XML can contain an element named "parameters" -->
  <xs:complexType>                  <!-- parameters can contain other elements -->
	<xs:sequence>                   <!-- It contain an ordered list of elements -->
	  <xs:element name="simulationName" type="xs:string"/>
	  <xs:element name="cycle" type="xs:int"/>
	  <xs:element name="environmentFactor" type="xs:double"/>
	  <xs:element ref="elements" /> <!-- I decided to declare this element later -->
	</xs:sequence>                  <!-- I could have done it here. -->
<xs:element name="elements">       <!-- elements is a referenced node -->
	<xs:sequence>         <!-- minOccurs and maxOccurs specify the number of time a node can append -->
	  <xs:element name="branch" minOccurs="2" maxOccurs="unbounded">
		<xs:simpleType>   <!-- A simple type cannot contain other elements -->
		  <xs:attribute name="type" type="xs:int" /> <!-- But it can contain attributes -->
		  <xs:attribute name="value" type="xs:int" />

There is a lot of documentation on XMLSchema. for example: ; ;

Compatibility with W3C XMLSchema

Unfortunately exxEditor does not follow all the XMLSchema recommendation.

Non supported tags

The non supported tags and their offspring are ignored.

Partially supported tags

The general structure of the XSD is supported. The "element", "attribute", "simpleType", "complexType", "sequence", et "choice" tags are supported. But there are some limitations :

The "restriction" and "list" are supported, but not very well tested, do not hesitate to report bugs.

Data type

The numeric data types (int, double etc...) are supported by the application. But the minimum, maximum and precision are not always respected.

Every non supported type are interpreted as basic character string.

Two non standard type my be used: "file" and "color". To indicate that a node is a "file" or a "color" you have to use the XSD annotation system: <xs:annotation><xs:appInfo><restriction type="file" /></xs:annotation></xs:appInfo>

General structure

The XSD file must describe a XML file that have only one root tag containing all the other tags.


By using the "documentation" tag, you can add some help messages in exxEditor. the first line is used as a "tool tips" when the mouse is under a parameter. All the content of the "documentation" tag is visible in the integrated help system. To access this help system, you have to right-clic on a parameter and select "help". The help message can be formated in simplified html.


The default behavior is to show only one tab. You can activate the tab managment by using the XSD annotation system.

You have to use: <xs:annotation><xs:appInfo><container recursive="-1" /></xs:annotation></xs:appInfo> under an "element" tag. It define a tab containing all the sub-tree. The tab name will be the current element name. "recursive=-1" is used when we want to select all the sub-tree. To select only the simple type element we would have used the value "1". "Recursive" indicate the deepness of the tree we want to show.


We may want to show more human comprehensive names that the ones in the XML file. We can use for that the XSD annotation system, and add to an element or an attribute:

<xs:annotation><xs:appInfo><humanName>This is a name</humanName></xs:annotation></xs:appInfo>


Do not hesitate to contribute: contribuer ; contacts.

For a technical documentation go to: Reference.

ExxEditor — License : AGPL v3 or more, created from