XES - Schema Diagram

packageDec

	<xs:element name="package">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="classDef" type="classDefType"/>
<xs:element name="importList">
<xs:complexType>
<xs:sequence>
<xs:element name="import" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="name" type="xs:string" form="unqualified"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
type name type
attribute name string
element text classDec
attribute meta string

classDec

<xs:complexType name="classDefType">
<xs:sequence>
<xs:element name="method" type="methodType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="classDef" type="classDefType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="variable" type="variableType"/>
<xs:element name="tags" type="tagList"/>
<xs:element name="meta" type="xs:string"/>
<xs:element name="comment" type="commentType"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="implements" type="xs:string"/>
<xs:attribute name="extends" type="xs:string"/>
<xs:attribute name="public" type="xs:boolean"/>
<xs:attribute name="private" type="xs:boolean"/>
<xs:attribute name="protected" type="xs:boolean"/>
<xs:attribute name="static" type="xs:boolean"/>
<xs:attribute name="abstract" type="xs:boolean"/>
<xs:attribute name="interface" type="xs:boolean"/>
</xs:complexType>
type name type
element methodDec methodDec
element parameterList parameterList
element import importList
attribute name string
attribute public string
attribute extends string
attribute abstact boolean
attribute meta string
element tags tagList

primativeType

<xs:simpleType name="primativeType">
   <xs:restriction base="xs:string">
   <xs:enumeration value="boolean"/>
   <xs:enumeration value="byte"/>
   <xs:enumeration value="char"/>
   <xs:enumeration value="double"/>
   <xs:enumeration value="float"/>
   <xs:enumeration value="short"/>
   <xs:enumeration value="int"/>
   <xs:enumeration value="long"/>
   <xs:enumeration value="void"/>
   <xs:enumeration value="String"/>
   </xs:restriction>
   </xs:simpleType>
   
   <xs:complexType name="dataType">
   <xs:sequence>
   <xs:element name="primative" type="primativeType"/>
   </xs:sequence>
   <xs:attribute name="className" type="xs:string"/>
   <xs:attribute name="array" type="xs:boolean"/>
   </xs:complexType>
type name type
enumeration boolean  
enumeration byte  
enumeration char  
enumeration double  
enumeration float  
enumeration short  
enumeration int  
enumeration long  
enumeration void  
enumeration String  

block

	<xs:complexType name="blockType">
<xs:sequence minOccurs="2" maxOccurs="unbounded">
<xs:element name="assign" type="assignType"/>
<xs:element name="call" type="callType"/>
<xs:element name="comment" type="commentType"/>
<xs:element name="if" type="ifType"/>
<xs:element name="loop" type="loopType"/>
<xs:element name="switch" type="switchType"/>
<xs:element name="try" type="tryType"/>
<xs:element name="break" type="breakType"/>
<xs:element name="return" type="returnType"/>
<xs:element name="block" type="blockType"/>
</xs:sequence>
</xs:complexType>
type name type
element if if
element for for
element while while
element do do
element switch switch
element try try
element break break
element variable variable
element block block

if

<xs:complexType name="ifType">
<xs:sequence>
<xs:element name="condition" type="booleanExpressionType"/>
<xs:element name="block" type="blockType"/>
<xs:element name="elseBlock" type="blockType" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="booleanExpressionType">
<xs:sequence>
<xs:element name="constant" type="constantType"/>
<xs:element name="call" type="callType"/>
<xs:element name="binaryOp" type="binaryOpType"/>
<xs:element name="unaryOp" type="unaryOpType"/>
<xs:element name="comment" type="commentType"/>
</xs:sequence>
</xs:complexType>
type name type
element condition booleanExpression
element block block
element elseBlock block

loop

