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

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

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