diff --git a/.bzrignore b/.bzrignore
index a704a5acbe8e14c3b6c90e41f8fa5a40ac9d6472..604c3a0c823320ce049f48e192fe40ec27837977 100644
--- a/.bzrignore
+++ b/.bzrignore
@@ -5,6 +5,11 @@ examples/x3d/GeneratedAspects.jrag
 examples/x3d/Parser.java
 examples/x3d/x3d.ast
 examples/x3d/x3d.jjt
-javadoc
 examples/x3d/PrettyPrint.java
+examples/configForm/GeneratedAspects.jrag
+examples/configForm/Parser.java
+examples/configForm/PrettyPrint.java
+examples/configForm/configForm.ast
+examples/configForm/configForm.jjt
+javadoc
 SchemaCompile.jar
diff --git a/CompilerGeneration.jrag b/CompilerGeneration.jrag
index 457e5fa5df0ce09e004e45166896b4033dd07ca5..ca21d58fbe54bce65c67ae7d6fffe223606d94b3 100644
--- a/CompilerGeneration.jrag
+++ b/CompilerGeneration.jrag
@@ -17,43 +17,28 @@ aspect AbsGrammarGeneration {
     }
 
     public void Start.genAbsGrammar(PrintStream pStream) {
+        pStream.println("// -*-Java-*- ");
+        pStream.println();
+        pStream.println("// Automatically generated JastAdd abstract grammar file ");
 		pStream.println("// Predefined types");
 		pStream.println("Start ::= Specification;");
         pStream.println("Specification ::= XmlHeader [DocType] Element*;");
-//         pStream.println("Specification ::= XmlHeader Element*;");
         pStream.println("XmlHeader ::= Attribute*;");
         pStream.println("DocType ::= <STRING>;");
 		pStream.println("abstract Thing : ComplexElement ::=;");
 		pStream.println("abstract Element;");
-//  		pStream.println("ComplexElement : Element ::=  OwlIdentifier Attribute* Element*;");
   		pStream.println("ComplexElement : Element ::=  Attribute* Element*;");
 		pStream.println("ValueElement : ComplexElement;");
 		pStream.println("abstract SimpleElement : Element;");
-		pStream.println("StringElement : SimpleElement ::= <IDENTIFIER>;");
-		pStream.println("IntElement : SimpleElement ::= <INTEGER_LITERAL>;");
-		pStream.println("FloatElement : SimpleElement ::= <FLOAT_LITERAL>;");
-// 		pStream.println("ClassUse : Thing  ::= /decl:Thing/;");
+		pStream.println("StringElement : SimpleElement ::= <LITERAL>;");
+		pStream.println("IntElement : SimpleElement ::= <LITERAL>;");
+		pStream.println("FloatElement : SimpleElement ::= <LITERAL>;");
 		pStream.println("Attribute ::= AttrValue;");
-// 		pStream.println("RdfDatatype : Attribute ::= ;");
-// 		pStream.println("RdfId : Attribute ::= ;");
-// 		pStream.println("Xmlns : Attribute ::= ;");
-// 		pStream.println("XmlnsProtege : Attribute ::= ;");
-// 		pStream.println("XmlnsRdf : Attribute ::= ;");
-// 		pStream.println("XmlnsXsd : Attribute ::= ;");
-// 		pStream.println("XmlnsRdfs : Attribute ::= ;");
-// 		pStream.println("XmlnsOwl : Attribute ::= ;");
-// 		pStream.println("XmlnsDaml : Attribute ::= ;");
-// 		pStream.println("XmlnsP1 : Attribute ::= ;");
-// 		pStream.println("XmlnsDc : Attribute ::= ;");
-// 		pStream.println("XmlBase : Attribute ::= ;");
-// 		pStream.println("RdfResource : Attribute ::= ;");
-// 		pStream.println("RdfAbout : Attribute ::= ;");
-// 		pStream.println("RdfParseType : Attribute ::= ;");
-// 		pStream.println("Version : Attribute ::= ;");
-// 		pStream.println("Value ::= <STRING_LITERAL>;");
-// 		pStream.println("OwlIdentifier ::= <IDENTIFIER>;");
 		pStream.println("AttrValue ::= <STRING_LITERAL>;");
         pStream.println("Encoding : Attribute ::=;");
+        pStream.println("Version : Attribute ::=;");
+        pStream.println("XmlnsXsi : Attribute ::=;");
+        pStream.println("XsiNoNamespaceSchemaLocation : Attribute ::=;");
 		pStream.println();
 		pStream.println("// Generated types");
 
@@ -71,7 +56,7 @@ aspect AbsGrammarGeneration {
 
     void XsElement.genAbsGrammar(PrintStream pStream) {
         if (hasName()) { // If not, it's just a reference to an element declaration
-            String name = name();
+            String name = fixName(name());
             pStream.println(name + " : ComplexElement ::= ;");
         }
     }
@@ -130,7 +115,7 @@ aspect GenJavaCC {
         pStream.println("String getData() {");
         pStream.println("	StringBuffer s = new StringBuffer();");
         pStream.println("//     jjtThis.someData = true;");
-        pStream.println("    while ((getToken(1)).kind != LT && (getToken(1)).kind != GT) {");
+        pStream.println("    while ((getToken(1)).kind != LT && (getToken(1)).kind != LTSLASH) {");
         pStream.println("		Token t = getNextToken();");
         pStream.println("		if (t.specialToken != null) {");
         pStream.println("			Token tmp_t = t.specialToken;");
@@ -174,9 +159,24 @@ aspect GenJavaCC {
         pStream.println("  <encoding> \"=\" AttrValue()");
         pStream.println("}");
         pStream.println();
+        pStream.println("void Version() #Version : {}");
+        pStream.println("{");
+        pStream.println("  <version> \"=\" AttrValue()");
+        pStream.println("}");
+        pStream.println();
+        pStream.println("void XsiNoNamespaceSchemaLocation() #XsiNoNamespaceSchemaLocation : {}");
+        pStream.println("{");
+        pStream.println("  <XsiNoNamespaceSchemaLocation> \"=\" AttrValue()");
+        pStream.println("}");
+        pStream.println();
+        pStream.println("void XmlnsXsi() #XmlnsXsi : {}");
+        pStream.println("{");
+        pStream.println("  <XmlnsXsi> \"=\" AttrValue()");
+        pStream.println("}");
+        pStream.println();
         pStream.println("void Element()  : {}");
         pStream.println("{");
-        pStream.println("  <LT> (");
+        pStream.println(" ( <LT> (");
         Iterator iter = elementTypes().values().iterator();
         if (iter.hasNext()) {
             pStream.println("  "+fixName(((XsElement) iter.next()).name())+"()");
@@ -184,12 +184,46 @@ aspect GenJavaCC {
         while (iter.hasNext()) {
             pStream.println("  | "+fixName(((XsElement) iter.next()).name())+"()");
         }
-        pStream.println(" ) ");
+        pStream.println(" )) ");
+        pStream.println(" | SimpleElement()");
+        pStream.println("}");
+        pStream.println();
+        pStream.println("void SimpleElement() : {}");
+        pStream.println("{");
+        pStream.println("    IntElement()");
+        pStream.println("	| FloatElement()");
+        pStream.println("  	| StringElement()");
+        pStream.println("}");
+        pStream.println();
+        pStream.println("void IntElement() #IntElement : { Token t; }");
+        pStream.println("{");
+        pStream.println("    t = <INTEGER_LITERAL>");
+        pStream.println("	{jjtThis.setLITERAL(t.image);}");
+        pStream.println("}");
+        pStream.println();
+        pStream.println("void FloatElement() #FloatElement : { Token t; }");
+        pStream.println("{");
+        pStream.println("    t = <FLOAT_LITERAL>");
+        pStream.println("	{jjtThis.setLITERAL(t.image);}");
         pStream.println("}");
         pStream.println();
+        pStream.println("void StringElement() #StringElement : { Token t;String s; }");
+        pStream.println("{");
+        pStream.println("	t = <IDENTIFIER>");
+        pStream.println("	{");
+        pStream.println("		s = t.image;");
+        pStream.println("		if (getToken(1).kind != GT ) {");
+        pStream.println("		s += getData();");
+        pStream.println("	}");
+        pStream.println("	}");
+        pStream.println("        {jjtThis.setLITERAL(s);}");
+        pStream.println("}");
         pStream.println("void Attribute()  : {}");
         pStream.println("{");
         pStream.println("  Encoding()");
+        pStream.println(" | Version()");
+        pStream.println(" | XsiNoNamespaceSchemaLocation()");
+        pStream.println(" | XmlnsXsi()");
         iter = attributeTypes().values().iterator();
         while (iter.hasNext()) {
             pStream.println("  | "+fixName(((XsAttribute) iter.next()).name())+"()");
@@ -212,7 +246,7 @@ aspect GenJavaCC {
 
     void XsElement.genJavaCC(PrintStream pStream) {
         if (hasName()) { // If not, it's just a reference to an element declaration
-            String name = name();
+            String name = fixName(name());
             pStream.println("void "+name+"() #"+name+" : {}");
             pStream.println("{");
 
@@ -235,13 +269,12 @@ aspect GenJavaCC {
             pStream.println("void "+name+"() #"+name+" : {}");
             pStream.println("{");
             pStream.println("  <"+name+"> \"=\" AttrValue()");
-//             pStream.println("  <"+name.toUpperCase()+"> \"=\" AttrValue()");
             pStream.println("}");
         }
     }
 
     void Start.genJavaCCTokens(PrintStream pStream) {
-		pStream.println("<DEFAULT, BOUNDS> TOKEN : /* Reserved Words */");
+		pStream.println("<DEFAULT> TOKEN : /* Reserved Words */");
 		pStream.println("{");
         Hashtable h = elementTypes();
         h.putAll(attributeTypes());
@@ -250,18 +283,14 @@ aspect GenJavaCC {
         pStream.println(" | <DOCTYPE : \"DOCTYPE\">");
         pStream.println(" | <PUBLIC : \"PUBLIC\">");
         pStream.println(" | <encoding\t\t: \"encoding\">");
+        pStream.println(" | <version\t\t: \"version\">");
+        pStream.println(" | <XsiNoNamespaceSchemaLocation\t\t: \"xsi:noNamespaceSchemaLocation\">");
+        pStream.println(" | <XmlnsXsi\t\t: \"xmlns:xsi\">");
         while (iter.hasNext()) {
             String name = ((ComplexElement) iter.next()).name();
             pStream.println(" | <"+fixName(name)+
-//             pStream.println(" | <"+fixName(name).toUpperCase()+
                             "\t\t: \""+name+"\" >");
         }
-//         iter = attributeTypes().iterator();
-//         while (iter.hasNext()) {            
-//             String name = ((ComplexElement) iter.next()).name();
-//             pStream.println(" | <"+fixName(name).toUpperCase()+
-//                             "\t\t: \""+name+"\" >");
-//         }        
 		pStream.println("}// Reserved Words");
         pStream.println();
     }
@@ -301,7 +330,7 @@ aspect Types {
     }
 
     eq XsAttribute.attributeTypes(Hashtable h) {
-        if (hasName()) {
+        if (hasName() && !defaultAttr()) {
             h.put(name(),this);
         }
         super.attributeTypes(h);
@@ -311,7 +340,19 @@ aspect Types {
 }
 
 aspect Misc {
-	syn String ComplexElement.name() {
+    static String XsAttribute.defAttrs[] = {"version"};
+
+    syn boolean XsAttribute.defaultAttr() {
+        String name = name();
+        for (int i=0; i<defAttrs.length; i++) {
+            if (name.equals(defAttrs[i])) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+	syn lazy String ComplexElement.name() {
 		for (int i=0; i<getNumAttribute(); i++) {
 			if (getAttribute(i) instanceof Name) {
 				return getAttribute(i).getAttValue().getSTRING_LITERAL().
@@ -322,7 +363,7 @@ aspect Misc {
 		return "NoNameFound";
 	}
 
-	syn boolean ComplexElement.hasName() {
+	syn lazy boolean ComplexElement.hasName() {
 		for (int i=0; i<getNumAttribute(); i++) {
 			if (getAttribute(i) instanceof Name) {
 				return true;
diff --git a/JavaCCChunks.jrag b/JavaCCChunks.jrag
index 75ea0b8c6e69fa146b9c4d569735929e82b09255..73615cb98aa8ea8ec51679fc22740a49069a7ae5 100644
--- a/JavaCCChunks.jrag
+++ b/JavaCCChunks.jrag
@@ -8,6 +8,8 @@
 
 aspect JavaCCChunks {
 	void Start.genJavaCCHeader(PrintStream pStream) {
+        pStream.println("/* -*-Java-*- */");
+        pStream.println();
 		pStream.println("options {");
 		pStream.println("    MULTI                       = true;");
 		pStream.println("    VISITOR                     = true;");
@@ -30,7 +32,8 @@ aspect JavaCCChunks {
 		pStream.println("//----------------------------------------------//");
 		pStream.println("//                LEXICAL TOKENS                //");
 		pStream.println("//----------------------------------------------//");
-		pStream.println("<DEFAULT, BOUNDS> SKIP : /* WHITE SPACE */");
+// 		pStream.println("<DEFAULT, BOUNDS> SKIP : /* WHITE SPACE */");
+		pStream.println("<DEFAULT,BOUNDS> SPECIAL_TOKEN : /* WHITE SPACE */");
 		pStream.println("{");
 		pStream.println("    \" \"");
 		pStream.println("    |");
@@ -43,7 +46,7 @@ aspect JavaCCChunks {
 		pStream.println("    \"\\f\"");
 		pStream.println("}// WHITE SPACE");
 		pStream.println();
-		pStream.println("SPECIAL_TOKEN : /* COMMENTS */ ");
+		pStream.println("<DEFAULT,BOUNDS> SPECIAL_TOKEN : /* COMMENTS */ ");
 		pStream.println("{");
 		pStream.println("    < \"<!--\" ( ~[\"-\"] | ( \"-\" ~[\"-\"] ) )* \"-->\">");
 		pStream.println("}// COMMENTS");
@@ -167,11 +170,12 @@ aspect JavaCCChunks {
 		pStream.println("    | < LBRACKET             : \"[\"    >");
 		pStream.println("    | < RBRACKET             : \"]\"    >");
 		pStream.println("    | < SEMICOLON            : \";\"    >");
-		pStream.println("    | < LTBANG               : \"<!\"    >");
-		pStream.println("    | < LT                   : \"<\"    >");
-		pStream.println("    | < LTQ                  : \"<?\"    >");
-		pStream.println("    | < GT                   : \">\"    >");
-		pStream.println("    | < QGT                  : \"?>\"    >");
+		pStream.println("    | < LTSLASH              : \"</\"    > : DEFAULT");
+		pStream.println("    | < LTBANG               : \"<!\"    > : DEFAULT");
+		pStream.println("    | < LT                   : \"<\"    > : DEFAULT");
+		pStream.println("    | < LTQ                  : \"<?\"    > : DEFAULT");
+		pStream.println("    | < GT                   : \">\"    > : BOUNDS");
+		pStream.println("    | < QGT                  : \"?>\"    > : BOUNDS");
 		pStream.println("}// SEPARATORS");
 	}
 
diff --git a/examples/config-sheet.xml b/examples/config-sheet.xml
index 30e00234c7a799d5291dd55d2df990c925206ffe..58fef25f611e5d001f343f5178e5f3e86c576b4b 100755
--- a/examples/config-sheet.xml
+++ b/examples/config-sheet.xml
@@ -145,7 +145,7 @@
         <task name="selection-text-area" id="tid005">
             <args>
                 <arg0>robot</arg0>
-                <arg1>text area</arg1>
+                <arg1>i text area</arg1>
             </args>
             <one-of>
                 <option>
diff --git a/examples/configForm.xsd b/examples/configForm.xsd
index 1a5849476db2b4b7ba94c4dbbf0efe96909a94bc..a8ebdb18b673e70151e13fad655ca2b02c4d1756 100644
--- a/examples/configForm.xsd
+++ b/examples/configForm.xsd
@@ -113,14 +113,6 @@
     </xs:sequence>      
   </xs:complexType>
 
-<!--   <xs:complexType name="MetaArgsType"> -->
-<!--     <xs:simpleContent> -->
-<!--       <xs:extension base="xs:string"> -->
-<!--       </xs:extension> -->
-<!--     </xs:simpleContent> -->
-<!--     <xs:attribute name="name" type="xs:string" /> -->
-<!--   </xs:complexType> -->
-
   <xs:complexType name="TaskSequenceType">
     <xs:sequence>
       <xs:element name="task" type="TaskType" maxOccurs="unbounded"/>
diff --git a/examples/configForm/build.xml b/examples/configForm/build.xml
index 6658b167896a417060c0797f4b8e4a82eef934ad..c7a6f9b0577ffb343510079c95c31643f50bbca9 100644
--- a/examples/configForm/build.xml
+++ b/examples/configForm/build.xml
@@ -43,7 +43,7 @@
       </fileset>
     </jastadd>
     <jjtree 
-       target="x3d.jjt" 
+       target="configForm.jjt" 
        outputdirectory="${package}" 
        javacchome="${javacc.home}"
        buildnodefiles="true"
@@ -55,7 +55,7 @@
        nodepackage="${package}"
        />
     <javacc
-       target="${package}/x3d.jj"
+       target="${package}/configForm.jj"
        outputdirectory="${package}"
        javacchome="${javacc.home}"
        buildparser="true"
@@ -83,11 +83,11 @@
 <!--     <beaver file="parser/JavaParser.beaver" terminalNames="yes" compress="no" useSwitch="yes"/> -->
   </target>
 
-  <target name="test" depends="build">
-    <java classname="GenCompiler" classpath=".">
-      <arg value="GripperOntology_experimental3.owl" />
-    </java>
-  </target>
+<!--   <target name="test" depends="build"> -->
+<!--     <java classname="GenCompiler" classpath="."> -->
+<!--       <arg value="GripperOntology_experimental3.owl" /> -->
+<!--     </java> -->
+<!--   </target> -->
 
   <!-- remove generated source files and .class files -->
   <target name="clean" depends="cleanGen">
@@ -97,13 +97,13 @@
     </delete>
   </target>
 
-  <target name="jar" depends="build">
-    <jar destfile="X3DCompiler.jar" basedir="." includes="**/*.class" excludes="test/**">
-      <manifest>
-	<attribute name="Main-Class" value="GenOntology"/>
-      </manifest>
-    </jar>
-  </target>
+<!--   <target name="jar" depends="build"> -->
+<!--     <jar destfile="X3DCompiler.jar" basedir="." includes="**/*.class" excludes="test/**"> -->
+<!--       <manifest> -->
+<!-- 	<attribute name="Main-Class" value="GenOntology"/> -->
+<!--       </manifest> -->
+<!--     </jar> -->
+<!--   </target> -->
 
   <!-- remove generated source files and their .class files -->
   <target name="cleanGen">
diff --git a/xmlschema.ast b/xmlschema.ast
index 161bc088e5c44604e11e75171484f3381d375d2c..38561f05d032877b3aad0f5d7023be5846bab783 100644
--- a/xmlschema.ast
+++ b/xmlschema.ast
@@ -36,6 +36,7 @@ XsMinLength      : ComplexElement;
 XsPattern        : ComplexElement;
 XsRestriction    : ComplexElement;
 XsSequence       : ComplexElement;
+XsSimpleContent  : ComplexElement;
 XsSimpleType     : ComplexElement;
 XsSchema         : ComplexElement;
 XsWhiteSpace     : ComplexElement;
diff --git a/xmlschema.jjt b/xmlschema.jjt
index 068cc8e72685df5fe85377cabec60afd1dd21c6c..148869b341f17b41f4410389978763620dbd2861 100644
--- a/xmlschema.jjt
+++ b/xmlschema.jjt
@@ -89,6 +89,7 @@ SPECIAL_TOKEN : /* COMMENTS */
   | < XS_RESTRICTION           : "xs:restriction" >
   | < XS_SEQUENCE              : "xs:sequence" >
   | < XS_SCHEMA                : "xs:schema" >
+  | < XS_SIMPLECONTENT         : "xs:simpleContent" >
   | < XS_SIMPLETYPE            : "xs:simpleType" >
   | < XS_WHITESPACE            : "xs:whiteSpace" >
   | < ABSTRACT                 : "abstract" >
@@ -244,6 +245,7 @@ SPECIAL_TOKEN : /* COMMENTS */
     | < COMMA                : ","    >
     | < DOT                  : "."    >
     | < SQUOTE               : "'"    >
+         | < AT                   : "@"  >
 }// SEPARATORS
 
 
@@ -354,6 +356,7 @@ void Element() : {}
         | XsPattern()
         | XsRestriction()
         | XsSequence()
+        | XsSimpleContent()
         | XsSimpleType()
         | XsWhiteSpace()
 	    ))
@@ -486,6 +489,12 @@ void XsSequence() #XsSequence : {}
 		 (">" ElementList() "</" <XS_SEQUENCE> ">" | ElementList() "/>")
 }
 
+void XsSimpleContent() #XsSimpleContent : {}
+{
+    <XS_SIMPLECONTENT> AttributeList() 
+		 (">" ElementList() "</" <XS_SIMPLECONTENT> ">" | ElementList() "/>")
+}
+
 void XsSimpleType() #XsSimpleType : {}
 {
     <XS_SIMPLETYPE> AttributeList()