<xs:complexType name="loopType">
<xs:sequence>
<xs:element name="preCondition" type="booleanExpressionType"/>
<xs:element name="postCondition" type="booleanExpressionType"/>
<xs:element name="initialiser" type="blockType"/>
<xs:element name="step" type="blockType"/>
<xs:element name="block" type="blockType"/>
</xs:sequence>
<xs:attribute name="code" type="loopSubType"/>
</xs:complexType>
<xs:simpleType name="loopSubType">
<xs:restriction base="xs:string">
<xs:enumeration value="for"/>
<xs:enumeration value="do"/>
<xs:enumeration value="while"/>
</xs:restriction>
</xs:simpleType>
type name type
element test booleanExpression
element block block
element assignment assignment
element step assignment

switch

<xs:complexType name="switchType">
<xs:sequence>
<xs:element name="variable" type="variableType"/>
<xs:element name="case" type="caseType"/>
<xs:element name="default" type="caseType"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="caseType">
<xs:sequence>
<xs:element name="constant" type="constantType"/>
<xs:element name="block" type="blockType"/>
</xs:sequence>
</xs:complexType>
type name type
element case case
element default default

try

may contain multiple catch blocks for different exceptions

<xs:complexType name="tryType">
<xs:sequence>
<xs:element name="block" type="blockType"/>
<xs:element name="catchBlock" type="catchBlockType"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="catchBlockType">
<xs:sequence>
<xs:element name="block" type="blockType"/>
<xs:element name="exception" type="xs:string"/>
</xs:sequence>
</xs:complexType>
type name type
element block block
element catchBlock catchBlock

methodDec

	<xs:complexType name="methodType">
<xs:sequence>
<xs:element name="parameterList" type="parameterListType"/>
<xs:element name="tags" type="tagList"/>
<xs:element name="meta" type="xs:string"/>
<xs:element name="variable" type="variableType"/>
<xs:element name="call" type="callType"/>
<xs:element name="comment" type="commentType"/>
<xs:element name="if" type="ifType"/>
<xs:element name="loop" type="loopType"/>
<xs:element name="switch" type="switchType"/>
<xs:element name="try" type="tryType"/>
<xs:element name="break" type="breakType"/>
<xs:element name="return" type="returnType"/>
<xs:element name="block" type="blockType"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="type" type="xs:string"/>
<xs:attribute name="public" type="xs:boolean"/>
<xs:attribute name="private" type="xs:boolean"/>
<xs:attribute name="protected" type="xs:boolean"/>
<xs:attribute name="static" type="xs:boolean"/>
<xs:attribute name="abstract" type="xs:boolean"/>
<xs:attribute name="native" type="xs:boolean"/>
<xs:attribute name="synchonised" type="xs:boolean"/>
<xs:attribute name="final" type="xs:boolean"/>
</xs:complexType>
<xs:complexType name="parameterListType">
<xs:sequence>
<xs:element name="comment" type="commentType"/>
<xs:element name="parameter" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="comment" type="commentType"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="type" type="xs:string"/>
<xs:attribute name="tagType" type="xs:string"/>
<xs:attribute name="tagValue" type="xs:string"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
type name type
element name string
element parameterList parameterList
element returnType dataType
element block block
attribute native boolean
attribute synchonised boolean
attribute final boolean
attribute public boolean
attribute protected boolean
attribute private boolean

break

<xs:complexType name="breakType">
<xs:sequence>
<xs:element name="comment" type="commentType"/>
</xs:sequence>
<xs:attribute name="type" type="breakSubType"/>
</xs:complexType>
<xs:simpleType name="breakSubType">
<xs:restriction base="xs:string">
<xs:enumeration value="break"/>
<xs:enumeration value="continue"/>
</xs:restriction>
</xs:simpleType>
type name type

return

<xs:complexType name="returnType">
   <xs:sequence>
   <xs:element name="variable" type="variableType"/>
   <xs:element name="constant" type="constantType"/>
   <xs:element name="call" type="callType"/>
   <xs:element name="binaryOp" type="binaryOpType"/>
   <xs:element name="unaryOp" type="unaryOpType"/>
   <xs:element name="comment" type="commentType"/>
   </xs:sequence>
</xs:complexType>
type name type

 

comment

