diff --git a/build.xml b/build.xml
index 5bc559b221c6ed65ac137a554611b762e90ef72b..72762c68db2d2f1477f3b5a121a331cf66d54691 100644
--- a/build.xml
+++ b/build.xml
@@ -99,7 +99,7 @@
   </target>
 
   <target name="jar" depends="build">
-    <jar destfile="SchemaCompile.jar" basedir="." includes="**/*.class" excludes="x3d/**">
+    <jar destfile="SchemaCompiler.jar" basedir="." includes="**/*.class" excludes="x3d/**">
       <manifest>
 	<attribute name="Main-Class" value="GenCompiler"/>
       </manifest>
diff --git a/examples/sfc.xsd b/examples/sfc.xsd
new file mode 100644
index 0000000000000000000000000000000000000000..688f9c1a787bb558fa6d13a5bb33d4ee7b44fc2d
--- /dev/null
+++ b/examples/sfc.xsd
@@ -0,0 +1,256 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+  <xs:complexType name="GCDocument">
+    <xs:sequence>
+      <xs:element ref="GCDocument"/>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="GCDocument">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="GCInitialStep"/>
+        <xs:choice maxOccurs="unbounded">
+          <xs:element ref="EnterStep"/>
+          <xs:element ref="ExceptionTransition"/>
+          <xs:element ref="ExitStep"/>
+          <xs:element ref="GCStep"/>
+          <xs:element ref="GCTransition"/>
+          <xs:element ref="MacroStep"/>
+          <xs:element ref="ParallelSplit"/>
+          <xs:element ref="RealVariable"/>
+          <xs:element ref="BooleanVariable"/>
+          <xs:element ref="StringVariable"/>
+          <xs:element ref="WorkspaceObject"/>
+        </xs:choice>
+        <xs:choice>
+          <xs:element minOccurs="0" maxOccurs="unbounded" ref="GCLink"/>
+          <xs:element minOccurs="0" maxOccurs="unbounded" ref="AnalogOut"/>
+          <xs:element minOccurs="0" maxOccurs="unbounded" ref="AnalogIn"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attribute name="color" use="required" type="xs:integer"/>
+      <xs:attribute name="dimTicks" type="xs:integer"/>
+      <xs:attribute name="dpwsInterface"/>
+      <xs:attribute name="dpwsPort" type="xs:integer"/>
+      <xs:attribute name="height" use="required" type="xs:integer"/>
+      <xs:attribute name="horizontalScrollBar" type="xs:integer"/>
+      <xs:attribute name="modifiable" type="xs:integer"/>
+      <xs:attribute name="name" type="xs:NCName"/>
+      <xs:attribute name="saveVersion" type="xs:integer"/>
+      <xs:attribute name="scale" use="required" type="xs:decimal"/>
+      <xs:attribute name="simulationMode" type="xs:integer"/>
+      <xs:attribute name="socketHost"/>
+      <xs:attribute name="socketPort" type="xs:integer"/>
+      <xs:attribute name="threadSpeed" type="xs:integer"/>
+      <xs:attribute name="tokenLuminance" type="xs:integer"/>
+      <xs:attribute name="verticalScrollBar" type="xs:integer"/>
+      <xs:attribute name="viewPositionX" use="required" type="xs:integer"/>
+      <xs:attribute name="viewPositionY" use="required" type="xs:integer"/>
+      <xs:attribute name="width" use="required" type="xs:integer"/>
+      <xs:attribute name="x" use="required" type="xs:integer"/>
+      <xs:attribute name="y" use="required" type="xs:integer"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="GCInitialStep">
+    <xs:complexType>
+      <xs:attribute name="actionBlockVisible" use="required" type="xs:integer"/>
+      <xs:attribute name="actionText" use="required"/>
+      <xs:attribute name="fileName" use="required"/>
+      <xs:attribute name="height" use="required" type="xs:integer"/>
+      <xs:attribute name="id" use="required"/>
+      <xs:attribute name="name" use="required"/>
+      <xs:attribute name="useIcon" use="required" type="xs:integer"/>
+      <xs:attribute name="width" use="required" type="xs:integer"/>
+      <xs:attribute name="x" use="required" type="xs:integer"/>
+      <xs:attribute name="y" use="required" type="xs:integer"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="EnterStep">
+    <xs:complexType>
+      <xs:attribute name="actionBlockVisible" use="required" type="xs:integer"/>
+      <xs:attribute name="actionText" use="required"/>
+      <xs:attribute name="fileName" use="required"/>
+      <xs:attribute name="height" use="required" type="xs:integer"/>
+      <xs:attribute name="id" use="required"/>
+      <xs:attribute name="name" use="required"/>
+      <xs:attribute name="useIcon" use="required" type="xs:integer"/>
+      <xs:attribute name="width" use="required" type="xs:integer"/>
+      <xs:attribute name="x" use="required" type="xs:integer"/>
+      <xs:attribute name="y" use="required" type="xs:integer"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="ExceptionTransition">
+    <xs:complexType>
+      <xs:attribute name="CGURI" use="required"/>
+      <xs:attribute name="actionText" use="required"/>
+      <xs:attribute name="conditionVisible" use="required" type="xs:integer"/>
+      <xs:attribute name="height" use="required" type="xs:integer"/>
+      <xs:attribute name="id" use="required"/>
+      <xs:attribute name="width" use="required" type="xs:integer"/>
+      <xs:attribute name="x" use="required" type="xs:integer"/>
+      <xs:attribute name="y" use="required" type="xs:integer"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="ExitStep">
+    <xs:complexType>
+      <xs:attribute name="actionBlockVisible" use="required" type="xs:integer"/>
+      <xs:attribute name="actionText" use="required"/>
+      <xs:attribute name="fileName" use="required"/>
+      <xs:attribute name="height" use="required" type="xs:integer"/>
+      <xs:attribute name="id" use="required"/>
+      <xs:attribute name="name" use="required"/>
+      <xs:attribute name="useIcon" use="required" type="xs:integer"/>
+      <xs:attribute name="width" use="required" type="xs:integer"/>
+      <xs:attribute name="x" use="required" type="xs:integer"/>
+      <xs:attribute name="y" use="required" type="xs:integer"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="GCStep">
+    <xs:complexType>
+      <xs:attribute name="actionBlockVisible" use="required" type="xs:integer"/>
+      <xs:attribute name="actionText" use="required"/>
+      <xs:attribute name="fileName" use="required"/>
+      <xs:attribute name="height" use="required" type="xs:integer"/>
+      <xs:attribute name="id" use="required"/>
+      <xs:attribute name="name" use="required"/>
+      <xs:attribute name="useIcon" use="required" type="xs:integer"/>
+      <xs:attribute name="width" use="required" type="xs:integer"/>
+      <xs:attribute name="x" use="required" type="xs:integer"/>
+      <xs:attribute name="y" use="required" type="xs:integer"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="GCTransition">
+    <xs:complexType>
+      <xs:attribute name="CGURI" use="required"/>
+      <xs:attribute name="actionText" use="required"/>
+      <xs:attribute name="conditionVisible" use="required" type="xs:integer"/>
+      <xs:attribute name="height" use="required" type="xs:integer"/>
+      <xs:attribute name="id" use="required"/>
+      <xs:attribute name="width" use="required" type="xs:integer"/>
+      <xs:attribute name="x" use="required" type="xs:integer"/>
+      <xs:attribute name="y" use="required" type="xs:integer"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="MacroStep">
+    <xs:complexType>
+      <xs:complexContent>
+        <xs:extension base="GCDocument">
+          <xs:attribute name="actionText" use="required"/>
+          <xs:attribute name="fileName" use="required"/>
+          <xs:attribute name="height" use="required" type="xs:integer"/>
+          <xs:attribute name="id" use="required"/>
+          <xs:attribute name="name" use="required"/>
+          <xs:attribute name="useIcon" use="required" type="xs:integer"/>
+          <xs:attribute name="width" use="required" type="xs:integer"/>
+          <xs:attribute name="x" use="required" type="xs:integer"/>
+          <xs:attribute name="y" use="required" type="xs:integer"/>
+        </xs:extension>
+      </xs:complexContent>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="ParallelSplit">
+    <xs:complexType>
+      <xs:attribute name="height" use="required" type="xs:integer"/>
+      <xs:attribute name="id" use="required"/>
+      <xs:attribute name="width" use="required" type="xs:integer"/>
+      <xs:attribute name="x" use="required" type="xs:integer"/>
+      <xs:attribute name="y" use="required" type="xs:integer"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="ParallelJoin">
+    <xs:complexType>
+      <xs:attribute name="height" use="required" type="xs:integer"/>
+      <xs:attribute name="id" use="required"/>
+      <xs:attribute name="width" use="required" type="xs:integer"/>
+      <xs:attribute name="x" use="required" type="xs:integer"/>
+      <xs:attribute name="y" use="required" type="xs:integer"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="RealVariable">
+    <xs:complexType>
+      <xs:attribute name="constant" use="required" type="xs:integer"/>
+      <xs:attribute name="exp" use="required"/>
+      <xs:attribute name="height" use="required" type="xs:integer"/>
+      <xs:attribute name="initialValue" use="required"/>
+      <xs:attribute name="name" use="required" type="xs:NCName"/>
+      <xs:attribute name="updated" use="required" type="xs:integer"/>
+      <xs:attribute name="value" use="required" type="xs:decimal"/>
+      <xs:attribute name="width" use="required" type="xs:integer"/>
+      <xs:attribute name="x" use="required" type="xs:integer"/>
+      <xs:attribute name="y" use="required" type="xs:integer"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="StringVariable">
+    <xs:complexType>
+      <xs:attribute name="constant" use="required" type="xs:integer"/>
+      <xs:attribute name="exp" use="required"/>
+      <xs:attribute name="height" use="required" type="xs:integer"/>
+      <xs:attribute name="initialValue" use="required"/>
+      <xs:attribute name="name" use="required" type="xs:NCName"/>
+      <xs:attribute name="updated" use="required" type="xs:integer"/>
+      <xs:attribute name="value" use="required" type="xs:string"/>
+      <xs:attribute name="width" use="required" type="xs:integer"/>
+      <xs:attribute name="x" use="required" type="xs:integer"/>
+      <xs:attribute name="y" use="required" type="xs:integer"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="WorkspaceObject">
+    <xs:complexType>
+      <xs:complexContent>
+        <xs:extension base="GCDocument">
+          <xs:attribute name="enabled" use="required" type="xs:integer"/>
+          <xs:attribute name="fileName" use="required"/>
+          <xs:attribute name="height" use="required" type="xs:integer"/>
+          <xs:attribute name="horizontalScrollBar" use="required" type="xs:integer"/>
+          <xs:attribute name="name" use="required" type="xs:NCName"/>
+          <xs:attribute name="ownerClass" use="required"/>
+          <xs:attribute name="scanCycle" use="required" type="xs:integer"/>
+          <xs:attribute name="useIcon" use="required" type="xs:integer"/>
+          <xs:attribute name="verticalScrollBar" use="required" type="xs:integer"/>
+          <xs:attribute name="width" use="required" type="xs:integer"/>
+          <xs:attribute name="x" use="required" type="xs:integer"/>
+          <xs:attribute name="y" use="required" type="xs:integer"/>
+        </xs:extension>
+      </xs:complexContent>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="GCLink">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="Stroke"/>
+      </xs:sequence>
+      <xs:attribute name="fromObject" use="required"/>
+      <xs:attribute name="manAdj" use="required" type="xs:integer"/>
+      <xs:attribute name="toObject" use="required"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Stroke">
+    <xs:complexType>
+      <xs:attribute name="x" use="required" type="xs:integer"/>
+      <xs:attribute name="y" use="required" type="xs:integer"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="AnalogOut">
+    <xs:complexType>
+      <xs:attribute name="channel" use="required" type="xs:integer"/>
+      <xs:attribute name="height" use="required" type="xs:integer"/>
+      <xs:attribute name="name" use="required" type="xs:NCName"/>
+      <xs:attribute name="value" use="required"/>
+      <xs:attribute name="width" use="required" type="xs:integer"/>
+      <xs:attribute name="x" use="required" type="xs:integer"/>
+      <xs:attribute name="y" use="required" type="xs:integer"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="AnalogIn">
+    <xs:complexType>
+      <xs:attribute name="channel" use="required" type="xs:integer"/>
+      <xs:attribute name="cyclic" use="required" type="xs:integer"/>
+      <xs:attribute name="height" use="required" type="xs:integer"/>
+      <xs:attribute name="name" use="required" type="xs:NCName"/>
+      <xs:attribute name="value" use="required" type="xs:decimal"/>
+      <xs:attribute name="width" use="required" type="xs:integer"/>
+      <xs:attribute name="x" use="required" type="xs:integer"/>
+      <xs:attribute name="y" use="required" type="xs:integer"/>
+    </xs:complexType>
+  </xs:element>
+</xs:schema>
diff --git a/xmlschema.ast b/xmlschema.ast
index 53dc470fe8bd44f46cc39e7b86a377a8641b354f..e3c37ecbacd0c35eb3bd93c6c7e43bc0c4597538 100644
--- a/xmlschema.ast
+++ b/xmlschema.ast
@@ -85,6 +85,7 @@ ProcessContents      : Attribute;
 Ref                  : Attribute;
 Source               : Attribute;
 SchemaLocation       : Attribute;
+Standalone           : Attribute;
 TargetNamespace      : Attribute;
 Type                 : Attribute;
 Use                  : Attribute;
diff --git a/xmlschema.jjt b/xmlschema.jjt
index 139ae28720c1ad6475b717657e4cc8719f6ca8bd..59b818211427f5d97812529b4ba675d43224bc08 100644
--- a/xmlschema.jjt
+++ b/xmlschema.jjt
@@ -126,6 +126,7 @@ SPECIAL_TOKEN : /* COMMENTS */
   | < REF                      : "ref" >
   | < SCHEMALOCATION           : "schemaLocation" >
   | < SOURCE                   : "source" >
+  | < STANDALONE               : "standalone" >
   | < TARGETNAMESPACE          : "targetNamespace" >
   | < TYPE                     : "type" >
   | < USE                      : "use" >