<xs:complexType name="commentType" mixed="true">
   <xs:sequence minOccurs="0" maxOccurs="unbounded">
   <xs:any processContents="lax"/>
   </xs:sequence>
   <xs:anyAttribute namespace="##other" processContents="lax"/>
   </xs:complexType>
type name type
attribute name string

dataType

used to declare data type, which may be primative such as "int" or "float" or system or user defined class.

<xs:simpleType name="primativeType">
   <xs:restriction base="xs:string">
   <xs:enumeration value="boolean"/>
   <xs:enumeration value="byte"/>
   <xs:enumeration value="char"/>
   <xs:enumeration value="double"/>
   <xs:enumeration value="float"/>
   <xs:enumeration value="short"/>
   <xs:enumeration value="int"/>
   <xs:enumeration value="long"/>
   <xs:enumeration value="void"/>
   <xs:enumeration value="String"/>
   </xs:restriction>
   </xs:simpleType>
   
   <xs:complexType name="dataType">
   <xs:sequence>
   <xs:element name="primative" type="primativeType"/>
   </xs:sequence>
   <xs:attribute name="className" type="xs:string"/>
   <xs:attribute name="array" type="xs:boolean"/>
   </xs:complexType>
type name type
element primative primativeType
attribute className className
attribute array boolean

parameterList

type name type
element parameter parameter

parameter

type name type
element type dataType
attribute name string
attribute tagType string
attribute tagValue string

variable

<xs:complexType name="variableType">
<xs:sequence>
<xs:element name="comment" type="commentType"/>
<xs:element name="assign" type="assignType"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="type" type="xs:string"/>
<xs:attribute name="public" type="xs:boolean"/>
<xs:attribute name="private" type="xs:boolean"/>
<xs:attribute name="protected" type="xs:boolean"/>
<xs:attribute name="static" type="xs:boolean"/>
<xs:attribute name="primative" type="xs:boolean"/>
<xs:attribute name="array" type="xs:boolean"/>
</xs:complexType>
type name type
attribute primative string
element array array
element classPath classPath

assignment

<xs:complexType name="assignType">
<xs:sequence maxOccurs="unbounded">
<xs:element name="variable" type="variableType"/>
<xs:element name="array" type="arrayType"/>
<xs:element name="constant" type="constantType"/>
<xs:element name="call" type="callType"/>
<xs:element name="binaryOp" type="binaryOpType"/>
<xs:element name="unaryOp" type="unaryOpType"/>
<xs:element name="comment" type="commentType"/>
</xs:sequence>
<xs:attribute name="operator" type="assignOperatorType"/>
</xs:complexType> <xs:simpleType name="assignOperatorType">
<xs:restriction base="xs:string">
<xs:enumeration value="="/>
<xs:enumeration value="+="/>
<xs:enumeration value="-="/>
<xs:enumeration value="*="/>
<xs:enumeration value="/="/>
<xs:enumeration value="amp="/>
<xs:enumeration value="|="/>
<xs:enumeration value="^="/>
<xs:enumeration value="%="/>
<xs:enumeration value="left="/>
<xs:enumeration value="&gt;&gt;="/>
<xs:enumeration value="&gt;&gt;&gt;="/>
</xs:restriction>
</xs:simpleType>
type name type
element variable variable
element rightHandSide partialResult
attributeGroup assignmentOperation  

binaryOperation

	<xs:complexType name="binaryOpType">
<xs:sequence minOccurs="2" maxOccurs="unbounded">
<xs:element name="variable" type="variableType"/>
<xs:element name="array" type="arrayType"/>
<xs:element name="constant" type="constantType"/>
<xs:element name="call" type="callType"/>
<xs:element name="binaryOp" type="binaryOpType"/>
<xs:element name="unaryOp" type="unaryOpType"/>
<xs:element name="comment" type="commentType"/>
</xs:sequence>
<xs:attribute name="operator" type="operatorType"/>
</xs:complexType>
<xs:simpleType name="operatorType">
<xs:restriction base="xs:string">
<xs:enumeration value="||"/>
<xs:enumeration value="&amp;&amp;"/>
<xs:enumeration value="|"/>
<xs:enumeration value="^"/>
<xs:enumeration value="&amp;"/>
<xs:enumeration value="=="/>
<xs:enumeration value="!="/>
<xs:enumeration value="&lt;"/>
<xs:enumeration value="&gt;"/>
<xs:enumeration value="&lt;="/>
<xs:enumeration value="&gt;="/>
<xs:enumeration value="&lt;&lt;"/>
<xs:enumeration value="&gt;&gt;"/>
<xs:enumeration value="&gt;&gt;&gt;"/>
<xs:enumeration value="+"/>
<xs:enumeration value="-"/>
<xs:enumeration value="*"/>
<xs:enumeration value="/"/>
<xs:enumeration value="%"/>
</xs:restriction>
</xs:simpleType>

type name type
element lhs partialResult
element rhs partialResult
attributeGroup binaryOperator  
     

 

importList

type name type
element import import

import

type name type
element name string

tagList

type name type
element tag tag

tag

type name type
attribute tagValue string
attribute tagType string

assignmentOperation

<xs:complexType name="assignType">
   <xs:sequence minOccurs="2" maxOccurs="unbounded">
   <xs:element name="variable" type="variableType"/>
   <xs:element name="constant" type="constantType"/>
   <xs:element name="call" type="callType"/>
   <xs:element name="binaryOp" type="binaryOpType"/>
   <xs:element name="unaryOp" type="unaryOpType"/>
   <xs:element name="comment" type="commentType"/>
   </xs:sequence>
   <xs:attribute name="operator" type="assignOperatorType"/>
   </xs:complexType>
   <xs:simpleType name="assignOperatorType">
   <xs:restriction base="xs:string">
   <xs:enumeration value="="/>
   <xs:enumeration value="+="/>
   <xs:enumeration value="-="/>
   <xs:enumeration value="*="/>
   <xs:enumeration value="/="/>
   <xs:enumeration value="amp="/>
   <xs:enumeration value="|="/>
   <xs:enumeration value="^="/>
   <xs:enumeration value="%="/>
   <xs:enumeration value="left="/>
   <xs:enumeration value="&gt;&gt;="/>
   <xs:enumeration value="&gt;&gt;&gt;="/>
   </xs:restriction>
   </xs:simpleType>
type name type
enumeration "=" string
enumeration "+=" string
enumeration "-=" string
enumeration "*=" string
enumeration "/=" string
enumeration "&=" string
enumeration "|=" string
enumeration "^=" string
enumeration "%=" string
enumeration "<<=" string
enumeration ">>=" string
enumeration ">>>=" string

binaryOperator

type name type
enumeration "||" string
enumeration "&&" string
enumeration "|" string
enumeration "^" string
enumeration "&" string
enumeration "==" string
enumeration "!=" string
enumeration "<" string
enumeration ">" string
enumeration "<=" string
enumeration ">=" string
enumeration "<<" string
enumeration ">>" string
enumeration ">>>" string
enumeration "+" string
enumeration "-" string
enumeration "*" string
enumeration "/" string
enumeration "%" string

unaryOperation

<xs:complexType name="unaryOpType">
<xs:sequence maxOccurs="unbounded">
<xs:element name="variable" type="variableType"/>
<xs:element name="array" type="arrayType"/>
<xs:element name="constant" type="constantType"/>
<xs:element name="call" type="callType"/>
<xs:element name="binaryOp" type="binaryOpType"/>
<xs:element name="unaryOp" type="unaryOpType"/>
<xs:element name="comment" type="commentType"/>
</xs:sequence>
<xs:attribute name="type" type="xs:string"/>
<xs:attribute name="operator" type="unaryOperatorType"/>
</xs:complexType>
<xs:simpleType name="unaryOperatorType">
<xs:restriction base="xs:string">
<xs:enumeration value="++"/>
<xs:enumeration value="--"/>
<xs:enumeration value="pre++"/>
<xs:enumeration value="pre--"/>
<xs:enumeration value="!"/>
<xs:enumeration value="~"/>
<xs:enumeration value="+"/>
<xs:enumeration value="-"/>
</xs:restriction>
</xs:simpleType>
type name type
enumeration "++" string
enumeration "--" string
enumeration "pre++" string
enumeration "pre--" string
enumeration "!" string
enumeration "~" string
enumeration "+" string
enumeration "-" string

Call

<xs:complexType name="callType">
<xs:sequence>
<xs:element name="comment" type="commentType"/>
<xs:element name="parameterValueList" type="parameterValueListType"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="isNew" type="xs:boolean"/>
</xs:complexType>
<xs:complexType name="parameterValueListType">
<xs:sequence>
<xs:element name="comment" type="commentType"/>
<xs:element name="parameterValue" type="parameterValueType"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="parameterValueType">
<xs:sequence>
<xs:element name="variable" type="variableType"/>
<xs:element name="constant" type="constantType"/>
<xs:element name="call" type="callType"/>
<xs:element name="binaryOp" type="binaryOpType"/>
<xs:element name="unaryOp" type="unaryOpType"/>
<xs:element name="comment" type="commentType"/>
</xs:sequence>
</xs:complexType>

Call a method on a class with specified parameters.

type name type
element classPath classPath
element parameterValueList parameterValueList
attribute name string

parameterValueList

List of parameters supplied to a method

type name type
element parameterValue parameterValue

parameterValue

may be constant or calculated value.

type name type
element partialResult partialResult

typeOperator

cast to specific class type

<xs:complexType name="castType">
   <xs:sequence>
   <xs:element name="dataType" type="dataType"/>
   <xs:element name="variable" type="variableType"/>
   <xs:element name="constant" type="constantType"/>
   <xs:element name="call" type="callType"/>
   <xs:element name="binaryOp" type="binaryOpType"/>
   <xs:element name="unaryOp" type="unaryOpType"/>
   <xs:element name="comment" type="commentType"/>
   </xs:sequence>
   </xs:complexType>
type name type
element

dataType

dataType
element partialResult partialResult

constant

A constant value such as "2"

<xs:complexType name="constantType">
<xs:attribute name="intConst" type="xs:int"/>
<xs:attribute name="stringValue" type="xs:string"/>
<xs:attribute name="floatValue" type="xs:float"/>
<xs:attribute name="doubleValue" type="xs:double"/>
<xs:attribute name="booleanValue" type="xs:boolean"/>
</xs:complexType>
type name type
attribute stringvalue string
attribute integervalue integer
attribute floatvalue float
attribute doublevalue double
attribute boolvalue boolean

array

array of come type of data.

<xs:complexType name="arrayType">
   <xs:sequence>
   <xs:element name="dataType" type="dataType"/>
   </xs:sequence>
   <xs:attribute name="size" type="xs:int"/>
   </xs:complexType>
type name type
attribute size integer
element dataType dataType

classPath

class or sequence of classes such as "System.out" which would goto System then out.

type name type
element className className

className

name of class, for instance "system"

type name type
attribute name string

metadata block
see also:

 

Correspondence about this page

Book Shop - Further reading.

Where I can, I have put links to Amazon for books that are relevant to the subject, click on the appropriate country flag to get more details of the book or to buy it from them.

cover Java Development to .NET Development - Very good if you already know Java and whish to learn C# as you dont have read chapters about concepts you already know, you can just read about the differences. It has a section about XML including XSLT.

Other Java books

Commercial Software Shop

Where I can, I have put links to Amazon for commercial software, not directly related to this site, but related to the subject being discussed, click on the appropriate country flag to get more details of the software or to buy it from them.

cover JBuilder - There is also a free version of Jbuilder at borland website . However its licence conditions are quite restrictive so you may prefer another java IDE.

This site may have errors. Don't use for critical systems.

Copyright (c) 1998-2017 Martin John Baker - All rights reserved - privacy policy.