From 978c39a89b53caadeb5299ccbfd692315fc52a5b Mon Sep 17 00:00:00 2001
From: Anders Nilsson <anders.nilsson@cs.lth.se>
Date: Tue, 18 Sep 2007 11:28:47 +0200
Subject: [PATCH] Added v 3.1 of the X3D standard as well as a few new
 examples. Wire-frame is generated correctly on teapot for OBB but not for
 AABB where there is an offset.

---
 JavaCCChunks.jrag                  |    8 +-
 examples/IndexedQuadSetExample.x3d |   33 +
 examples/Teapot.x3d                |   65 +
 examples/x3d-3.1.xsd               | 7494 ++++++++++++++++++++++++++++
 examples/x3d/BoundingBox.jrag      |   25 +-
 examples/x3d/Demo.java             |    7 +-
 6 files changed, 7619 insertions(+), 13 deletions(-)
 create mode 100644 examples/IndexedQuadSetExample.x3d
 create mode 100644 examples/Teapot.x3d
 create mode 100644 examples/x3d-3.1.xsd

diff --git a/JavaCCChunks.jrag b/JavaCCChunks.jrag
index 97bd7ac..63f36e7 100644
--- a/JavaCCChunks.jrag
+++ b/JavaCCChunks.jrag
@@ -99,7 +99,7 @@ aspect JavaCCChunks {
 		pStream.println("    >");
 		pStream.println("    |");
 		pStream.println("    < STRING_LITERAL:");
-		pStream.println("        \"\\\"\"");
+		pStream.println("        (\"\\\"\"");
 		pStream.println("        (   (~[\"\\\"\",\"\\n\",\"\\r\"])");
 // 		pStream.println("        (   (~[\"\\\"\",\"\\\\\",\"\\n\",\"\\r\"])");
 // 		pStream.println("            |");
@@ -112,7 +112,11 @@ aspect JavaCCChunks {
 // 		pStream.println("                )");
 // 		pStream.println("            )");
 		pStream.println("        )*");
-		pStream.println("        \"\\\"\"");
+		pStream.println("        \"\\\"\")");
+		pStream.println("       | (\"\\\'\"");
+		pStream.println("        (   (~[\"\\\'\",\"\\n\",\"\\r\"])");
+		pStream.println("        )*");
+		pStream.println("        \"\\\'\")");
 		pStream.println("    >");
 		pStream.println("}// LITERALS");
 	}
diff --git a/examples/IndexedQuadSetExample.x3d b/examples/IndexedQuadSetExample.x3d
new file mode 100644
index 0000000..2c872d6
--- /dev/null
+++ b/examples/IndexedQuadSetExample.x3d
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.1//EN" "http://www.web3d.org/specifications/x3d-3.1.dtd">
+<X3D version='3.1' profile='CADInterchange' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:noNamespaceSchemaLocation='http://www.web3d.org/specifications/x3d-3.0.xsd'>
+  <head>
+    <meta content='IndexedQuadSetExample.x3d' name='title'/>
+    <meta content='Simple IndexedQuadSet example.' name='description'/>
+    <meta content='Andrew Grieve, Don Brutzman' name='authors'/>
+    <meta content='15 October 2005' name='created'/>
+    <meta content='14 November 2005' name='modified'/>
+    <meta content='Under development:  untested.' name='warning'/>
+    <meta content='http://www.web3d.org/x3d/content/examples/Basic/CAD/IndexedQuadSetExample.x3d' name='identifier'/>
+    <meta content='X3D-Edit, http://www.web3d.org/x3d/content/README.X3D-Edit.html' name='generator'/>
+    <meta content='../../license.html' name='license'/>
+  </head>
+  <Scene>
+    <NavigationInfo type='EXAMINE'/>
+<!--     <Background skyColor='1 1 1'/> -->
+    <Viewpoint DEF='Side' description='IndexedQuadSet side view' position='0 0 10'/>
+    <Viewpoint DEF='Front' description='IndexedQuadSet front view' orientation='0 1 0 1.57' position='10 0 0'/>
+    <Viewpoint DEF='Top' description='IndexedQuadSet top view' orientation='1 0 0 -1.57' position='0 10 0'/>
+<!--     <Transform scale='2 2 2'> -->
+    <Transform>
+      <Shape>
+        <Appearance>
+          <Material diffuseColor='1 1 1'/>
+        </Appearance>
+        <IndexedQuadSet containerField='geometry' index='0 3 2 1, 4 5 6 7, 2 7 9 8, 2 3 4 7'>
+          <Coordinate point='-1.5 0 0, -1.5 1 -1, -.5 1 -1, -.5 0 0, 0.5 0 0, 1.5 0 0, 1.5 1 -1, 0.5 1 -1, -0.5 2 -1, 0.5 2 -1,'/>
+        </IndexedQuadSet>
+      </Shape>
+    </Transform>
+  </Scene>
+</X3D>
diff --git a/examples/Teapot.x3d b/examples/Teapot.x3d
new file mode 100644
index 0000000..fc0d4d8
--- /dev/null
+++ b/examples/Teapot.x3d
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.1//EN" "http://www.web3d.org/specifications/x3d-3.1.dtd">
+<X3D version='3.1' profile='CADInterchange'>
+  <head>
+    <meta content='Teapot.x3d' name='title'/>
+    <meta content='Teapot model demonstrating proper hierarchy of CAD nodes.' name='description'/>
+    <meta content='Alan Hudson' name='creator'/>
+    <meta content='Xj3D' name='translator'/>
+    <meta content='1 December 2005' name='created'/>
+    <meta content='24 December 2005' name='modified'/>
+    <meta content='http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-X3DAbstractSpecification/Part01/components/CADGeometry.html' name='reference'/>
+    <meta content='TeapotOriginal.x3dv' name='reference'/>
+    <meta content='*enter image filename/url here*' name='image'/>
+    <meta content='X3D CAD CADInterchange profile' name='subject'/>
+    <meta content='http://www.web3d.org/x3d/content/examples/Basic/CAD/Teapot.x3d' name='identifier'/>
+    <meta content='../../license.html' name='license'/>
+  </head>
+  <Scene>
+    <Viewpoint description='Hello CAD teapot' position=' 0 0 35'/>
+    <CADAssembly>
+      <CADPart name='Body'>
+        <CADFace>
+          <Shape containerField='shape'>
+            <Appearance DEF='APP01'>
+              <Material diffuseColor='0.3451 0.5608 0.8824'/>
+            </Appearance>
+            <IndexedFaceSet ccw='true' coordIndex='0 5 6 -1 6 1 0 -1 1 6 7 -1 7 2 1 -1 2 7 8 -1 8 3 2 -1 3 8 9 -1 9 4 3 -1 5 10 11 -1 11 6 5 -1 6 11 12 -1 12 7 6 -1 7 12 13 -1 13 8 7 -1 8 13 14 -1 14 9 8 -1 10 15 16 -1 16 11 10 -1 11 16 17 -1 17 12 11 -1 12 17 18 -1 18 13 12 -1 13 18 19 -1 19 14 13 -1 15 20 21 -1 21 16 15 -1 16 21 22 -1 22 17 16 -1 17 22 23 -1 23 18 17 -1 18 23 24 -1 24 19 18 -1 20 25 26 -1 26 21 20 -1 21 26 27 -1 27 22 21 -1 22 27 28 -1 28 23 22 -1 23 28 29 -1 29 24 23 -1 25 30 31 -1 31 26 25 -1 26 31 32 -1 32 27 26 -1 27 32 33 -1 33 28 27 -1 28 33 34 -1 34 29 28 -1 30 35 36 -1 36 31 30 -1 31 36 37 -1 37 32 31 -1 32 37 38 -1 38 33 32 -1 33 38 39 -1 39 34 33 -1 35 40 41 -1 41 36 35 -1 36 41 42 -1 42 37 36 -1 37 42 43 -1 43 38 37 -1 38 43 44 -1 44 39 38 -1 40 45 46 -1 46 41 40 -1 41 46 47 -1 47 42 41 -1 42 47 48 -1 48 43 42 -1 43 48 49 -1 49 44 43 -1 45 50 51 -1 51 46 45 -1 46 51 52 -1 52 47 46 -1 47 52 53 -1 53 48 47 -1 48 53 54 -1 54 49 48 -1 50 55 56 -1 56 51 50 -1 51 56 57 -1 57 52 51 -1 52 57 58 -1 58 53 52 -1 53 58 59 -1 59 54 53 -1 55 60 61 -1 61 56 55 -1 56 61 62 -1 62 57 56 -1 57 62 63 -1 63 58 57 -1 58 63 64 -1 64 59 58 -1 60 65 66 -1 66 61 60 -1 61 66 67 -1 67 62 61 -1 62 67 68 -1 68 63 62 -1 63 68 69 -1 69 64 63 -1 65 70 71 -1 71 66 65 -1 66 71 72 -1 72 67 66 -1 67 72 73 -1 73 68 67 -1 68 73 74 -1 74 69 68 -1 70 75 76 -1 76 71 70 -1 71 76 77 -1 77 72 71 -1 72 77 78 -1 78 73 72 -1 73 78 79 -1 79 74 73 -1 75 0 1 -1 1 76 75 -1 76 1 2 -1 2 77 76 -1 77 2 3 -1 3 78 77 -1 78 3 4 -1 4 79 78 -1 4 9 84 -1 84 80 4 -1 80 84 85 -1 85 81 80 -1 81 85 86 -1 86 82 81 -1 82 86 87 -1 87 83 82 -1 9 14 88 -1 88 84 9 -1 84 88 89 -1 89 85 84 -1 85 89 90 -1 90 86 85 -1 86 90 91 -1 91 87 86 -1 14 19 92 -1 92 88 14 -1 88 92 93 -1 93 89 88 -1 89 93 94 -1 94 90 89 -1 90 94 95 -1 95 91 90 -1 19 24 96 -1 96 92 19 -1 92 96 97 -1 97 93 92 -1 93 97 98 -1 98 94 93 -1 94 98 99 -1 99 95 94 -1 24 29 100 -1 100 96 24 -1 96 100 101 -1 101 97 96 -1 97 101 102 -1 102 98 97 -1 98 102 103 -1 103 99 98 -1 29 34 104 -1 104 100 29 -1 100 104 105 -1 105 101 100 -1 101 105 106 -1 106 102 101 -1 102 106 107 -1 107 103 102 -1 34 39 108 -1 108 104 34 -1 104 108 109 -1 109 105 104 -1 105 109 110 -1 110 106 105 -1 106 110 111 -1 111 107 106 -1 39 44 112 -1 112 108 39 -1 108 112 113 -1 113 109 108 -1 109 113 114 -1 114 110 109 -1 110 114 115 -1 115 111 110 -1 44 49 116 -1 116 112 44 -1 112 116 117 -1 117 113 112 -1 113 117 118 -1 118 114 113 -1 114 118 119 -1 119 115 114 -1 49 54 120 -1 120 116 49 -1 116 120 121 -1 121 117 116 -1 117 121 122 -1 122 118 117 -1 118 122 123 -1 123 119 118 -1 54 59 124 -1 124 120 54 -1 120 124 125 -1 125 121 120 -1 121 125 126 -1 126 122 121 -1 122 126 127 -1 127 123 122 -1 59 64 128 -1 128 124 59 -1 124 128 129 -1 129 125 124 -1 125 129 130 -1 130 126 125 -1 126 130 131 -1 131 127 126 -1 64 69 132 -1 132 128 64 -1 128 132 133 -1 133 129 128 -1 129 133 134 -1 134 130 129 -1 130 134 135 -1 135 131 130 -1 69 74 136 -1 136 132 69 -1 132 136 137 -1 137 133 132 -1 133 137 138 -1 138 134 133 -1 134 138 139 -1 139 135 134 -1 74 79 140 -1 140 136 74 -1 136 140 141 -1 141 137 136 -1 137 141 142 -1 142 138 137 -1 138 142 143 -1 143 139 138 -1 79 4 80 -1 80 140 79 -1 140 80 81 -1 81 141 140 -1 141 81 82 -1 82 142 141 -1 142 82 83 -1 83 143 142 -1 83 87 148 -1 148 144 83 -1 144 148 149 -1 149 145 144 -1 145 149 150 -1 150 146 145 -1 146 150 151 -1 151 147 146 -1 87 91 152 -1 152 148 87 -1 148 152 153 -1 153 149 148 -1 149 153 154 -1 154 150 149 -1 150 154 155 -1 155 151 150 -1 91 95 156 -1 156 152 91 -1 152 156 157 -1 157 153 152 -1 153 157 158 -1 158 154 153 -1 154 158 159 -1 159 155 154 -1 95 99 160 -1 160 156 95 -1 156 160 161 -1 161 157 156 -1 157 161 162 -1 162 158 157 -1 158 162 163 -1 163 159 158 -1 99 103 164 -1 164 160 99 -1 160 164 165 -1 165 161 160 -1 161 165 166 -1 166 162 161 -1 162 166 167 -1 167 163 162 -1 103 107 168 -1 168 164 103 -1 164 168 169 -1 169 165 164 -1 165 169 170 -1 170 166 165 -1 166 170 171 -1 171 167 166 -1 107 111 172 -1 172 168 107 -1 168 172 173 -1 173 169 168 -1 169 173 174 -1 174 170 169 -1 170 174 175 -1 175 171 170 -1 111 115 176 -1 176 172 111 -1 172 176 177 -1 177 173 172 -1 173 177 178 -1 178 174 173 -1 174 178 179 -1 179 175 174 -1 115 119 180 -1 180 176 115 -1 176 180 181 -1 181 177 176 -1 177 181 182 -1 182 178 177 -1 178 182 183 -1 183 179 178 -1 119 123 184 -1 184 180 119 -1 180 184 185 -1 185 181 180 -1 181 185 186 -1 186 182 181 -1 182 186 187 -1 187 183 182 -1 123 127 188 -1 188 184 123 -1 184 188 189 -1 189 185 184 -1 185 189 190 -1 190 186 185 -1 186 190 191 -1 191 187 186 -1 127 131 192 -1 192 188 127 -1 188 192 193 -1 193 189 188 -1 189 193 194 -1 194 190 189 -1 190 194 195 -1 195 191 190 -1 131 135 196 -1 196 192 131 -1 192 196 197 -1 197 193 192 -1 193 197 198 -1 198 194 193 -1 194 198 199 -1 199 195 194 -1 135 139 200 -1 200 196 135 -1 196 200 201 -1 201 197 196 -1 197 201 202 -1 202 198 197 -1 198 202 203 -1 203 199 198 -1 139 143 204 -1 204 200 139 -1 200 204 205 -1 205 201 200 -1 201 205 206 -1 206 202 201 -1 202 206 207 -1 207 203 202 -1 143 83 144 -1 144 204 143 -1 204 144 145 -1 145 205 204 -1 205 145 146 -1 146 206 205 -1 206 146 147 -1 147 207 206 -1 147 151 212 -1 212 208 147 -1 208 212 213 -1 213 209 208 -1 209 213 214 -1 214 210 209 -1 210 214 211 -1 211 211 210 -1 151 155 215 -1 215 212 151 -1 212 215 216 -1 216 213 212 -1 213 216 217 -1 217 214 213 -1 214 217 211 -1 211 211 214 -1 155 159 218 -1 218 215 155 -1 215 218 219 -1 219 216 215 -1 216 219 220 -1 220 217 216 -1 217 220 211 -1 211 211 217 -1 159 163 221 -1 221 218 159 -1 218 221 222 -1 222 219 218 -1 219 222 223 -1 223 220 219 -1 220 223 211 -1 211 211 220 -1 163 167 224 -1 224 221 163 -1 221 224 225 -1 225 222 221 -1 222 225 226 -1 226 223 222 -1 223 226 211 -1 211 211 223 -1 167 171 227 -1 227 224 167 -1 224 227 228 -1 228 225 224 -1 225 228 229 -1 229 226 225 -1 226 229 211 -1 211 211 226 -1 171 175 230 -1 230 227 171 -1 227 230 231 -1 231 228 227 -1 228 231 232 -1 232 229 228 -1 229 232 211 -1 211 211 229 -1 175 179 233 -1 233 230 175 -1 230 233 234 -1 234 231 230 -1 231 234 235 -1 235 232 231 -1 232 235 211 -1 211 211 232 -1 179 183 236 -1 236 233 179 -1 233 236 237 -1 237 234 233 -1 234 237 238 -1 238 235 234 -1 235 238 211 -1 211 211 235 -1 183 187 239 -1 239 236 183 -1 236 239 240 -1 240 237 236 -1 237 240 241 -1 241 238 237 -1 238 241 211 -1 211 211 238 -1 187 191 242 -1 242 239 187 -1 239 242 243 -1 243 240 239 -1 240 243 244 -1 244 241 240 -1 241 244 211 -1 211 211 241 -1 191 195 245 -1 245 242 191 -1 242 245 246 -1 246 243 242 -1 243 246 247 -1 247 244 243 -1 244 247 211 -1 211 211 244 -1 195 199 248 -1 248 245 195 -1 245 248 249 -1 249 246 245 -1 246 249 250 -1 250 247 246 -1 247 250 211 -1 211 211 247 -1 199 203 251 -1 251 248 199 -1 248 251 252 -1 252 249 248 -1 249 252 253 -1 253 250 249 -1 250 253 211 -1 211 211 250 -1 203 207 254 -1 254 251 203 -1 251 254 255 -1 255 252 251 -1 252 255 256 -1 256 253 252 -1 253 256 211 -1 211 211 253 -1 207 147 208 -1 208 254 207 -1 254 208 209 -1 209 255 254 -1 255 209 210 -1 210 256 255 -1 256 210 211 -1 211 211 256 -1' creaseAngle='0.5' solid='true'>
+              <Coordinate point='4.548 7.797 0 4.485 8.037 0 4.558 8.116 0 4.708 8.037 0 4.873 7.797 0 4.196 7.797 1.785 4.137 8.037 1.76 4.205 8.116 1.789 4.343 8.037 1.848 4.495 7.797 1.913 3.229 7.797 3.229 3.184 8.037 3.184 3.236 8.116 3.236 3.343 8.037 3.343 3.46 7.797 3.46 1.785 7.797 4.196 1.76 8.037 4.137 1.789 8.116 4.205 1.848 8.037 4.343 1.913 7.797 4.495 0 7.797 4.548 0 8.037 4.485 0 8.116 4.558 0 8.037 4.708 0 7.797 4.873 -1.908 7.797 4.196 -1.812 8.037 4.137 -1.805 8.116 4.205 -1.85 8.037 4.343 -1.913 7.797 4.495 -3.339 7.797 3.229 -3.23 8.037 3.184 -3.25 8.116 3.236 -3.344 8.037 3.343 -3.46 7.797 3.46 -4.237 7.797 1.785 -4.154 8.037 1.76 -4.21 8.116 1.789 -4.344 8.037 1.848 -4.495 7.797 1.913 -4.548 7.797 0 -4.485 8.037 0 -4.558 8.116 0 -4.708 8.037 0 -4.873 7.797 0 -4.196 7.797 -1.785 -4.137 8.037 -1.76 -4.205 8.116 -1.789 -4.343 8.037 -1.848 -4.495 7.797 -1.913 -3.229 7.797 -3.229 -3.184 8.037 -3.184 -3.236 8.116 -3.236 -3.343 8.037 -3.343 -3.46 7.797 -3.46 -1.785 7.797 -4.196 -1.76 8.037 -4.137 -1.789 8.116 -4.205 -1.848 8.037 -4.343 -1.913 7.797 -4.495 0 7.797 -4.548 0 8.037 -4.485 0 8.116 -4.558 0 8.037 -4.708 0 7.797 -4.873 1.785 7.797 -4.196 1.76 8.037 -4.137 1.789 8.116 -4.205 1.848 8.037 -4.343 1.913 7.797 -4.495 3.229 7.797 -3.229 3.184 8.037 -3.184 3.236 8.116 -3.236 3.343 8.037 -3.343 3.46 7.797 -3.46 4.196 7.797 -1.785 4.137 8.037 -1.76 4.205 8.116 -1.789 4.343 8.037 -1.848 4.495 7.797 -1.913 5.469 6.521 0 5.99 5.269 0 6.358 4.062 0 6.497 2.924 0 5.045 6.521 2.147 5.525 5.269 2.351 5.865 4.062 2.495 5.994 2.924 2.55 3.883 6.521 3.883 4.253 5.269 4.253 4.514 4.062 4.514 4.613 2.924 4.613 2.147 6.521 5.045 2.351 5.269 5.525 2.495 4.062 5.865 2.55 2.924 5.994 0 6.521 5.469 0 5.269 5.99 0 4.062 6.358 0 2.924 6.497 -2.147 6.521 5.045 -2.351 5.269 5.525 -2.495 4.062 5.865 -2.55 2.924 5.994 -3.883 6.521 3.883 -4.253 5.269 4.253 -4.514 4.062 4.514 -4.613 2.924 4.613 -5.045 6.521 2.147 -5.525 5.269 2.351 -5.865 4.062 2.495 -5.994 2.924 2.55 -5.469 6.521 0 -5.99 5.269 0 -6.358 4.062 0 -6.497 2.924 0 -5.045 6.521 -2.147 -5.525 5.269 -2.351 -5.865 4.062 -2.495 -5.994 2.924 -2.55 -3.883 6.521 -3.883 -4.253 5.269 -4.253 -4.514 4.062 -4.514 -4.613 2.924 -4.613 -2.147 6.521 -5.045 -2.351 5.269 -5.525 -2.495 4.062 -5.865 -2.55 2.924 -5.994 0 6.521 -5.469 0 5.269 -5.99 0 4.062 -6.358 0 2.924 -6.497 2.147 6.521 -5.045 2.351 5.269 -5.525 2.495 4.062 -5.865 2.55 2.924 -5.994 3.883 6.521 -3.883 4.253 5.269 -4.253 4.514 4.062 -4.514 4.613 2.924 -4.613 5.045 6.521 -2.147 5.525 5.269 -2.351 5.865 4.062 -2.495 5.994 2.924 -2.55 6.243 1.961 0 5.685 1.249 0 5.127 0.7652 0 4.873 0.4873 0 5.76 1.961 2.451 5.244 1.249 2.231 4.729 0.7652 2.012 4.495 0.4873 1.913 4.433 1.961 4.433 4.036 1.249 4.036 3.64 0.7652 3.64 3.46 0.4873 3.46 2.451 1.961 5.76 2.231 1.249 5.244 2.012 0.7652 4.729 1.913 0.4873 4.495 0 1.961 6.243 0 1.249 5.685 0 0.7652 5.127 0 0.4873 4.873 -2.451 1.961 5.76 -2.231 1.249 5.244 -2.012 0.7652 4.729 -1.913 0.4873 4.495 -4.433 1.961 4.433 -4.036 1.249 4.036 -3.64 0.7652 3.64 -3.46 0.4873 3.46 -5.76 1.961 2.451 -5.244 1.249 2.231 -4.729 0.7652 2.012 -4.495 0.4873 1.913 -6.243 1.961 0 -5.685 1.249 0 -5.127 0.7652 0 -4.873 0.4873 0 -5.76 1.961 -2.451 -5.244 1.249 -2.231 -4.729 0.7652 -2.012 -4.495 0.4873 -1.913 -4.433 1.961 -4.433 -4.036 1.249 -4.036 -3.64 0.7652 -3.64 -3.46 0.4873 -3.46 -2.451 1.961 -5.76 -2.231 1.249 -5.244 -2.012 0.7652 -4.729 -1.913 0.4873 -4.495 0 1.961 -6.243 0 1.249 -5.685 0 0.7652 -5.127 0 0.4873 -4.873 2.451 1.961 -5.76 2.231 1.249 -5.244 2.012 0.7652 -4.729 1.913 0.4873 -4.495 4.433 1.961 -4.433 4.036 1.249 -4.036 3.64 0.7652 -3.64 3.46 0.4873 -3.46 5.76 1.961 -2.451 5.244 1.249 -2.231 4.729 0.7652 -2.012 4.495 0.4873 -1.913 4.763 0.3084 0 4.172 0.1523 0 2.714 0.04188 0 0 0 0 4.393 0.3084 1.869 3.849 0.1523 1.638 2.504 0.04188 1.065 3.381 0.3084 3.381 2.962 0.1523 2.962 1.927 0.04188 1.927 1.869 0.3084 4.393 1.638 0.1523 3.849 1.065 0.04188 2.504 0 0.3084 4.763 0 0.1523 4.172 0 0.04188 2.714 -1.869 0.3084 4.393 -1.638 0.1523 3.849 -1.065 0.04188 2.504 -3.381 0.3084 3.381 -2.962 0.1523 2.962 -1.927 0.04188 1.927 -4.393 0.3084 1.869 -3.849 0.1523 1.638 -2.504 0.04188 1.065 -4.763 0.3084 0 -4.172 0.1523 0 -2.714 0.04188 0 -4.393 0.3084 -1.869 -3.849 0.1523 -1.638 -2.504 0.04188 -1.065 -3.381 0.3084 -3.381 -2.962 0.1523 -2.962 -1.927 0.04188 -1.927 -1.869 0.3084 -4.393 -1.638 0.1523 -3.849 -1.065 0.04188 -2.504 0 0.3084 -4.763 0 0.1523 -4.172 0 0.04188 -2.714 1.869 0.3084 -4.393 1.638 0.1523 -3.849 1.065 0.04188 -2.504 3.381 0.3084 -3.381 2.962 0.1523 -2.962 1.927 0.04188 -1.927 4.393 0.3084 -1.869 3.849 0.1523 -1.638 2.504 0.04188 -1.065'/>
+            </IndexedFaceSet>
+          </Shape>
+        </CADFace>
+      </CADPart>
+      <CADPart name='Spout'>
+        <CADFace>
+          <Shape containerField='shape'>
+            <Appearance USE='APP01'/>
+            <IndexedFaceSet ccw='true' coordIndex='0 5 6 -1 6 1 0 -1 1 6 7 -1 7 2 1 -1 2 7 8 -1 8 3 2 -1 3 8 9 -1 9 4 3 -1 5 10 11 -1 11 6 5 -1 6 11 12 -1 12 7 6 -1 7 12 13 -1 13 8 7 -1 8 13 14 -1 14 9 8 -1 10 15 16 -1 16 11 10 -1 11 16 17 -1 17 12 11 -1 12 17 18 -1 18 13 12 -1 13 18 19 -1 19 14 13 -1 15 20 21 -1 21 16 15 -1 16 21 22 -1 22 17 16 -1 17 22 23 -1 23 18 17 -1 18 23 24 -1 24 19 18 -1 20 25 26 -1 26 21 20 -1 21 26 27 -1 27 22 21 -1 22 27 28 -1 28 23 22 -1 23 28 29 -1 29 24 23 -1 25 30 31 -1 31 26 25 -1 26 31 32 -1 32 27 26 -1 27 32 33 -1 33 28 27 -1 28 33 34 -1 34 29 28 -1 30 35 36 -1 36 31 30 -1 31 36 37 -1 37 32 31 -1 32 37 38 -1 38 33 32 -1 33 38 39 -1 39 34 33 -1 35 0 1 -1 1 36 35 -1 36 1 2 -1 2 37 36 -1 37 2 3 -1 3 38 37 -1 38 3 4 -1 4 39 38 -1 4 9 44 -1 44 40 4 -1 40 44 45 -1 45 41 40 -1 41 45 46 -1 46 42 41 -1 42 46 47 -1 47 43 42 -1 9 14 48 -1 48 44 9 -1 44 48 49 -1 49 45 44 -1 45 49 50 -1 50 46 45 -1 46 50 51 -1 51 47 46 -1 14 19 52 -1 52 48 14 -1 48 52 53 -1 53 49 48 -1 49 53 54 -1 54 50 49 -1 50 54 55 -1 55 51 50 -1 19 24 56 -1 56 52 19 -1 52 56 57 -1 57 53 52 -1 53 57 58 -1 58 54 53 -1 54 58 59 -1 59 55 54 -1 24 29 60 -1 60 56 24 -1 56 60 61 -1 61 57 56 -1 57 61 62 -1 62 58 57 -1 58 62 63 -1 63 59 58 -1 29 34 64 -1 64 60 29 -1 60 64 65 -1 65 61 60 -1 61 65 66 -1 66 62 61 -1 62 66 67 -1 67 63 62 -1 34 39 68 -1 68 64 34 -1 64 68 69 -1 69 65 64 -1 65 69 70 -1 70 66 65 -1 66 70 71 -1 71 67 66 -1 39 4 40 -1 40 68 39 -1 68 40 41 -1 41 69 68 -1 69 41 42 -1 42 70 69 -1 70 42 43 -1 43 71 70 -1' creaseAngle='0.5' solid='true'>
+              <Coordinate point='5.523 4.629 0 7.081 4.987 0 7.756 5.848 0 8.127 6.891 0 8.771 7.797 0 5.523 4.211 1.206 7.2 4.677 1.089 7.908 5.667 0.8314 8.312 6.825 0.5739 9.076 7.797 0.4568 5.523 3.289 1.608 7.462 3.994 1.452 8.243 5.269 1.109 8.72 6.681 0.7652 9.746 7.797 0.6091 5.523 2.368 1.206 7.723 3.31 1.089 8.578 4.871 0.8314 9.129 6.537 0.5739 10.42 7.797 0.4568 5.523 1.949 0 7.842 3 0 8.731 4.69 0 9.314 6.472 0 10.72 7.797 0 5.523 2.368 -1.206 7.723 3.31 -1.089 8.578 4.871 -0.8314 9.129 6.537 -0.5739 10.42 7.797 -0.4568 5.523 3.289 -1.608 7.462 3.994 -1.452 8.243 5.269 -1.109 8.72 6.681 -0.7652 9.746 7.797 -0.6091 5.523 4.211 -1.206 7.2 4.677 -1.089 7.908 5.667 -0.8314 8.312 6.825 -0.5739 9.076 7.797 -0.4568 9.005 7.934 0 9.177 7.979 0 9.228 7.934 0 9.096 7.797 0 9.331 7.94 0.4283 9.483 7.99 0.3655 9.488 7.943 0.3027 9.299 7.797 0.2741 10.05 7.955 0.571 10.16 8.014 0.4873 10.06 7.964 0.4035 9.746 7.797 0.3655 10.77 7.97 0.4283 10.83 8.037 0.3655 10.63 7.984 0.3027 10.19 7.797 0.2741 11.09 7.977 0 11.14 8.048 0 10.89 7.994 0 10.4 7.797 0 10.77 7.97 -0.4283 10.83 8.037 -0.3655 10.63 7.984 -0.3027 10.19 7.797 -0.2741 10.05 7.955 -0.571 10.16 8.014 -0.4873 10.06 7.964 -0.4035 9.746 7.797 -0.3655 9.331 7.94 -0.4283 9.483 7.99 -0.3655 9.488 7.943 -0.3027 9.299 7.797 -0.2741'/>
+            </IndexedFaceSet>
+          </Shape>
+        </CADFace>
+      </CADPart>
+      <CADPart name='Handle'>
+        <CADFace>
+          <Shape containerField='shape'>
+            <Appearance USE='APP01'/>
+            <IndexedFaceSet ccw='true' coordIndex='0 5 6 -1 6 1 0 -1 1 6 7 -1 7 2 1 -1 2 7 8 -1 8 3 2 -1 3 8 9 -1 9 4 3 -1 5 10 11 -1 11 6 5 -1 6 11 12 -1 12 7 6 -1 7 12 13 -1 13 8 7 -1 8 13 14 -1 14 9 8 -1 10 15 16 -1 16 11 10 -1 11 16 17 -1 17 12 11 -1 12 17 18 -1 18 13 12 -1 13 18 19 -1 19 14 13 -1 15 20 21 -1 21 16 15 -1 16 21 22 -1 22 17 16 -1 17 22 23 -1 23 18 17 -1 18 23 24 -1 24 19 18 -1 20 25 26 -1 26 21 20 -1 21 26 27 -1 27 22 21 -1 22 27 28 -1 28 23 22 -1 23 28 29 -1 29 24 23 -1 25 30 31 -1 31 26 25 -1 26 31 32 -1 32 27 26 -1 27 32 33 -1 33 28 27 -1 28 33 34 -1 34 29 28 -1 30 35 36 -1 36 31 30 -1 31 36 37 -1 37 32 31 -1 32 37 38 -1 38 33 32 -1 33 38 39 -1 39 34 33 -1 35 0 1 -1 1 36 35 -1 36 1 2 -1 2 37 36 -1 37 2 3 -1 3 38 37 -1 38 3 4 -1 4 39 38 -1 4 9 44 -1 44 40 4 -1 40 44 45 -1 45 41 40 -1 41 45 46 -1 46 42 41 -1 42 46 47 -1 47 43 42 -1 9 14 48 -1 48 44 9 -1 44 48 49 -1 49 45 44 -1 45 49 50 -1 50 46 45 -1 46 50 51 -1 51 47 46 -1 14 19 52 -1 52 48 14 -1 48 52 53 -1 53 49 48 -1 49 53 54 -1 54 50 49 -1 50 54 55 -1 55 51 50 -1 19 24 56 -1 56 52 19 -1 52 56 57 -1 57 53 52 -1 53 57 58 -1 58 54 53 -1 54 58 59 -1 59 55 54 -1 24 29 60 -1 60 56 24 -1 56 60 61 -1 61 57 56 -1 57 61 62 -1 62 58 57 -1 58 62 63 -1 63 59 58 -1 29 34 64 -1 64 60 29 -1 60 64 65 -1 65 61 60 -1 61 65 66 -1 66 62 61 -1 62 66 67 -1 67 63 62 -1 34 39 68 -1 68 64 34 -1 64 68 69 -1 69 65 64 -1 65 69 70 -1 70 66 65 -1 66 70 71 -1 71 67 66 -1 39 4 40 -1 40 68 39 -1 68 40 41 -1 41 69 68 -1 69 41 42 -1 42 70 69 -1 70 42 43 -1 43 71 70 -1' creaseAngle='0.5' solid='true'>
+              <Coordinate point='-5.198 6.578 0 -6.715 6.567 0 -7.837 6.487 0 -8.533 6.27 0 -8.771 5.848 0 -5.147 6.693 0.5482 -6.761 6.679 0.5482 -7.945 6.587 0.5482 -8.675 6.336 0.5482 -8.924 5.848 0.5482 -5.035 6.944 0.7309 -6.86 6.927 0.7309 -8.182 6.807 0.7309 -8.987 6.481 0.7309 -9.259 5.848 0.7309 -4.924 7.195 0.5482 -6.96 7.174 0.5482 -8.42 7.027 0.5482 -9.299 6.627 0.5482 -9.594 5.848 0.5482 -4.873 7.309 0 -7.005 7.287 0 -8.528 7.127 0 -9.441 6.693 0 -9.746 5.848 0 -4.924 7.195 -0.5482 -6.96 7.174 -0.5482 -8.42 7.027 -0.5482 -9.299 6.627 -0.5482 -9.594 5.848 -0.5482 -5.035 6.944 -0.7309 -6.86 6.927 -0.7309 -8.182 6.807 -0.7309 -8.987 6.481 -0.7309 -9.259 5.848 -0.7309 -5.147 6.693 -0.5482 -6.761 6.679 -0.5482 -7.945 6.587 -0.5482 -8.675 6.336 -0.5482 -8.924 5.848 -0.5482 -8.644 5.185 0 -8.243 4.386 0 -7.538 3.586 0 -6.497 2.924 0 -8.783 5.121 0.5482 -8.342 4.288 0.5482 -7.572 3.466 0.5482 -6.446 2.771 0.5482 -9.087 4.98 0.7309 -8.558 4.073 0.7309 -7.648 3.201 0.7309 -6.335 2.436 0.7309 -9.392 4.84 0.5482 -8.774 3.859 0.5482 -7.724 2.936 0.5482 -6.223 2.101 0.5482 -9.53 4.776 0 -8.873 3.761 0 -7.759 2.815 0 -6.172 1.949 0 -9.392 4.84 -0.5482 -8.774 3.859 -0.5482 -7.724 2.936 -0.5482 -6.223 2.101 -0.5482 -9.087 4.98 -0.7309 -8.558 4.073 -0.7309 -7.648 3.201 -0.7309 -6.335 2.436 -0.7309 -8.783 5.121 -0.5482 -8.342 4.288 -0.5482 -7.572 3.466 -0.5482 -6.446 2.771 -0.5482'/>
+            </IndexedFaceSet>
+          </Shape>
+        </CADFace>
+      </CADPart>
+      <CADPart name='Lid'>
+        <CADFace>
+          <Shape containerField='shape'>
+            <Appearance USE='APP01'/>
+            <IndexedFaceSet ccw='true' coordIndex='0 0 5 -1 5 1 0 -1 1 5 6 -1 6 2 1 -1 2 6 7 -1 7 3 2 -1 3 7 8 -1 8 4 3 -1 0 0 9 -1 9 5 0 -1 5 9 10 -1 10 6 5 -1 6 10 11 -1 11 7 6 -1 7 11 12 -1 12 8 7 -1 0 0 13 -1 13 9 0 -1 9 13 14 -1 14 10 9 -1 10 14 15 -1 15 11 10 -1 11 15 16 -1 16 12 11 -1 0 0 17 -1 17 13 0 -1 13 17 18 -1 18 14 13 -1 14 18 19 -1 19 15 14 -1 15 19 20 -1 20 16 15 -1 0 0 21 -1 21 17 0 -1 17 21 22 -1 22 18 17 -1 18 22 23 -1 23 19 18 -1 19 23 24 -1 24 20 19 -1 0 0 25 -1 25 21 0 -1 21 25 26 -1 26 22 21 -1 22 26 27 -1 27 23 22 -1 23 27 28 -1 28 24 23 -1 0 0 29 -1 29 25 0 -1 25 29 30 -1 30 26 25 -1 26 30 31 -1 31 27 26 -1 27 31 32 -1 32 28 27 -1 0 0 33 -1 33 29 0 -1 29 33 34 -1 34 30 29 -1 30 34 35 -1 35 31 30 -1 31 35 36 -1 36 32 31 -1 0 0 37 -1 37 33 0 -1 33 37 38 -1 38 34 33 -1 34 38 39 -1 39 35 34 -1 35 39 40 -1 40 36 35 -1 0 0 41 -1 41 37 0 -1 37 41 42 -1 42 38 37 -1 38 42 43 -1 43 39 38 -1 39 43 44 -1 44 40 39 -1 0 0 45 -1 45 41 0 -1 41 45 46 -1 46 42 41 -1 42 46 47 -1 47 43 42 -1 43 47 48 -1 48 44 43 -1 0 0 49 -1 49 45 0 -1 45 49 50 -1 50 46 45 -1 46 50 51 -1 51 47 46 -1 47 51 52 -1 52 48 47 -1 0 0 53 -1 53 49 0 -1 49 53 54 -1 54 50 49 -1 50 54 55 -1 55 51 50 -1 51 55 56 -1 56 52 51 -1 0 0 57 -1 57 53 0 -1 53 57 58 -1 58 54 53 -1 54 58 59 -1 59 55 54 -1 55 59 60 -1 60 56 55 -1 0 0 61 -1 61 57 0 -1 57 61 62 -1 62 58 57 -1 58 62 63 -1 63 59 58 -1 59 63 64 -1 64 60 59 -1 0 0 1 -1 1 61 0 -1 61 1 2 -1 2 62 61 -1 62 2 3 -1 3 63 62 -1 63 3 4 -1 4 64 63 -1 4 8 69 -1 69 65 4 -1 65 69 70 -1 70 66 65 -1 66 70 71 -1 71 67 66 -1 67 71 72 -1 72 68 67 -1 8 12 73 -1 73 69 8 -1 69 73 74 -1 74 70 69 -1 70 74 75 -1 75 71 70 -1 71 75 76 -1 76 72 71 -1 12 16 77 -1 77 73 12 -1 73 77 78 -1 78 74 73 -1 74 78 79 -1 79 75 74 -1 75 79 80 -1 80 76 75 -1 16 20 81 -1 81 77 16 -1 77 81 82 -1 82 78 77 -1 78 82 83 -1 83 79 78 -1 79 83 84 -1 84 80 79 -1 20 24 85 -1 85 81 20 -1 81 85 86 -1 86 82 81 -1 82 86 87 -1 87 83 82 -1 83 87 88 -1 88 84 83 -1 24 28 89 -1 89 85 24 -1 85 89 90 -1 90 86 85 -1 86 90 91 -1 91 87 86 -1 87 91 92 -1 92 88 87 -1 28 32 93 -1 93 89 28 -1 89 93 94 -1 94 90 89 -1 90 94 95 -1 95 91 90 -1 91 95 96 -1 96 92 91 -1 32 36 97 -1 97 93 32 -1 93 97 98 -1 98 94 93 -1 94 98 99 -1 99 95 94 -1 95 99 100 -1 100 96 95 -1 36 40 101 -1 101 97 36 -1 97 101 102 -1 102 98 97 -1 98 102 103 -1 103 99 98 -1 99 103 104 -1 104 100 99 -1 40 44 105 -1 105 101 40 -1 101 105 106 -1 106 102 101 -1 102 106 107 -1 107 103 102 -1 103 107 108 -1 108 104 103 -1 44 48 109 -1 109 105 44 -1 105 109 110 -1 110 106 105 -1 106 110 111 -1 111 107 106 -1 107 111 112 -1 112 108 107 -1 48 52 113 -1 113 109 48 -1 109 113 114 -1 114 110 109 -1 110 114 115 -1 115 111 110 -1 111 115 116 -1 116 112 111 -1 52 56 117 -1 117 113 52 -1 113 117 118 -1 118 114 113 -1 114 118 119 -1 119 115 114 -1 115 119 120 -1 120 116 115 -1 56 60 121 -1 121 117 56 -1 117 121 122 -1 122 118 117 -1 118 122 123 -1 123 119 118 -1 119 123 124 -1 124 120 119 -1 60 64 125 -1 125 121 60 -1 121 125 126 -1 126 122 121 -1 122 126 127 -1 127 123 122 -1 123 127 128 -1 128 124 123 -1 64 4 65 -1 65 125 64 -1 125 65 66 -1 66 126 125 -1 126 66 67 -1 67 127 126 -1 127 67 68 -1 68 128 127 -1' creaseAngle='0.5' solid='true'>
+              <Coordinate DEF='Teapot01-COORD' point='0 10.23 0 1.107 10.07 0 1.056 9.685 0 0.6396 9.205 0 0.6497 8.771 0 1.021 10.07 0.4355 0.9743 9.685 0.4154 0.5901 9.205 0.2514 0.5994 8.771 0.255 0.7867 10.07 0.7867 0.7505 9.685 0.7505 0.4544 9.205 0.4544 0.4613 8.771 0.4613 0.4355 10.07 1.021 0.4154 9.685 0.9743 0.2514 9.205 0.5901 0.255 8.771 0.5994 0 10.07 1.107 0 9.685 1.056 0 9.205 0.6396 0 8.771 0.6497 -0.4355 10.07 1.021 -0.4154 9.685 0.9743 -0.2514 9.205 0.5901 -0.255 8.771 0.5994 -0.7867 10.07 0.7867 -0.7505 9.685 0.7505 -0.4544 9.205 0.4544 -0.4613 8.771 0.4613 -1.021 10.07 0.4355 -0.9743 9.685 0.4154 -0.5901 9.205 0.2514 -0.5994 8.771 0.255 -1.107 10.07 0 -1.056 9.685 0 -0.6396 9.205 0 -0.6497 8.771 0 -1.021 10.07 -0.4355 -0.9743 9.685 -0.4154 -0.5901 9.205 -0.2514 -0.5994 8.771 -0.255 -0.7867 10.07 -0.7867 -0.7505 9.685 -0.7505 -0.4544 9.205 -0.4544 -0.4613 8.771 -0.4613 -0.4355 10.07 -1.021 -0.4154 9.685 -0.9743 -0.2514 9.205 -0.5901 -0.255 8.771 -0.5994 0 10.07 -1.107 0 9.685 -1.056 0 9.205 -0.6396 0 8.771 -0.6497 0.4355 10.07 -1.021 0.4154 9.685 -0.9743 0.2514 9.205 -0.5901 0.255 8.771 -0.5994 0.7867 10.07 -0.7867 0.7505 9.685 -0.7505 0.4544 9.205 -0.4544 0.4613 8.771 -0.4613 1.021 10.07 -0.4355 0.9743 9.685 -0.4154 0.5901 9.205 -0.2514 0.5994 8.771 -0.255 1.482 8.482 0 2.68 8.284 0 3.756 8.086 0 4.223 7.797 0 1.367 8.482 0.5818 2.472 8.284 1.052 3.465 8.086 1.474 3.896 7.797 1.658 1.052 8.482 1.052 1.903 8.284 1.903 2.667 8.086 2.667 2.998 7.797 2.998 0.5818 8.482 1.367 1.052 8.284 2.472 1.474 8.086 3.465 1.658 7.797 3.896 0 8.482 1.482 0 8.284 2.68 0 8.086 3.756 0 7.797 4.223 -0.5818 8.482 1.367 -1.052 8.284 2.472 -1.474 8.086 3.465 -1.658 7.797 3.896 -1.052 8.482 1.052 -1.903 8.284 1.903 -2.667 8.086 2.667 -2.998 7.797 2.998 -1.367 8.482 0.5818 -2.472 8.284 1.052 -3.465 8.086 1.474 -3.896 7.797 1.658 -1.482 8.482 0 -2.68 8.284 0 -3.756 8.086 0 -4.223 7.797 0 -1.367 8.482 -0.5818 -2.472 8.284 -1.052 -3.465 8.086 -1.474 -3.896 7.797 -1.658 -1.052 8.482 -1.052 -1.903 8.284 -1.903 -2.667 8.086 -2.667 -2.998 7.797 -2.998 -0.5818 8.482 -1.367 -1.052 8.284 -2.472 -1.474 8.086 -3.465 -1.658 7.797 -3.896 0 8.482 -1.482 0 8.284 -2.68 0 8.086 -3.756 0 7.797 -4.223 0.5818 8.482 -1.367 1.052 8.284 -2.472 1.474 8.086 -3.465 1.658 7.797 -3.896 1.052 8.482 -1.052 1.903 8.284 -1.903 2.667 8.086 -2.667 2.998 7.797 -2.998 1.367 8.482 -0.5818 2.472 8.284 -1.052 3.465 8.086 -1.474 3.896 7.797 -1.658'/>
+            </IndexedFaceSet>
+          </Shape>
+        </CADFace>
+      </CADPart>
+    </CADAssembly>
+  </Scene>
+</X3D>
diff --git a/examples/x3d-3.1.xsd b/examples/x3d-3.1.xsd
new file mode 100644
index 0000000..4d3f919
--- /dev/null
+++ b/examples/x3d-3.1.xsd
@@ -0,0 +1,7494 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XMLSpy v2006 sp1 U (http://www.altova.com) by Don Brutzman (Naval Postgraduate School) -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" version="3.1.0">
+	<!--======================================================================-->
+	<!-- Public and private schema extension mechanisms -->
+	<xs:include schemaLocation="x3d-3.1-Web3dExtensionsPublic.xsd"/>
+	<xs:include schemaLocation="x3d-3.1-Web3dExtensionsPrivate.xsd"/>
+	<!--======================================================================-->
+	<xs:annotation>
+		<xs:appinfo>XML Schema for the Extensible 3D (X3D) Graphics Specification tagset</xs:appinfo>
+		<xs:documentation><![CDATA[
+=============================================================================
+
+X3D Specification Schema:  	http://www.web3d.org/specifications/x3d-3.1.xsd
+
+Schema extensions:		http://www.web3d.org/specifications/x3d-3.1-Web3dExtensionsPublic.xsd
+				http://www.web3d.org/specifications/x3d-3.1-Web3dExtensionsPrivate.xsd
+
+Web3D extensions update URL:	http://www.web3d.org/x3d/content/x3d-3.1-Web3dExtensionsPublic.xsd
+
+Revised:  10 January 2006
+
+Author:   Don Brutzman
+
+Acknowledgements:
+- Thanks for excellent insights and assistance from Len Bullard,
+  Justin Couch, Leonard Daly, Paul Diefenbach, Rick Goldberg, Bryan Housel,
+  Alan Hudson, Chris Lilley, Braden McDaniel, Tony Parisi, Nick Polys,
+  Dick Puk, Jeff Sonstein, C. Michael Sperberg-McQueen, Henry Thompson
+  and Joe Williams.
+- Rick Goldberg of the Sun Java3D team wrote the first two versions of the
+  SAI API using IDL, and provided invaluable help on the schema-based SAI.
+- Joe Williams of HyperMultiMedia documented and further developed
+  the scene graph interface hierarchy, making this schema possible.
+- Alan Hudson added many default values and performed consistency checks.
+
+- XML Schema validator:		http://www.w3.org/2001/03/webdata/xsv
+
+Design summary:
+- Schemas define XML tagsets in depth using a native-XML format.
+- Schemas are an alternative to Document Type Definitions (DTDs).
+- This X3D Schema matches the functionality of the X3D DTD and
+  provides significant further capabilities, including strong type
+  checking of both node and attribute values.
+- An XSLT stylesheet can be applied to this schema to autogenerate
+  source code for the Scene Authoring Interface (SAI), documentation
+  of node lists, etc.
+
+Design patterns:
+- X3D nodes implement X3D node types and are represented by XML elements.
+- X3D non-node fields are represented by XML attributes using field types.
+- X3D field types are represented by XML Schema (xsd) simpleTypes.
+- XML Schema list types are used to augment XML Schema simple types, to
+  create arrays of X3D base types (integerList etc).
+- X3D node types (X3DGroupingNode etc.) are represented by Schema complexTypes.
+- X3D node types are captured as XML Schema complexType definitions.  These match 
+  the X3D interface hierarchy, capture strong typing of node relationships, and collect 
+  common attributes shared among node types.  These features also provide functional 
+  consistency between scene graph content and the X3D Scene Authoring Interface (SAI) 
+  application programming interface (API).
+- XML Schema xs:group element definitions provide child-node content models,
+  since complexTypes can't be used as references to unnamed element children.
+
+X3D Schema version numbering:
+- 0.4  Nodes for Core and Base profiles (20 November 2000)
+- 0.5  Nodes for DIS, GeoSpatial, HumanoidAnimation, Nurbs, any others in Full profile
+- 0.6  Autogenerated Scene Authoring Interface (SAI).  First show Java interfaces,
+       then show multiple formats including Interface Description Language (IDL)
+       and matching Java classes that implement the Java interfaces
+- 0.7  Resolution of compromise/compact representations (wrapper tags), and use of
+       DTD internal parameter-entity names updated to match interface hierarchy
+       naming scheme
+- 0.8  Exemplar content and authoring tools that correspond to X3D Schema tagset
+- 2.9  Public review and Xj3D open-source implementation version
+- 3.0  X3D Task Group consensus for inclusion in X3D Specification
+- 3.1  X3D Specification Amendment 1
+- 3.2  X3D Specification Amendment 2
+
+=============================================================================
+]]></xs:documentation>
+	</xs:annotation>
+	<!--======================================================================-->
+	<!--Several pattern possibilities for urls/URNs are conceivable, perhaps a type definition or regex pattern is preferable.-->
+	<xs:simpleType name="BoundingBoxSize">
+		<xs:annotation>
+			<xs:appinfo>X3DBoundedObject indicates that bounding box values can be provided (or computed) for this node and any children.  Bounding box values approximate the volume of a containing box in the current coordinate system.  Bounding box values can optionally be provided to (or calculated by) 3D browsers.  Bounding box values are hints that can improve performance by allowing browsers to inexpensively cull geometry, thus avoiding the computational cost of trying to drawing shapes when they are outside of the current view.  BoundingBoxSize dimensions are non-negative values.  Default value (-1 -1 -1) indicates that no bounding box size has been computed.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/group.html#Boundingboxes"/>
+		</xs:annotation>
+		<xs:restriction base="SFVec3f"/>
+	</xs:simpleType>
+	<!--======================================================================-->
+	<!-- Simple types are used as Field types for X3D attributes. -->
+	<!-- Special-case range restrictions on regular base types also provided. -->
+	<xs:simpleType name="SFBool">
+		<xs:annotation>
+			<xs:appinfo>
+SFBool is a logical type with possible values (true|false) to match the XML boolean type.
+Hint:  X3D SFBool values are lower case (true|false) in order to maintain
+compatibility with other XML documents.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/fieldsDef.html#SFBool"/>
+		</xs:annotation>
+		<xs:restriction base="xs:boolean"/>
+	</xs:simpleType>
+	<xs:simpleType name="MFBool">
+		<xs:annotation>
+			<xs:appinfo>
+MFBool is an array of Boolean values.
+Type MFBool was previously undefined in the VRML 97 Specification, but nevertheless needed for event utilities and scripting.
+Example use: MFBool is useful for defining a series of behavior states using a BooleanSequencer prototype.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/fieldsDef.html#SFBool"/>
+		</xs:annotation>
+		<xs:list itemType="xs:boolean"/>
+	</xs:simpleType>
+	<xs:simpleType name="SFColor">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/fieldsDef.html#SFColor"/>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:whiteSpace value="collapse"/>
+			<xs:pattern value="((((\.[0-9]+|0(\.[0-9]*)?)((E|e)(\+|\-)?[0-9]+)?)|(1(\.[0]*)?((E|e)\-[0-9]+)?)|([1-9](\.[0-9]*)((E|e)\-[0-9]+))) (((\.[0-9]+|0(\.[0-9]*)?)((E|e)(\+|\-)?[0-9]+)?)|(1(\.[0]*)?((E|e)\-[0-9]+)?)|([1-9](\.[0-9]*)((E|e)\-[0-9]+))) (((\.[0-9]+|0(\.[0-9]*)?)((E|e)(\+|\-)?[0-9]+)?)|(1(\.[0]*)?((E|e)\-[0-9]+)?)|([1-9](\.[0-9]*)((E|e)\-[0-9]+))))?"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="MFColor">
+		<xs:annotation>
+			<xs:appinfo>Array values are optionally separated by commas.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/fieldsDef.html#SFColor"/>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:whiteSpace value="collapse"/>
+			<xs:pattern value="((((\.[0-9]+|0(\.[0-9]*)?)((E|e)(\+|\-)?[0-9]+)?)|(1(\.[0]*)?((E|e)\-[0-9]+)?)|([1-9](\.[0-9]*)((E|e)\-[0-9]+))) (((\.[0-9]+|0(\.[0-9]*)?)((E|e)(\+|\-)?[0-9]+)?)|(1(\.[0]*)?((E|e)\-[0-9]+)?)|([1-9](\.[0-9]*)((E|e)\-[0-9]+))) (((\.[0-9]+|0(\.[0-9]*)?)((E|e)(\+|\-)?[0-9]+)?)|(1(\.[0]*)?((E|e)\-[0-9]+)?)|([1-9](\.[0-9]*)((E|e)\-[0-9]+)))( )?(,)?( )?)*"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="SFColorRGBA">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/fieldsDef.html#SFColorRGBA"/>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:whiteSpace value="collapse"/>
+			<xs:pattern value="((((\.[0-9]+|0(\.[0-9]*)?)((E|e)(\+|\-)?[0-9]+)?)|(1(\.[0]*)?((E|e)\-[0-9]+)?)|([1-9](\.[0-9]*)((E|e)\-[0-9]+))) (((\.[0-9]+|0(\.[0-9]*)?)((E|e)(\+|\-)?[0-9]+)?)|(1(\.[0]*)?((E|e)\-[0-9]+)?)|([1-9](\.[0-9]*)((E|e)\-[0-9]+))) (((\.[0-9]+|0(\.[0-9]*)?)((E|e)(\+|\-)?[0-9]+)?)|(1(\.[0]*)?((E|e)\-[0-9]+)?)|([1-9](\.[0-9]*)((E|e)\-[0-9]+))) (((\.[0-9]+|0(\.[0-9]*)?)((E|e)(\+|\-)?[0-9]+)?)|(1(\.[0]*)?((E|e)\-[0-9]+)?)|([1-9](\.[0-9]*)((E|e)\-[0-9]+))))?"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="MFColorRGBA">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/fieldsDef.html#SFColorRGBA"/>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:whiteSpace value="collapse"/>
+			<xs:pattern value="((((\.[0-9]+|0(\.[0-9]*)?)((E|e)(\+|\-)?[0-9]+)?)|(1(\.[0]*)?((E|e)\-[0-9]+)?)|([1-9](\.[0-9]*)((E|e)\-[0-9]+))) (((\.[0-9]+|0(\.[0-9]*)?)((E|e)(\+|\-)?[0-9]+)?)|(1(\.[0]*)?((E|e)\-[0-9]+)?)|([1-9](\.[0-9]*)((E|e)\-[0-9]+))) (((\.[0-9]+|0(\.[0-9]*)?)((E|e)(\+|\-)?[0-9]+)?)|(1(\.[0]*)?((E|e)\-[0-9]+)?)|([1-9](\.[0-9]*)((E|e)\-[0-9]+))) (((\.[0-9]+|0(\.[0-9]*)?)((E|e)(\+|\-)?[0-9]+)?)|(1(\.[0]*)?((E|e)\-[0-9]+)?)|([1-9](\.[0-9]*)((E|e)\-[0-9]+)))( )?(,)?( )?)*"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="SFDouble">
+		<xs:annotation>
+			<xs:appinfo>SFDouble is a double-precision floating-point type.  Array values are optionally separated by commas.
+See GeoVRML 1.0 Recommended Practice, Section 2.3, Limitations Of Single-Precision for rationale.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/fieldsDef.html#SFDouble"/>
+		</xs:annotation>
+		<xs:restriction base="xs:double"/>
+	</xs:simpleType>
+	<xs:simpleType name="MFDouble">
+		<xs:annotation>
+			<xs:appinfo>MFDouble is an array of Double values, i.e. a double-precision floating-point array type.
+See GeoVRML 1.0 Recommended Practice, Section 2.3, Limitations Of Single-Precision for rationale.
+SFDouble/MFDouble are analagous to SFDouble/MFDouble.  Array values are optionally separated by commas.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/fieldsDef.html#SFDouble"/>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:whiteSpace value="collapse"/>
+			<xs:pattern value="(((\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)?)?( )?(,)?( )?)*"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="SFFloat">
+		<xs:annotation>
+			<xs:appinfo>SFFloat is a single-precision floating-point type.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/fieldsDef.html#SFFloat"/>
+		</xs:annotation>
+		<xs:restriction base="xs:float"/>
+	</xs:simpleType>
+	<!--	SFFloatNonNegative and SFFloatPositive no longer needed
+	<xs:simpleType name="SFFloatNonNegative">
+		<xs:annotation>
+			<xs:appinfo>SFFloat is a single-precision floating-point type.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/fieldsDef.html#SFFloat"/>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:whiteSpace value="collapse"/>
+			<xs:pattern value="((\+)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)?)?"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="SFFloatPositive">
+		<xs:annotation>
+			<xs:appinfo>SFFloat is a single-precision floating-point type.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/fieldsDef.html#SFFloat"/>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:whiteSpace value="collapse"/>
+			<xs:pattern value="((\+)?(0\.(0)*[1-9][0-9]*|([1-9]([0-9]*)?)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)?))?"/>
+		</xs:restriction>
+	</xs:simpleType>  -->
+	<xs:simpleType name="MFFloat">
+		<xs:annotation>
+			<xs:appinfo>MFFloat is an array of SFFloat values, i.e. a single-precision floating-point array type.  Array values are optionally separated by commas.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/fieldsDef.html#SFFloat"/>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:whiteSpace value="collapse"/>
+			<xs:pattern value="(((\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)?)?( )?(,)?( )?)*"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="SFImage">
+		<xs:annotation>
+			<xs:appinfo>The SFImage field specifies a single uncompressed 2-dimensional pixel image.  SFImage fields contain three integers representing the width, height and number of components in the image, followed by width×height hexadecimal or integer values representing the pixels in the image.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/fieldsDef.html#SFImage"/>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:minLength value="4"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="MFImage">
+		<xs:annotation>
+			<xs:appinfo>MFImage is an array of SFImage values.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/fieldsDef.html#SFImage"/>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:minLength value="4"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="SFInt32">
+		<xs:annotation>
+			<xs:appinfo>An SFInt32 field specifies one 32-bit signed integer.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/fieldsDef.html#SFInt32"/>
+		</xs:annotation>
+		<xs:restriction base="xs:integer"/>
+	</xs:simpleType>
+	<xs:simpleType name="MFInt32">
+		<xs:annotation>
+			<xs:appinfo>An MFInt32 field defines an array of 32-bit signed integers.  Array values are optionally separated by commas.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/technicalinfo/specifications/vrml97/part1/fieldsRef.html#SFInt32"/>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:whiteSpace value="collapse"/>
+			<xs:pattern value="((\+|\-)?(0|[1-9][0-9]*)?( )?(,)?( )?)*"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="SFRotation">
+		<xs:annotation>
+			<xs:appinfo>SFRotation is an axis-angle 4-tuple, indicating X-Y-Z direction plus angle orientation about that axis.  The first three values specify a normalized rotation axis vector about which the rotation takes place. (Thus the first three values must be within the range [-1..+1] in order to represent a normalized unit vector.  Problem:  scientific notation allows leading digit.)  The fourth value specifies the amount of right-handed rotation about that axis in radians.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/fieldsDef.html#SFRotation"/>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:whiteSpace value="collapse"/>
+			<xs:pattern value="((\+|\-)?(((\.[0-9]+|0(\.[0-9]*)?)((E|e)(\+|\-)?[0-9]+)?)|(1(\.[0]*)?((E|e)\-[0-9]+)?)|([1-9](\.[0-9]*)((E|e)\-[0-9]+))) (\+|\-)?(((\.[0-9]+|0(\.[0-9]*)?)((E|e)(\+|\-)?[0-9]+)?)|(1(\.[0]*)?((E|e)\-[0-9]+)?)|([1-9](\.[0-9]*)((E|e)\-[0-9]+))) (\+|\-)?(((\.[0-9]+|0(\.[0-9]*)?)((E|e)(\+|\-)?[0-9]+)?)|(1(\.[0]*)?((E|e)\-[0-9]+)?)|([1-9](\.[0-9]*)((E|e)\-[0-9]+))) (\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)?)?"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="MFRotation">
+		<xs:annotation>
+			<xs:appinfo>MFRotation is an array of SFRotation values.  Array values are optionally separated by commas.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/fieldsDef.html#SFRotation"/>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:whiteSpace value="collapse"/>
+			<xs:pattern value="((\+|\-)?(((\.[0-9]+|0(\.[0-9]*)?)((E|e)(\+|\-)?[0-9]+)?)|(1(\.[0]*)?((E|e)\-[0-9]+)?)|([1-9](\.[0-9]*)((E|e)\-[0-9]+))) (\+|\-)?(((\.[0-9]+|0(\.[0-9]*)?)((E|e)(\+|\-)?[0-9]+)?)|(1(\.[0]*)?((E|e)\-[0-9]+)?)|([1-9](\.[0-9]*)((E|e)\-[0-9]+))) (\+|\-)?(((\.[0-9]+|0(\.[0-9]*)?)((E|e)(\+|\-)?[0-9]+)?)|(1(\.[0]*)?((E|e)\-[0-9]+)?)|([1-9](\.[0-9]*)((E|e)\-[0-9]+))) (\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)?( )?(,)?( )?)*"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="SFString">
+		<xs:annotation>
+			<xs:appinfo>SFString defines a single string encoded with the UTF-8 universal character set.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/fieldsDef.html#SFString"/>
+		</xs:annotation>
+		<xs:restriction base="xs:string"/>
+	</xs:simpleType>
+	<xs:simpleType name="MFString">
+		<xs:annotation>
+			<xs:appinfo>MFString is an array of SFString values, each "quoted" and separated by whitespace.  Array values are optionally separated by commas.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/fieldsDef.html#SFString"/>
+		</xs:annotation>
+		<xs:list itemType="xs:string"/>
+	</xs:simpleType>
+	<xs:simpleType name="SFTime">
+		<xs:annotation>
+			<xs:appinfo>The SFTime field specifies a single time value.  Time values are specified as a double-precision floating point number. Typically, SFTime fields represent the number of seconds since Jan 1, 1970, 00:00:00 GMT.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/fieldsDef.html#SFTime"/>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:whiteSpace value="collapse"/>
+			<xs:pattern value="((-1(.(0)*)?)|((\+)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)?))?"/>
+		</xs:restriction>
+		<!-- base type xs:time not usable due to different nomenclatures for time values. -->
+	</xs:simpleType>
+	<xs:simpleType name="MFTime">
+		<xs:annotation>
+			<xs:appinfo>MFTime is an array of SFTime values.  Array values are optionally separated by commas.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/fieldsDef.html#SFTime"/>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:whiteSpace value="collapse"/>
+			<xs:pattern value="((-1(.(0)*)?|(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)?( )?(,)?( )?)*)?"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="SFVec2f">
+		<xs:annotation>
+			<xs:appinfo>SFVec2f is a 2-tuple pair of SFFloat values.
+Hint: SFVec2f can be used to specify a 2D single-precision coordinate.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/fieldsDef.html#SFVec2f"/>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:whiteSpace value="collapse"/>
+			<xs:pattern value="((\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)? (\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)?)?"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="MFVec2f">
+		<xs:annotation>
+			<xs:appinfo>MFVec2f is an array of SFVec2f values.  Array values are optionally separated by commas.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/fieldsDef.html#SFVec2f"/>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:whiteSpace value="collapse"/>
+			<xs:pattern value="((\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)? (\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)?( )?(,)?( )?)*"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="SFVec2d">
+		<xs:annotation>
+			<xs:appinfo>SFVec2d is a 2-tuple pair of SFDouble values.  Array values are optionally separated by commas.
+Hint: SFVec2d can be used to specify a 2D double-precision coordinate.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/fieldsDef.html#SFVec2d"/>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:whiteSpace value="collapse"/>
+			<xs:pattern value="((\+|\-)?([0-9]+(\.[0-9]*)?|\.[0-9]+)((E|e)(\+|\-)?[0-9]+)? (\+|\-)?([0-9]+(\.[0-9]*)?|\.[0-9]+)((E|e)(\+|\-)?[0-9]+)?)?"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="MFVec2d">
+		<xs:annotation>
+			<xs:appinfo>MFVec2d is an array of SFVec2d values.  Array values are optionally separated by commas.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/fieldsDef.html#SFVec2d"/>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:whiteSpace value="collapse"/>
+			<xs:pattern value="((\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)? (\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)?( )?(,)?( )?)*"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="SFVec3f">
+		<xs:annotation>
+			<xs:appinfo>SFVec3f is a 3-tuple triplet of SFFloat values.
+Hint:  SFVec3f can be used to specify a 3D coordinate or a 3D scale value.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/fieldsDef.html#SFVec3f"/>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:whiteSpace value="collapse"/>
+			<xs:pattern value="((\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)? (\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)? (\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)?)?"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="MFVec3f">
+		<xs:annotation>
+			<xs:appinfo>MFVec3f is an array of SFVec3f values.  Array values are optionally separated by commas.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/fieldsDef.html#SFVec3f"/>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:whiteSpace value="collapse"/>
+			<xs:pattern value="((\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)? (\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)? (\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)?( )?(,)?( )?)*"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="SFVec3d">
+		<xs:annotation>
+			<xs:appinfo>SFVec3d is a 3-tuple triplet of SFDouble values.
+See GeoVRML 1.0 Recommended Practice, Section 2.3, Limitations Of Single-Precision.
+Hint:  SFVec3d can be used to specify a georeferenced 3D coordinate.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/fieldsDef.html#SFVec3d"/>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:whiteSpace value="collapse"/>
+			<xs:pattern value="((\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)? (\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)? (\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)?)?"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="MFVec3d">
+		<xs:annotation>
+			<xs:appinfo>MFVec3d is an array of SFVec3d values.  Array values are optionally separated by commas.
+See GeoVRML 1.0 Recommended Practice, Section 2.3, Limitations Of Single-Precision.
+Hint:  MFVec3d can be used to specify a list of georeferenced 3D coordinates.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/fieldsDef.html#SFVec3d"/>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:whiteSpace value="collapse"/>
+			<xs:pattern value="((\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)? (\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)? (\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)?( )?(,)?( )?)*"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="SFVec4f">
+		<xs:annotation>
+			<xs:appinfo>SFVec4f is a 4-tuple set of single-precision floating-point values, specifying a 3D homogeneous vector.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/fieldsDef.html#SFVec4f"/>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:whiteSpace value="collapse"/>
+			<xs:pattern value="((\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)? (\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)? (\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)? (\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)?)?"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="MFVec4f">
+		<xs:annotation>
+			<xs:appinfo>MFVec4f is zero or more SFVec4f values.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/fieldsDef.html#SFVec4f"/>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:whiteSpace value="collapse"/>
+			<xs:pattern value="((\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)? (\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)? (\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)? (\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)?( )?(,)?( )?)*"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="SFVec4d">
+		<xs:annotation>
+			<xs:appinfo>SFVec4d is a 4-tuple set of double-precision floating-point values, specifying a 3D homogeneous vector.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/fieldsDef.html#SFVec4d"/>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:whiteSpace value="collapse"/>
+			<xs:pattern value="((\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)? (\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)? (\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)? (\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)?)?"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="MFVec4d">
+		<xs:annotation>
+			<xs:appinfo>MFVec4d is zero or more SFVec4d values.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/fieldsDef.html#SFVec4d"/>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:whiteSpace value="collapse"/>
+			<xs:pattern value="((\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)? (\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)? (\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)? (\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)?( )?(,)?( )?)*"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="SFMatrix3f">
+		<xs:annotation>
+			<xs:appinfo>SFMatrix3f specifies a 3x3 matrix of single-precision floating point numbers, organized in row-major fashion.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-X3DAbstractSpecification/Part01/fieldsDef.html#SFMatrix3f"/>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:whiteSpace value="collapse"/>
+			<xs:pattern value="(((\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)? ){8}((\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)?))?"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="MFMatrix3f">
+		<xs:annotation>
+			<xs:appinfo>MFMatrix3f specifies zero or more 3x3 matrices of single-precision floating point numbers, organized in row-major fashion.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-X3DAbstractSpecification/Part01/fieldsDef.html#SFMatrix3f"/>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:whiteSpace value="collapse"/>
+			<xs:pattern value="(((\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)? ){8}((\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)?))*"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="SFMatrix3d">
+		<xs:annotation>
+			<xs:appinfo>SFMatrix3d specifies a 3x3 matrix of double-precision floating point numbers, organized in row-major fashion.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-X3DAbstractSpecification/Part01/fieldsDef.html#SFMatrix3d"/>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:whiteSpace value="collapse"/>
+			<xs:pattern value="(((\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)? ){8}((\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)?))?"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="MFMatrix3d">
+		<xs:annotation>
+			<xs:appinfo>MFMatrix3d specifies zero or more 3x3 matrices of double-precision floating point numbers, organized in row-major fashion.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-X3DAbstractSpecification/Part01/fieldsDef.html#SFMatrix3d"/>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:whiteSpace value="collapse"/>
+			<xs:pattern value="(((\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)? ){8}((\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)?))*"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="SFMatrix4f">
+		<xs:annotation>
+			<xs:appinfo>SFMatrix4f specifies a 4x4 matrix of single-precision floating point numbers, organized in row-major fashion.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-X3DAbstractSpecification/Part01/fieldsDef.html#SFMatrix4f"/>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:whiteSpace value="collapse"/>
+			<xs:pattern value="(((\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)? ){15}((\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)?))?"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="MFMatrix4f">
+		<xs:annotation>
+			<xs:appinfo>MFMatrix4f specifies zero or more 4x4 matrices of single-precision floating point numbers, organized in row-major fashion.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-X3DAbstractSpecification/Part01/fieldsDef.html#SFMatrix4f"/>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:whiteSpace value="collapse"/>
+			<xs:pattern value="(((\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)? ){15}((\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)?))*"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="SFMatrix4d">
+		<xs:annotation>
+			<xs:appinfo>SFMatrix4d specifies a 4x4 matrix of double-precision floating point numbers, organized in row-major fashion.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-X3DAbstractSpecification/Part01/fieldsDef.html#SFMatrix4d"/>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:whiteSpace value="collapse"/>
+			<xs:pattern value="(((\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)? ){15}((\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)?))?"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="MFMatrix4d">
+		<xs:annotation>
+			<xs:appinfo>MFMatrix4d specifies zero or more 4x4 matrices of double-precision floating point numbers, organized in row-major fashion.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-X3DAbstractSpecification/Part01/fieldsDef.html#SFMatrix4d"/>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:whiteSpace value="collapse"/>
+			<xs:pattern value="(((\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)? ){15}((\+|\-)?(0|[1-9][0-9]*)?(\.[0-9]*)?((E|e)(\+|\-)?[0-9]+)?))*"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<!--======================================================================-->
+	<!--Enumerations-->
+	<!--Profiles correspond primarily to subsets of nodes. Some nodes in Interchange profile include fields that are ignored unless Immersive or Full profile is active.-->
+	<xs:simpleType name="accessTypeNames">
+		<xs:annotation>
+			<xs:appinfo>accessTypeNames are allowed enumeration values for accessType.  Prior names in VRML 97 were eventIn, eventOut, field, exposedField respectively.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/concepts.html#FieldSemantics"/>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="initializeOnly"/>
+			<xs:enumeration value="inputOnly"/>
+			<xs:enumeration value="outputOnly"/>
+			<xs:enumeration value="inputOutput"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="ArcClose2dTypeValues">
+		<xs:annotation>
+			<xs:appinfo>ArcClose2dTypeValues are allowed enumeration values for ArcClose2D closureType.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/geometry2D.html#ArcClose2D"/>
+		</xs:annotation>
+		<xs:restriction base="xs:token">
+			<xs:enumeration value="PIE"/>
+			<xs:enumeration value="CHORD"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="componentNames">
+		<xs:annotation>
+			<xs:appinfo>profileName enumeration constants are used to identify the profile for each scene-graph node, and also used by X3D tag to identify the profile of a contained Scene.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/concepts.html#Profiles"/>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="Core">
+				<xs:annotation>
+					<xs:appinfo>Core component is provided as the basis for custom componentization.</xs:appinfo>
+					<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/core.html"/>
+				</xs:annotation>
+			</xs:enumeration>
+			<xs:enumeration value="CADGeometry">
+				<xs:annotation>
+					<xs:appinfo>CADGeometry component is provided for Computer-Aided Design (CAD) nodes..</xs:appinfo>
+					<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-X3DAbstractSpecification/Part01/components/CADGeometry.html"/>
+				</xs:annotation>
+			</xs:enumeration>
+			<xs:enumeration value="CubeMapTexturing">
+				<xs:annotation>
+					<xs:appinfo/>
+					<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-X3DAbstractSpecification/Part01/components/env_texture.html"/>
+				</xs:annotation>
+			</xs:enumeration>
+			<xs:enumeration value="DIS">
+				<xs:annotation>
+					<xs:appinfo/>
+					<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/dis.html"/>
+				</xs:annotation>
+			</xs:enumeration>
+			<xs:enumeration value="EnvironmentalEffects">
+				<xs:annotation>
+					<xs:appinfo/>
+					<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/enveffects.html"/>
+				</xs:annotation>
+			</xs:enumeration>
+			<xs:enumeration value="EnvironmentalSensor">
+				<xs:annotation>
+					<xs:appinfo/>
+					<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/envsensor.html"/>
+				</xs:annotation>
+			</xs:enumeration>
+			<xs:enumeration value="EventUtilities">
+				<xs:annotation>
+					<xs:appinfo/>
+					<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/utils.html"/>
+				</xs:annotation>
+			</xs:enumeration>
+			<xs:enumeration value="Geometry2D">
+				<xs:annotation>
+					<xs:appinfo/>
+					<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/geometry2D.html"/>
+				</xs:annotation>
+			</xs:enumeration>
+			<xs:enumeration value="Geometry3D">
+				<xs:annotation>
+					<xs:appinfo/>
+					<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/geometry3D.html"/>
+				</xs:annotation>
+			</xs:enumeration>
+			<xs:enumeration value="Geospatial">
+				<xs:annotation>
+					<xs:appinfo/>
+					<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/geodata.html"/>
+				</xs:annotation>
+			</xs:enumeration>
+			<xs:enumeration value="Grouping">
+				<xs:annotation>
+					<xs:appinfo/>
+					<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/group.html"/>
+				</xs:annotation>
+			</xs:enumeration>
+			<xs:enumeration value="H-Anim">
+				<xs:annotation>
+					<xs:appinfo/>
+					<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/hanim.html"/>
+				</xs:annotation>
+			</xs:enumeration>
+			<xs:enumeration value="Interpolation">
+				<xs:annotation>
+					<xs:appinfo/>
+					<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/interp.html"/>
+				</xs:annotation>
+			</xs:enumeration>
+			<xs:enumeration value="KeyDeviceSensor">
+				<xs:annotation>
+					<xs:appinfo/>
+					<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/keyboard.html"/>
+				</xs:annotation>
+			</xs:enumeration>
+			<xs:enumeration value="Lighting">
+				<xs:annotation>
+					<xs:appinfo/>
+					<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/lighting.html"/>
+				</xs:annotation>
+			</xs:enumeration>
+			<xs:enumeration value="Navigation">
+				<xs:annotation>
+					<xs:appinfo/>
+					<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/navigation.html"/>
+				</xs:annotation>
+			</xs:enumeration>
+			<xs:enumeration value="Networking">
+				<xs:annotation>
+					<xs:appinfo/>
+					<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/networking.html"/>
+				</xs:annotation>
+			</xs:enumeration>
+			<xs:enumeration value="NURBS">
+				<xs:annotation>
+					<xs:appinfo/>
+					<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/nurbs.html"/>
+				</xs:annotation>
+			</xs:enumeration>
+			<xs:enumeration value="PointingDeviceSensor">
+				<xs:annotation>
+					<xs:appinfo/>
+					<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/pointingsensor.html"/>
+				</xs:annotation>
+			</xs:enumeration>
+			<xs:enumeration value="Rendering">
+				<xs:annotation>
+					<xs:appinfo/>
+					<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/rendering.html"/>
+				</xs:annotation>
+			</xs:enumeration>
+			<xs:enumeration value="Scripting">
+				<xs:annotation>
+					<xs:appinfo/>
+					<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/scripting.html"/>
+				</xs:annotation>
+			</xs:enumeration>
+			<xs:enumeration value="Shaders">
+				<xs:annotation>
+					<xs:appinfo/>
+					<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-X3DAbstractSpecification/Part01/components/shaders.html"/>
+				</xs:annotation>
+			</xs:enumeration>
+			<xs:enumeration value="Shape">
+				<xs:annotation>
+					<xs:appinfo/>
+					<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/shape.html"/>
+				</xs:annotation>
+			</xs:enumeration>
+			<xs:enumeration value="Sound">
+				<xs:annotation>
+					<xs:appinfo/>
+					<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/sound.html"/>
+				</xs:annotation>
+			</xs:enumeration>
+			<xs:enumeration value="Text">
+				<xs:annotation>
+					<xs:appinfo/>
+					<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/text.html"/>
+				</xs:annotation>
+			</xs:enumeration>
+			<xs:enumeration value="Texturing">
+				<xs:annotation>
+					<xs:appinfo/>
+					<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/texturing.html"/>
+				</xs:annotation>
+			</xs:enumeration>
+			<xs:enumeration value="Texturing3D">
+				<xs:annotation>
+					<xs:appinfo/>
+					<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-X3DAbstractSpecification/Part01/components/texture3D.html"/>
+				</xs:annotation>
+			</xs:enumeration>
+			<xs:enumeration value="Time">
+				<xs:annotation>
+					<xs:appinfo/>
+					<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/time.html"/>
+				</xs:annotation>
+			</xs:enumeration>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="fieldTypeName">
+		<xs:annotation>
+			<xs:appinfo>fieldTypeName contains the names of all X3DField types.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/fieldsDef.html"/>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="SFBool"/>
+			<xs:enumeration value="MFBool"/>
+			<xs:enumeration value="SFColor"/>
+			<xs:enumeration value="MFColor"/>
+			<xs:enumeration value="SFColorRGBA"/>
+			<xs:enumeration value="MFColorRGBA"/>
+			<xs:enumeration value="SFDouble"/>
+			<xs:enumeration value="MFDouble"/>
+			<xs:enumeration value="SFFloat"/>
+			<xs:enumeration value="MFFloat"/>
+			<xs:enumeration value="SFImage"/>
+			<xs:enumeration value="MFImage"/>
+			<xs:enumeration value="SFInt32"/>
+			<xs:enumeration value="SFNode"/>
+			<xs:enumeration value="MFNode"/>
+			<xs:enumeration value="MFInt32"/>
+			<xs:enumeration value="SFRotation"/>
+			<xs:enumeration value="MFRotation"/>
+			<xs:enumeration value="SFString"/>
+			<xs:enumeration value="MFString"/>
+			<xs:enumeration value="SFTime"/>
+			<xs:enumeration value="MFTime"/>
+			<xs:enumeration value="SFVec2d"/>
+			<xs:enumeration value="MFVec2d"/>
+			<xs:enumeration value="SFVec2f"/>
+			<xs:enumeration value="MFVec2f"/>
+			<xs:enumeration value="SFVec3d"/>
+			<xs:enumeration value="MFVec3d"/>
+			<xs:enumeration value="SFVec3f"/>
+			<xs:enumeration value="MFVec3f"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="fontStyleValues">
+		<xs:annotation>
+			<xs:appinfo>fontStyleValues are allowed enumeration values for FontStyle node type attribute.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/text.html#Fontfamilyandstyle"/>
+		</xs:annotation>
+		<xs:restriction base="xs:token">
+			<xs:enumeration value="PLAIN"/>
+			<xs:enumeration value="BOLD"/>
+			<xs:enumeration value="ITALIC"/>
+			<xs:enumeration value="BOLDITALIC"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="fogTypeValues">
+		<xs:annotation>
+			<xs:appinfo>fogTypeValues are allowed enumeration values for Fog node fogType attribute.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/enveffects.html#Fog"/>
+		</xs:annotation>
+		<xs:restriction base="xs:token">
+			<xs:enumeration value="LINEAR"/>
+			<xs:enumeration value="EXPONENTIAL"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="shaderPartTypeValues">
+		<xs:annotation>
+			<xs:appinfo>shaderPartTypeValues are allowed enumeration values for ShaderPart node type attribute.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-X3DAbstractSpecification/Part01/components/shaders.html#ShaderPart"/>
+		</xs:annotation>
+		<xs:restriction base="xs:token">
+			<xs:enumeration value="VERTEX"/>
+			<xs:enumeration value="FRAGMENT"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="metaDirectionValues">
+		<xs:annotation>
+			<xs:appinfo>metaDirectionValues are allowed enumeration values for meta tag direction attribute.</xs:appinfo>
+			<xs:documentation/>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="rtl">
+				<xs:annotation>
+					<xs:appinfo>right-to-left</xs:appinfo>
+				</xs:annotation>
+			</xs:enumeration>
+			<xs:enumeration value="ltr">
+				<xs:annotation>
+					<xs:appinfo>left-to-right</xs:appinfo>
+				</xs:annotation>
+			</xs:enumeration>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="networkModeValues">
+		<xs:annotation>
+			<xs:appinfo>networkModeValues are allowed enumeration values for DIS field networkMode.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/dis.html#CommonDISfields"/>
+		</xs:annotation>
+		<xs:restriction base="xs:token">
+			<xs:enumeration value="standAlone"/>
+			<xs:enumeration value="networkReader"/>
+			<xs:enumeration value="networkWriter"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="profileNames">
+		<xs:annotation>
+			<xs:appinfo>profileName enumeration constants are used to identify the profile for each scene-graph node, and also used by X3D tag to identify the profile of a contained Scene.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/concepts.html#Profiles"/>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="Core">
+				<xs:annotation>
+					<xs:appinfo>Core Profile includes no nodes and is provided as the basis for custom componentization.</xs:appinfo>
+					<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/coreprofile.html"/>
+				</xs:annotation>
+			</xs:enumeration>
+			<xs:enumeration value="Interchange">
+				<xs:annotation>
+					<xs:appinfo>Interchange Profile equals the minimum subset of nodes needed to author lightweight compelling content.</xs:appinfo>
+					<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/interchange.html"/>
+				</xs:annotation>
+			</xs:enumeration>
+			<xs:enumeration value="CADInterchange">
+				<xs:annotation>
+					<xs:appinfo>CADInterchange Profile adds support for CADGeometry component nodes to Interchange Profile.</xs:appinfo>
+					<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-X3DAbstractSpecification/Part01/CADInterchange.html"/>
+				</xs:annotation>
+			</xs:enumeration>
+			<xs:enumeration value="Interactive">
+				<xs:annotation>
+					<xs:appinfo>Interactive Profile adds interaction nodes (Anchor, KeySensor) to the minimum subset of nodes needed to author lightweight compelling content.</xs:appinfo>
+					<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/interactive.html"/>
+				</xs:annotation>
+			</xs:enumeration>
+			<xs:enumeration value="Immersive">
+				<xs:annotation>
+					<xs:appinfo>Immersive Profile equals all of the nodes in the VRML 97 Specification, plus various X3D node additions including KeySensor, StringSensor and Scene.</xs:appinfo>
+					<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/immersive.html"/>
+				</xs:annotation>
+			</xs:enumeration>
+			<xs:enumeration value="MPEG4Interactive"/>
+			<xs:enumeration value="Full">
+				<xs:annotation>
+					<xs:appinfo>The Full Profile corresponds to all Immersive X3D nodes plus all approved/implemented extensions.  Full may get renamed Integrated.</xs:appinfo>
+					<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/fullProfile.html"/>
+				</xs:annotation>
+			</xs:enumeration>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="x3dVersion">
+		<xs:annotation>
+			<xs:appinfo>x3dVersion enumeration constants are used to identify the allowed versions for an X3D scene graph.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/concepts.html#Profiles"/>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="3.0">
+				<xs:annotation>
+					<xs:appinfo>X3D v3.0 approved by ISO in 2004.</xs:appinfo>
+					<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/index.html"/>
+				</xs:annotation>
+			</xs:enumeration>
+			<xs:enumeration value="3.1">
+				<xs:annotation>
+					<xs:appinfo>X3D v3.1 Amendment 1 approved by ISO in 2005.  Backwards compatibility maintained with v3.0.</xs:appinfo>
+					<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-FPDAM-X3DAbstractSpecification/index.html"/>
+				</xs:annotation>
+			</xs:enumeration>
+		</xs:restriction>
+	</xs:simpleType>
+	<!--table of field names with corresponding accessType constraints-->
+	<xs:simpleType name="initializeOnlyAccessTypes">
+		<xs:annotation>
+			<xs:appinfo>Table of fields having accessType initializeOnly.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/concepts.html#FieldSemantics"/>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="bboxCenter"/>
+			<xs:enumeration value="bboxSize"/>
+			<xs:enumeration value="beginCap"/>
+			<xs:enumeration value="bottom"/>
+			<xs:enumeration value="bottomRadius"/>
+			<xs:enumeration value="ccw"/>
+			<xs:enumeration value="child1Url"/>
+			<xs:enumeration value="child2Url"/>
+			<xs:enumeration value="child3Url"/>
+			<xs:enumeration value="child4Url"/>
+			<xs:enumeration value="closed"/>
+			<xs:enumeration value="closureType"/>
+			<xs:enumeration value="colorIndex"/>
+			<xs:enumeration value="colorPerVertex"/>
+			<xs:enumeration value="convex"/>
+			<xs:enumeration value="coordIndex"/>
+			<xs:enumeration value="creaseAngle"/>
+			<xs:enumeration value="crossSection"/>
+			<xs:enumeration value="directOutput"/>
+			<xs:enumeration value="endCap"/>
+			<xs:enumeration value="endAngle"/>
+			<xs:enumeration value="forceTransitions"/>
+			<xs:enumeration value="geoGridOrigin"/>
+			<xs:enumeration value="geoSystem"/>
+			<xs:enumeration value="height"/>
+			<xs:enumeration value="horizontal"/>
+			<xs:enumeration value="index"/>
+			<xs:enumeration value="info"/>
+			<xs:enumeration value="innerRadius"/>
+			<xs:enumeration value="justify"/>
+			<xs:enumeration value="knot"/>
+			<xs:enumeration value="language"/>
+			<xs:enumeration value="leftToRight"/>
+			<xs:enumeration value="lineSegments"/>
+			<xs:enumeration value="mustEvaluate"/>
+			<xs:enumeration value="name"/>
+			<xs:enumeration value="normalIndex"/>
+			<xs:enumeration value="normalPerVertex"/>
+			<xs:enumeration value="numComponents"/>
+			<xs:enumeration value="order"/>
+			<xs:enumeration value="outerRadius"/>
+			<xs:enumeration value="orientation"/>
+			<xs:enumeration value="radius"/>
+			<xs:enumeration value="range"/>
+			<xs:enumeration value="repeatR"/>
+			<xs:enumeration value="repeatS"/>
+			<xs:enumeration value="repeatT"/>
+			<xs:enumeration value="rootUrl"/>
+			<xs:enumeration value="rotateYUp"/>
+			<xs:enumeration value="rtpHeaderExpected"/>
+			<xs:enumeration value="side"/>
+			<xs:enumeration value="size"/>
+			<xs:enumeration value="solid"/>
+			<xs:enumeration value="spacing"/>
+			<xs:enumeration value="spatialize"/>
+			<xs:enumeration value="speedFactor"/>
+			<xs:enumeration value="spine"/>
+			<xs:enumeration value="startAngle"/>
+			<xs:enumeration value="style"/>
+			<xs:enumeration value="texCoordIndex"/>
+			<xs:enumeration value="title"/>
+			<xs:enumeration value="top"/>
+			<xs:enumeration value="topToBottom"/>
+			<xs:enumeration value="type"/>
+			<xs:enumeration value="uClosed"/>
+			<xs:enumeration value="uDimension"/>
+			<xs:enumeration value="uKnot"/>
+			<xs:enumeration value="uOrder"/>
+			<xs:enumeration value="vClosed"/>
+			<xs:enumeration value="vDimension"/>
+			<xs:enumeration value="vKnot"/>
+			<xs:enumeration value="vOrder"/>
+			<xs:enumeration value="xDimension"/>
+			<xs:enumeration value="xSpacing"/>
+			<xs:enumeration value="zDimension"/>
+			<xs:enumeration value="zSpacing"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="inputOnlyAccessTypes">
+		<xs:annotation>
+			<xs:appinfo>Table of fields having accessType inputOnly.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/concepts.html#FieldSemantics"/>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="activate"/>
+			<xs:enumeration value="set_articulationParameterValue0"/>
+			<xs:enumeration value="set_articulationParameterValue1"/>
+			<xs:enumeration value="set_articulationParameterValue2"/>
+			<xs:enumeration value="set_articulationParameterValue3"/>
+			<xs:enumeration value="set_articulationParameterValue4"/>
+			<xs:enumeration value="set_articulationParameterValue5"/>
+			<xs:enumeration value="set_articulationParameterValue6"/>
+			<xs:enumeration value="set_articulationParameterValue7"/>
+			<xs:enumeration value="set_boolean"/>
+			<xs:enumeration value="set_bind"/>
+			<xs:enumeration value="set_colorIndex"/>
+			<xs:enumeration value="set_coordIndex"/>
+			<xs:enumeration value="set_crossSection"/>
+			<xs:enumeration value="set_fraction"/>
+			<xs:enumeration value="set_height"/>
+			<xs:enumeration value="set_index"/>
+			<xs:enumeration value="set_normalIndex"/>
+			<xs:enumeration value="set_orientation"/>
+			<xs:enumeration value="set_position"/>
+			<xs:enumeration value="set_scale"/>
+			<xs:enumeration value="set_spine"/>
+			<xs:enumeration value="set_texCoordIndex"/>
+			<xs:enumeration value="set_triggerTime"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="outputOnlyAccessTypes">
+		<xs:annotation>
+			<xs:appinfo>Table of fields having accessType outputOnly.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/concepts.html#FieldSemantics"/>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="actionKeyPress"/>
+			<xs:enumeration value="actionKeyRelease"/>
+			<xs:enumeration value="altKey"/>
+			<xs:enumeration value="articulationParameterValue0_changed"/>
+			<xs:enumeration value="articulationParameterValue1_changed"/>
+			<xs:enumeration value="articulationParameterValue2_changed"/>
+			<xs:enumeration value="articulationParameterValue3_changed"/>
+			<xs:enumeration value="articulationParameterValue4_changed"/>
+			<xs:enumeration value="articulationParameterValue5_changed"/>
+			<xs:enumeration value="articulationParameterValue6_changed"/>
+			<xs:enumeration value="articulationParameterValue7_changed"/>
+			<xs:enumeration value="bindTime"/>
+			<xs:enumeration value="centerOfRotation_changed"/>
+			<xs:enumeration value="collideTime"/>
+			<xs:enumeration value="controlKey"/>
+			<xs:enumeration value="cycleTime"/>
+			<xs:enumeration value="detonateTime"/>
+			<xs:enumeration value="duration_changed"/>
+			<xs:enumeration value="elapsedTime"/>
+			<xs:enumeration value="enteredText"/>
+			<xs:enumeration value="enterTime"/>
+			<xs:enumeration value="exitTime"/>
+			<xs:enumeration value="finalText"/>
+			<xs:enumeration value="firedTime"/>
+			<xs:enumeration value="fraction_changed"/>
+			<xs:enumeration value="geovalue_changed"/>
+			<xs:enumeration value="hitGeoCoord_changed"/>
+			<xs:enumeration value="hitNormal_changed"/>
+			<xs:enumeration value="hitPoint_changed"/>
+			<xs:enumeration value="hitTexCoord_changed"/>
+			<xs:enumeration value="inputFalse"/>
+			<xs:enumeration value="inputNegate"/>
+			<xs:enumeration value="inputTrue"/>
+			<xs:enumeration value="isActive"/>
+			<xs:enumeration value="isBound"/>
+			<xs:enumeration value="isCollided"/>
+			<xs:enumeration value="isDetonated"/>
+			<xs:enumeration value="isLoaded"/>
+			<xs:enumeration value="isOver"/>
+			<xs:enumeration value="isPaused"/>
+			<xs:enumeration value="isNetworkReader"/>
+			<xs:enumeration value="isNetworkWriter"/>
+			<xs:enumeration value="isRtpHeaderHeard"/>
+			<xs:enumeration value="isSelected"/>
+			<xs:enumeration value="isStandAlone"/>
+			<xs:enumeration value="isValid"/>
+			<xs:enumeration value="keyPress"/>
+			<xs:enumeration value="keyRelease"/>
+			<xs:enumeration value="level_changed"/>
+			<xs:enumeration value="lineBounds"/>
+			<xs:enumeration value="loadTime"/>
+			<xs:enumeration value="next"/>
+			<xs:enumeration value="normal_changed"/>
+			<xs:enumeration value="orientation_changed"/>
+			<xs:enumeration value="position_changed"/>
+			<xs:enumeration value="previous"/>
+			<xs:enumeration value="progress"/>
+			<xs:enumeration value="rotation_changed"/>
+			<xs:enumeration value="shiftKey"/>
+			<xs:enumeration value="textBounds"/>
+			<xs:enumeration value="time"/>
+			<xs:enumeration value="timestamp"/>
+			<xs:enumeration value="touchTime"/>
+			<xs:enumeration value="trackPoint_changed"/>
+			<xs:enumeration value="transitionComplete"/>
+			<xs:enumeration value="translation_changed"/>
+			<xs:enumeration value="triggerTime"/>
+			<xs:enumeration value="triggerTrue"/>
+			<xs:enumeration value="triggerValue"/>
+			<xs:enumeration value="value_changed"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="inputOutputAccessTypes">
+		<xs:annotation>
+			<xs:appinfo>Table of fields having accessType inputOutput.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/concepts.html#FieldSemantics"/>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="address"/>
+			<xs:enumeration value="alpha"/>
+			<xs:enumeration value="ambientIntensity"/>
+			<xs:enumeration value="antennaLocation"/>
+			<xs:enumeration value="applicationID"/>
+			<xs:enumeration value="applied"/>
+			<xs:enumeration value="antennaPatternType"/>
+			<xs:enumeration value="antennaPatternLength"/>
+			<xs:enumeration value="articulationParameterArray"/>
+			<xs:enumeration value="articulationParameterChangeIndicatorArray"/>
+			<xs:enumeration value="articulationParameterCount"/>
+			<xs:enumeration value="articulationParameterDesignatorArray"/>
+			<xs:enumeration value="articulationParameterIdPartAttachedToArray"/>
+			<xs:enumeration value="articulationParameterTypeArray"/>
+			<xs:enumeration value="attenuation"/>
+			<xs:enumeration value="autoOffset"/>
+			<xs:enumeration value="avatarSize"/>
+			<xs:enumeration value="axisOfRotation"/>
+			<xs:enumeration value="backUrl"/>
+			<xs:enumeration value="bottomUrl"/>
+			<xs:enumeration value="beamWidth"/>
+			<xs:enumeration value="bottomUrl"/>
+			<xs:enumeration value="center"/>
+			<xs:enumeration value="centerOfMass"/>
+			<xs:enumeration value="centerOfRotation"/>
+			<xs:enumeration value="collisionType"/>
+			<xs:enumeration value="color"/>
+			<xs:enumeration value="controlPoint"/>
+			<xs:enumeration value="cryptoSystem"/>
+			<xs:enumeration value="cryptoKeyID"/>
+			<xs:enumeration value="cutOffAngle"/>
+			<xs:enumeration value="cycleInterval"/>
+			<xs:enumeration value="data"/>
+			<xs:enumeration value="dataLength"/>
+			<xs:enumeration value="deadReckoning"/>
+			<xs:enumeration value="deletionAllowed"/>
+			<xs:enumeration value="depth"/>
+			<xs:enumeration value="description"/>
+			<xs:enumeration value="detonationLocation"/>
+			<xs:enumeration value="detonationRelativeLocation"/>
+			<xs:enumeration value="detonationResult"/>
+			<xs:enumeration value="diffuseColor"/>
+			<xs:enumeration value="direction"/>
+			<xs:enumeration value="diskAngle"/>
+			<xs:enumeration value="displacements"/>
+			<xs:enumeration value="emissiveColor"/>
+			<xs:enumeration value="enabled"/>
+			<xs:enumeration value="encodingScheme"/>
+			<xs:enumeration value="entityID"/>
+			<xs:enumeration value="entityKind"/>
+			<xs:enumeration value="entityDomain"/>
+			<xs:enumeration value="entityCountry"/>
+			<xs:enumeration value="entityCategory"/>
+			<xs:enumeration value="entitySubCategory"/>
+			<xs:enumeration value="entitySpecific"/>
+			<xs:enumeration value="entityExtra"/>
+			<xs:enumeration value="eventApplicationID"/>
+			<xs:enumeration value="eventEntityID"/>
+			<xs:enumeration value="eventNumber"/>
+			<xs:enumeration value="eventSiteID"/>
+			<xs:enumeration value="family"/>
+			<xs:enumeration value="fanCount"/>
+			<xs:enumeration value="fieldOfView"/>
+			<xs:enumeration value="filled"/>
+			<xs:enumeration value="fired1"/>
+			<xs:enumeration value="fired2"/>
+			<xs:enumeration value="fireMissionIndex"/>
+			<xs:enumeration value="firingRange"/>
+			<xs:enumeration value="firingRate"/>
+			<xs:enumeration value="fogType"/>
+			<xs:enumeration value="forceID"/>
+			<xs:enumeration value="frequency"/>
+			<xs:enumeration value="frontUrl"/>
+			<xs:enumeration value="function"/>
+			<xs:enumeration value="fuse"/>
+			<xs:enumeration value="geoCoords"/>
+			<xs:enumeration value="global"/>
+			<xs:enumeration value="groundColor"/>
+			<xs:enumeration value="groundAngle"/>
+			<xs:enumeration value="hatchColor"/>
+			<xs:enumeration value="hatched"/>
+			<xs:enumeration value="hatchStyle"/>
+			<xs:enumeration value="headlight"/>
+			<xs:enumeration value="image"/>
+			<xs:enumeration value="info"/>
+			<xs:enumeration value="inputSource"/>
+			<xs:enumeration value="integerKey"/>
+			<xs:enumeration value="intensity"/>
+			<xs:enumeration value="isFilled"/>
+			<xs:enumeration value="key"/>
+			<xs:enumeration value="jump"/>
+			<xs:enumeration value="keyValue"/>
+			<xs:enumeration value="leftUrl"/>
+			<xs:enumeration value="length"/>
+			<xs:enumeration value="lengthOfModulationParameters"/>
+			<xs:enumeration value="limitOrientation"/>
+			<xs:enumeration value="linearAcceleration"/>
+			<xs:enumeration value="linearVelocity"/>
+			<xs:enumeration value="linetype"/>
+			<xs:enumeration value="linewidthScaleFactor"/>
+			<xs:enumeration value="llimit"/>
+			<xs:enumeration value="load"/>
+			<xs:enumeration value="location"/>
+			<xs:enumeration value="loop"/>
+			<xs:enumeration value="marking"/>
+			<xs:enumeration value="mass"/>
+			<xs:enumeration value="maxAngle"/>
+			<xs:enumeration value="matrix"/>
+			<xs:enumeration value="maxBack"/>
+			<xs:enumeration value="maxExtent"/>
+			<xs:enumeration value="maxFront"/>
+			<xs:enumeration value="maxPosition"/>
+			<xs:enumeration value="minAngle"/>
+			<xs:enumeration value="minBack"/>
+			<xs:enumeration value="minFront"/>
+			<xs:enumeration value="minPosition"/>
+			<xs:enumeration value="mode"/>
+			<xs:enumeration value="modulationTypeSpreadSpectrum"/>
+			<xs:enumeration value="modulationTypeMajor"/>
+			<xs:enumeration value="modulationTypeDetail"/>
+			<xs:enumeration value="modulationTypeSystem"/>
+			<xs:enumeration value="momentsOfInertia"/>
+			<xs:enumeration value="multicastRelayHost"/>
+			<xs:enumeration value="multicastRelayPort"/>
+			<xs:enumeration value="munitionEndPoint"/>
+			<xs:enumeration value="munitionStartPoint"/>
+			<xs:enumeration value="munitionApplicationID"/>
+			<xs:enumeration value="munitionEntityID"/>
+			<xs:enumeration value="munitionSiteID"/>
+			<xs:enumeration value="munitionQuantity"/>
+			<xs:enumeration value="name"/>
+			<xs:enumeration value="navType"/>
+			<xs:enumeration value="networkMode"/>
+			<xs:enumeration value="offset"/>
+			<xs:enumeration value="on"/>
+			<xs:enumeration value="pauseTime"/>
+			<xs:enumeration value="parameter"/>
+			<xs:enumeration value="pitch"/>
+			<xs:enumeration value="point"/>
+			<xs:enumeration value="port"/>
+			<xs:enumeration value="position"/>
+			<xs:enumeration value="power"/>
+			<xs:enumeration value="priority"/>
+			<xs:enumeration value="radioID"/>
+			<xs:enumeration value="radioEntityTypeKind"/>
+			<xs:enumeration value="radioEntityTypeDomain"/>
+			<xs:enumeration value="radioEntityTypeCountry"/>
+			<xs:enumeration value="radioEntityTypeCategory"/>
+			<xs:enumeration value="radioEntityTypeNomenclature"/>
+			<xs:enumeration value="radioEntityTypeNomenclatureVersion"/>
+			<xs:enumeration value="readInterval"/>
+			<xs:enumeration value="receivedPower"/>
+			<xs:enumeration value="receiverState"/>
+			<xs:enumeration value="reference"/>
+			<xs:enumeration value="relativeAntennaLocation"/>
+			<xs:enumeration value="resumeTime"/>
+			<xs:enumeration value="rightUrl"/>
+			<xs:enumeration value="rotation"/>
+			<xs:enumeration value="sampleRate"/>
+			<xs:enumeration value="samples"/>
+			<xs:enumeration value="scale"/>
+			<xs:enumeration value="scaleOrientation"/>
+			<xs:enumeration value="shininess"/>
+			<xs:enumeration value="siteID"/>
+			<xs:enumeration value="skinCoordIndex"/>
+			<xs:enumeration value="skinCoordWeight"/>
+			<xs:enumeration value="skyColor"/>
+			<xs:enumeration value="skyAngle"/>
+			<xs:enumeration value="source"/>
+			<xs:enumeration value="specularColor"/>
+			<xs:enumeration value="speed"/>
+			<xs:enumeration value="startTime"/>
+			<xs:enumeration value="stiffness"/>
+			<xs:enumeration value="stopTime"/>
+			<xs:enumeration value="string"/>
+			<xs:enumeration value="stripCount"/>
+			<xs:enumeration value="summary"/>
+			<xs:enumeration value="tdlType"/>
+			<xs:enumeration value="tessellation"/>
+			<xs:enumeration value="tessellationScale"/>
+			<xs:enumeration value="timeOut"/>
+			<xs:enumeration value="toggle"/>
+			<xs:enumeration value="topUrl"/>
+			<xs:enumeration value="transitionTime"/>
+			<xs:enumeration value="transitionType"/>
+			<xs:enumeration value="translation"/>
+			<xs:enumeration value="transmitFrequencyBandwidth"/>
+			<xs:enumeration value="transmitState"/>
+			<xs:enumeration value="transmitterApplicationID"/>
+			<xs:enumeration value="transmitterEntityID"/>
+			<xs:enumeration value="transmitterRadioID"/>
+			<xs:enumeration value="transmitterSiteID"/>
+			<xs:enumeration value="transparent"/>
+			<xs:enumeration value="transparency"/>
+			<xs:enumeration value="type"/>
+			<xs:enumeration value="ulimit"/>
+			<xs:enumeration value="update"/>
+			<xs:enumeration value="url"/>
+			<xs:enumeration value="uTessellation"/>
+			<xs:enumeration value="value"/>
+			<xs:enumeration value="version"/>
+			<xs:enumeration value="vector"/>
+			<xs:enumeration value="vertexCount"/>
+			<xs:enumeration value="vertices"/>
+			<xs:enumeration value="visibilityLimit"/>
+			<xs:enumeration value="visibilityRange"/>
+			<xs:enumeration value="visible"/>
+			<xs:enumeration value="vTessellation"/>
+			<xs:enumeration value="warhead"/>
+			<xs:enumeration value="weight"/>
+			<xs:enumeration value="whichChoice"/>
+			<xs:enumeration value="whichGeometry"/>
+			<xs:enumeration value="writeInterval"/>
+			<xs:enumeration value="yScale"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<!-- special case accessType tests, excerpted from BuildSpecificationInterfacesFromSchema.xslt
+		<xsl:when test="($nodeName='GeoCoordinate') and ($attributeName='point') or
+				($nodeName='Extrusion') and ($attributeName='scale')">
+			<xsl:text>[init]</xsl:text>
+		</xsl:when>
+		<xsl:when test="(($nodeName='HAnimDisplacer') and ($attributeName='coordIndex')) or
+				(($nodeName='GeoOrigin') and ($attributeName='geoSystem')) or
+				(($nodeName='NurbsPositionInterpolator') and ($attributeName='order')) or
+				(($nodeName='Viewpoint') and ($attributeName='orientation')) or
+				( contains($nodeName,'Light') and ($attributeName='radius')) or
+				(($nodeName='ProximitySensor' or $nodeName='VisibilitySensor') and ($attributeName='size'))">
+			<xsl:text>[in, out]</xsl:text>
+		</xsl:when>
+	-->
+	<!--======================================================================-->
+	<!--Attribute groups-->
+	<!--DEF and USE are node-naming attributes common to all instantiable nodes. This attributeGroup is defined for all top-level node types in the node interface hierarchy.-->
+	<xs:attributeGroup name="DEF_USE">
+		<xs:annotation>
+			<xs:documentation source="http://www.web3d.org/spec_editors/abstract/Part01/concepts.html#DEFL_USESemantics"/>
+		</xs:annotation>
+		<xs:attribute name="DEF" type="xs:ID">
+			<xs:annotation>
+				<xs:appinfo/>
+				<xs:documentation source="http://www.web3d.org/spec_editors/abstract/Part01/concepts.html#DEFL_USESemantics"/>
+			</xs:annotation>
+		</xs:attribute>
+		<xs:attribute name="USE" type="xs:IDREF">
+			<xs:annotation>
+				<xs:appinfo/>
+				<xs:documentation source="http://www.web3d.org/spec_editors/abstract/Part01/concepts.html#DEFL_USESemantics"/>
+			</xs:annotation>
+		</xs:attribute>
+	</xs:attributeGroup>
+	<xs:attributeGroup name="globalAttributes">
+		<!--	Tool bug:  attribute name="class" has to be commented for xjc (jaxb) to build API classes -->
+		<xs:attribute name="class" type="xs:NMTOKEN">
+			<xs:annotation>
+				<xs:appinfo/>
+				<xs:documentation/>
+			</xs:annotation>
+		</xs:attribute>
+		<!-- containerField not included here in globalAttributes since default values are different for various node types -->
+	</xs:attributeGroup>
+	<!--======================================================================-->
+	<!--Complex types-->
+	<!--Should all abstract node types be made final? This issue pertains to run-time extensibility modifications to the SAI API...-->
+	<xs:complexType name="X3DAppearanceNode" abstract="false" mixed="false">
+		<xs:annotation>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/shape.html#X3DAppearanceNode"/>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DNode">
+				<xs:group ref="AppearanceChildContentModel" minOccurs="0" maxOccurs="unbounded"/>
+				<xs:attribute name="containerField" type="xs:NMTOKEN" default="appearance"/>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="X3DAppearanceChildNode" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo>Nodes of this type can be used as child nodes for Appearance.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/shape.html#X3DAppearanceChildNode"/>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DNode"/>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="X3DBackgroundNode" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/enveffects.html#X3DBackgroundNode"/>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DBindableNode">
+				<xs:attribute name="groundAngle" type="MFFloat"/>
+				<xs:attribute name="groundColor" type="MFColor"/>
+				<xs:attribute name="skyAngle" type="MFFloat"/>
+				<xs:attribute name="skyColor" type="MFColor" default="0 0 0"/>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="X3DBindableNode" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo>Bindable nodes implement the binding stack, so that only one of each node type is active at a given time.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/core.html#X3DBindableNode"/>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DChildNode">
+				<xs:attribute name="set_bind" type="SFBool"/>
+				<xs:attribute name="bindTime" type="SFTime"/>
+				<xs:attribute name="isBound" type="SFBool"/>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="X3DBoundedObject" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo>X3DBoundedObject indicates that bounding box values can
+be provided (or computed) for this node and any children.
+Bounding box values approximate the volume of a containing box
+in the current coordinate system.  Bounding box values can
+optionally be provided to (or calculated by) 3D browsers.
+Bounding box values are hints that can improve performance by
+allowing browsers to inexpensively cull geometry, thus avoiding
+the computational cost of trying to drawing shapes when they are
+outside of the current view.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/group.html#X3DBoundedObject"/>
+		</xs:annotation>
+		<xs:attribute name="bboxCenter" type="SFVec3f" default="0 0 0"/>
+		<xs:attribute name="bboxSize" type="BoundingBoxSize" default="-1 -1 -1"/>
+	</xs:complexType>
+	<xs:complexType name="X3DChildNode" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo>A node that implements X3DChildNode is one of the legal children for a X3DGroupingNode parent.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/core.html#X3DChildNode"/>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DNode">
+				<xs:attribute name="containerField" type="xs:NMTOKEN" default="children"/>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="X3DColorNode" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/rendering.html#X3DColorNode"/>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DGeometricPropertyNode">
+				<xs:attribute name="containerField" type="xs:NMTOKEN" default="color"/>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="X3DComposedGeometryNode" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo>Composed geometry nodes produce renderable geometry, can contain Color Coordinate Normal TextureCoordinate, and are contained by a Shape node.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/rendering.html#X3DComposedGeometryNode"/>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DGeometryNode">
+				<xs:group ref="ComposedGeometryContentModel" minOccurs="0" maxOccurs="unbounded"/>
+				<xs:attribute name="ccw" type="SFBool" default="true"/>
+				<xs:attribute name="colorPerVertex" type="SFBool" default="true"/>
+				<xs:attribute name="normalPerVertex" type="SFBool" default="true"/>
+				<xs:attribute name="solid" type="SFBool" default="true"/>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="X3DCoordinateNode" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/rendering.html#X3DCoordinateNode"/>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DGeometricPropertyNode"/>
+			<!-- containerField not defined here since different values can occur for implementing nodes -->
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="X3DDragSensorNode" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/pointingsensor.html#X3DDragSensorNode"/>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DPointingDeviceSensorNode">
+				<xs:attribute name="autoOffset" type="SFBool" default="true"/>
+				<xs:attribute name="trackPoint_changed" type="SFVec3f"/>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="X3DEnvironmentalSensorNode" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/envsensor.html#X3DEnvironmentalSensorNode"/>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DSensorNode">
+				<xs:attribute name="center" type="SFVec3f" default="0 0 0"/>
+				<xs:attribute name="size" type="SFVec3f" default="0 0 0"/>
+				<xs:attribute name="enterTime" type="SFTime"/>
+				<xs:attribute name="exitTime" type="SFTime"/>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="X3DEnvironmentTextureNode" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-X3DAbstractSpecification/Part01/components/env_texture.html#X3DEnvironmentTextureNode"/>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DAppearanceChildNode">
+				<xs:attribute name="containerField" type="xs:NMTOKEN" default="texture"/>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="X3DField" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo>X3DField is equivalent to SF (Single Field) simple non-Node types in the VRML 97 Specification.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/technicalinfo/specifications/vrml97/part1/fieldsRef.html#5.1.2"/>
+		</xs:annotation>
+	</xs:complexType>
+	<xs:complexType name="X3DFogObject" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-X3DAbstractSpecification/Part01/components/enveffects.html#X3DFogOjbect"/>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DNode">
+				<xs:attribute name="color" type="SFColor" default="1 1 1"/>
+				<xs:attribute name="fogType" type="fogTypeValues" default="LINEAR"/>
+				<xs:attribute name="visibilityRange" type="SFFloat" default="0"/>
+				<xs:attribute name="containerField" type="xs:NMTOKEN" default="fontStyle"/>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="X3DFontStyleNode" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/text.html#X3DFontStyleNode"/>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DNode">
+				<xs:attribute name="containerField" type="xs:NMTOKEN" default="fontStyle"/>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="X3DGeometryNode" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo>Geometry nodes produce renderable geometry and are contained by a Shape node.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/rendering.html#X3DGeometryNode"/>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DNode">
+				<xs:attribute name="containerField" type="xs:NMTOKEN" default="geometry"/>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="X3DGeometricPropertyNode" abstract="true" mixed="false">
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DNode"/>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="X3DGroupingNode" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo>Grouping nodes can contain other nodes as children, thus making up the backbone of a scene graph.
+				<xs:attribute name="otherInterfaces" type="xs:string" fixed="X3DBoundedObject"/>
+			</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/technicalinfo/specifications/vrml97/part1/concepts.html#4.6.5"/>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DChildNode">
+				<xs:sequence minOccurs="0" maxOccurs="unbounded">
+					<xs:group ref="ChildContentModel" minOccurs="0" maxOccurs="unbounded"/>
+					<xs:group ref="ChildContentModelSceneGraphStructure" minOccurs="0" maxOccurs="unbounded"/>
+				</xs:sequence>
+				<xs:attribute name="bboxCenter" type="SFVec3f" default="0 0 0"/>
+				<xs:attribute name="bboxSize" type="BoundingBoxSize" default="-1 -1 -1"/>
+			</xs:extension>
+			<!-- <xs:group ref="ChildContentModelSceneGraphStructure" minOccurs="0" maxOccurs="unbounded"/>-->
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="X3DHumanoidNode" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo>X3DHumanoidNode enables extensibility for the Humanoid node.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/hanim.html#HAnimHumanoid"/>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DChildNode"/>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="X3DInfoNode" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/group.html#X3DInfoNode"/>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DChildNode"/>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="X3DInterpolatorNode" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo>Interpolator nodes are designed for linear keyframed animation.
+	Interpolators are driven by an input key ranging [0..1] and produce corresponding piecewise-linear output functions.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/interp.html#X3DInterpolatorNode"/>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DChildNode">
+				<xs:attribute name="set_fraction" type="SFFloat"/>
+				<xs:attribute name="key" type="MFFloat"/>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="X3DKeyDeviceSensorNode" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/keyboard.html#X3DKeyDeviceSensorNode"/>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DSensorNode"/>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="X3DLightNode" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo>Light nodes provide illumination for rendering geometry in the scene.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/lighting.html#X3DLightNode"/>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DChildNode">
+				<xs:attribute name="ambientIntensity" default="0">
+					<xs:simpleType>
+						<xs:restriction base="SFFloat">
+							<xs:minInclusive value="0"/>
+							<xs:maxInclusive value="1"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+				<xs:attribute name="color" type="SFColor" default="1 1 1"/>
+				<xs:attribute name="intensity" default="1">
+					<xs:simpleType>
+						<xs:restriction base="SFFloat">
+							<xs:minInclusive value="0"/>
+							<xs:maxInclusive value="1"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+				<xs:attribute name="on" type="SFBool" default="true"/>
+			</xs:extension>
+			<!-- global attribute default value differs and so is defined individually for each light node -->
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="X3DMaterialNode" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/shape.html#X3DMaterialNode"/>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DAppearanceChildNode">
+				<xs:attribute name="containerField" type="xs:NMTOKEN" default="material"/>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="X3DMetadataObject">
+		<xs:annotation>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/core.html#X3DMetadataObject"/>
+			<xs:appinfo/>
+		</xs:annotation>
+		<xs:complexContent>
+			<xs:extension base="X3DNode">
+				<xs:attribute name="name" type="SFString"/>
+				<xs:attribute name="reference" type="SFString"/>
+				<xs:attribute name="containerField" type="xs:NMTOKEN" default="metadata">
+					<xs:annotation>
+						<xs:appinfo>containerField='value' for contained payload metadata inside MetadataSet element.</xs:appinfo>
+					</xs:annotation>
+				</xs:attribute>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="X3DNetworkSensorNode" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/networking.html#X3DNetworkSensorNode"/>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DSensorNode">
+				<xs:choice minOccurs="0" maxOccurs="unbounded">
+					<xs:element ref="Anchor"/>
+					<xs:element ref="AudioClip"/>
+					<xs:element ref="GeoMetadata"/>
+					<xs:element ref="ImageCubeMapTexture"/>
+					<xs:element ref="ImageTexture"/>
+					<xs:element ref="Image3DTexture"/>
+					<xs:element ref="Inline"/>
+					<xs:element ref="MovieTexture"/>
+					<xs:element ref="PackagedShader"/>
+					<xs:element ref="ProtoInstance"/>
+					<xs:element ref="Script"/>
+					<xs:element ref="ShaderPart"/>
+					<xs:element ref="ShaderProgram"/>
+				</xs:choice>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="X3DNode" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo>All instantiable nodes implement X3DNode, which corresponds to SFNode in the VRML 97 specification.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/core.html#X3DNode"/>
+		</xs:annotation>
+		<xs:sequence>
+			<xs:element ref="IS" minOccurs="0"/>
+			<xs:group ref="ChildContentModeCore" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+		<xs:attributeGroup ref="DEF_USE"/>
+		<xs:attributeGroup ref="globalAttributes"/>
+		<!-- complexContent, extension/restriction not used since X3DNode is a top-level node type -->
+	</xs:complexType>
+	<xs:complexType name="X3DNormalNode" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/rendering.html#X3DNormalNode"/>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DGeometricPropertyNode">
+				<xs:attribute name="containerField" type="xs:NMTOKEN" default="normal"/>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="X3DNurbsControlCurveNode" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/nurbs.html#X3DParametricGeometryNode"/>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DGeometryNode">
+				<xs:attribute name="controlPoint" type="MFVec2d"/>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="X3DNurbsSurfaceGeometryNode" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/nurbs.html#X3DNurbsSurfaceGeometryNode"/>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DParametricGeometryNode">
+				<xs:attribute name="uClosed" type="SFBool" default="false"/>
+				<xs:attribute name="vClosed" type="SFBool" default="false"/>
+				<xs:attribute name="uDimension" type="SFInt32" default="0"/>
+				<xs:attribute name="vDimension" type="SFInt32" default="0"/>
+				<xs:attribute name="uKnot" type="MFDouble"/>
+				<xs:attribute name="vKnot" type="MFDouble"/>
+				<xs:attribute name="uOrder" type="SFInt32" default="3"/>
+				<xs:attribute name="vOrder" type="SFInt32" default="3"/>
+				<xs:attribute name="uTessellation" type="SFInt32" default="0"/>
+				<xs:attribute name="vTessellation" type="SFInt32" default="0"/>
+				<xs:attribute name="weight" type="MFDouble"/>
+				<xs:attribute name="solid" type="SFBool" default="true"/>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="X3DParametricGeometryNode" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/nurbs.html#X3DParametricGeometryNode"/>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DGeometryNode"/>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="X3DPointingDeviceSensorNode" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/pointingsensor.html#X3DPointingDeviceSensorNode"/>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DSensorNode">
+				<xs:attribute name="description" type="SFString"/>
+				<xs:attribute name="isOver" type="SFBool"/>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="X3DProductStructureChildNode" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo>The X3DProductStructureChildNode abstract node type marks nodes that are valid product structure children for the CADInterchange component.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/group.html#X3DBoundedObject"/>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DChildNode"/>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="X3DProgrammableShaderObject" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo>
+			</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-X3DAbstractSpecification/Part01/components/shaders.html#X3DProgrammableShaderObject"/>
+		</xs:annotation>
+		<!-- no fields -->
+	</xs:complexType>
+	<xs:complexType name="X3DPrototypeInstanceNode" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/core.html#X3DPrototypeInstance"/>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DNode"/>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="X3DScriptNode" abstract="true" mixed="true">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/scripting.html#X3DScriptNode"/>
+		</xs:annotation>
+		<xs:sequence>
+			<xs:group ref="ChildContentModeCore" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:sequence>
+				<xs:sequence minOccurs="0" maxOccurs="unbounded">
+					<xs:element ref="field"/>
+				</xs:sequence>
+				<xs:sequence minOccurs="0">
+					<xs:element ref="IS"/>
+				</xs:sequence>
+			</xs:sequence>
+		</xs:sequence>
+		<xs:attributeGroup ref="DEF_USE"/>
+		<xs:attributeGroup ref="globalAttributes"/>
+		<xs:attribute name="containerField" type="xs:NMTOKEN" default="children"/>
+	</xs:complexType>
+	<xs:complexType name="X3DSensorNode" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/core.html#X3DSensorNode"/>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DChildNode">
+				<xs:attribute name="enabled" type="SFBool" default="true"/>
+				<xs:attribute name="isActive" type="SFBool"/>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="X3DSequencerNode" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/utils.html#X3DSequencerNode"/>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DChildNode">
+				<xs:attribute name="set_fraction" type="SFFloat"/>
+				<xs:attribute name="key" type="MFFloat"/>
+				<xs:attribute name="previous" type="SFBool"/>
+				<xs:attribute name="next" type="SFBool"/>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="X3DShaderNode" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo>
+			</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-X3DAbstractSpecification/Part01/components/shaders.html#X3DShaderNode"/>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DAppearanceChildNode">
+				<xs:attribute name="isSelected" type="SFBool"/>
+				<xs:attribute name="isValid" type="SFBool"/>
+				<xs:attribute name="activate" type="SFBool"/>
+				<xs:attribute name="language" type="SFString"/>
+				<xs:attribute name="containerField" type="xs:NMTOKEN" default="shaders"/>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="X3DShapeNode" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo>
+				<xs:attribute name="otherInterfaces" type="xs:string" fixed="X3DBoundedObject"/>
+			</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/shape.html#X3DShapeNode"/>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DChildNode">
+				<xs:group ref="ShapeChildContentModel" minOccurs="0"/>
+				<xs:attribute name="bboxCenter" type="SFVec3f" default="0 0 0"/>
+				<xs:attribute name="bboxSize" type="BoundingBoxSize" default="-1 -1 -1"/>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="X3DSoundNode" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/sound.html#X3DSoundNode"/>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DChildNode">
+				<xs:group ref="SoundChildContentModel" minOccurs="0"/>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="X3DSoundSourceNode" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo>Nodes implementing X3DSoundSourceNode are allowed children of Sound node</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/sound.html#X3DSoundSourceNode"/>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DTimeDependentNode">
+				<xs:attribute name="pitch" type="SFFloat" default="1.0"/>
+				<xs:attribute name="url" type="MFString"/>
+				<xs:attribute name="duration_changed" type="SFTime"/>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="X3DTextureNode" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/texturing.html#X3DTextureNode"/>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DAppearanceChildNode">
+				<xs:attribute name="containerField" type="xs:NMTOKEN" default="texture"/>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="X3DTexture2DNode" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/texturing.html#X3DTexture2DNode"/>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DTextureNode">
+				<xs:attribute name="repeatS" type="SFBool" default="true"/>
+				<xs:attribute name="repeatT" type="SFBool" default="true"/>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="X3DTexture3DNode" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-X3DAbstractSpecification/Part01/components/texture3D.html#X3DTexture3DNode"/>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DTextureNode">
+				<xs:attribute name="repeatS" type="SFBool" default="false"/>
+				<xs:attribute name="repeatT" type="SFBool" default="false"/>
+				<xs:attribute name="repeatR" type="SFBool" default="false"/>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="X3DTextureCoordinateNode" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/texturing.html#X3DTextureCoordinateNode"/>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DGeometricPropertyNode">
+				<xs:attribute name="containerField" type="xs:NMTOKEN" default="texCoord"/>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="X3DTextureTransformNode" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/texturing.html#X3DTextureTransformNode"/>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DAppearanceChildNode">
+				<xs:attribute name="containerField" type="xs:NMTOKEN" default="textureTransform"/>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="X3DTextureTransform2DNode" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/texturing.html#X3DTextureTransform2DNode"/>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DTextureTransformNode">
+				<xs:attribute name="center" type="SFVec2f" default="0 0"/>
+				<xs:attribute name="rotation" type="SFFloat" default="0"/>
+				<xs:attribute name="scale" type="SFVec2f" default="1 1"/>
+				<xs:attribute name="translation" type="SFVec2f" default="0 0"/>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="X3DTimeDependentNode" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/time.html#X3DTimeDependentNode"/>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DChildNode">
+				<xs:attribute name="elapsedTime" type="SFTime"/>
+				<xs:attribute name="isActive" type="SFBool"/>
+				<xs:attribute name="isPaused" type="SFBool"/>
+				<xs:attribute name="loop" type="SFBool" default="false"/>
+				<xs:attribute name="pauseTime" type="SFTime" default="0"/>
+				<xs:attribute name="resumeTime" type="SFTime" default="0"/>
+				<xs:attribute name="startTime" type="SFTime" default="0"/>
+				<xs:attribute name="stopTime" type="SFTime" default="0"/>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="X3DTouchSensorNode" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/pointingsensor.html#X3DTouchSensorNode"/>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DPointingDeviceSensorNode">
+				<xs:attribute name="touchTime" type="SFTime"/>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="X3DTriggerNode" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/utils.html#X3DTriggerNode"/>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DChildNode"/>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="X3DUrlObject" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo>X3DUrlObject indicates that a node has content loaded from a URL and can be tracked via a LoadSensor.
+			</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/networking.html#X3DUrlObject"/>
+		</xs:annotation>
+		<xs:attribute name="url" type="MFString"/>
+	</xs:complexType>
+	<xs:complexType name="X3DVertexAttributeNode" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo>
+			</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-X3DAbstractSpecification/Part01/components/shaders.html#X3DVertexAttributeNode"/>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DGeometricPropertyNode">
+				<xs:attribute name="name" type="SFString"/>
+				<xs:attribute name="containerField" type="xs:NMTOKEN" default="attrib"/>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<!-- doesn't Event need to be in abstract spec?
+	<xs:complexType name="Event" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo>An Event consists of a timeStampX3d and a field value.  An event is a message sent from one node to another, connecting fields as defined by a ROUTE.  Events signal external stimuli, changes to field values, and interactions between nodes.  Note existence of related and equivalent org.w3c.dom.events.Event.timeStamp.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/concepts.html#Eventmodel"/>
+		</xs:annotation>
+	</xs:complexType>
+	-->
+	<xs:complexType name="X3DPrototype" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/concepts.html#PrototypeSemantics"/>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="SceneGraphStructureNodeType">
+				<xs:attribute name="name" type="xs:NMTOKEN" use="required"/>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="SceneGraphStructureNodeType" abstract="false" mixed="false">
+		<xs:annotation>
+			<xs:appinfo>SceneGraphStructureNodeType is a marker interface that identifies nonrenderable nodes relating to scene graph structure.  SceneGraphStructureNodeType extends from Base rather than X3DNode since DEF/USE not appropriate for declarations.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/concepts.html#scenegraph"/>
+		</xs:annotation>
+	</xs:complexType>
+	<xs:complexType name="WildcardNodeType" abstract="true" mixed="false">
+		<xs:annotation>
+			<xs:appinfo>This complexType will likely not be needed, since integrating ProtoInstance into the content models solves the wildcard and extensibility problems.</xs:appinfo>
+		</xs:annotation>
+		<xs:complexContent mixed="false">
+			<xs:extension base="X3DNode"/>
+		</xs:complexContent>
+	</xs:complexType>
+	<!--======================================================================-->
+	<!-- Most child-node content models are provided by these xs:group element definitions.  These are necessary since complexType definitions can't be used to define contained content elements.-->
+	<xs:group name="AppearanceChildContentModel">
+		<xs:annotation>
+			<xs:appinfo>Child-node content model corresponding to X3DAppearanceChildNode.  Appearance can contain FillProperties, LineProperties, Material, any Texture node and any TextureTransform node, in any order. No more than one instance of these nodes is allowed.  Appearance may also contain multiple shaders (ComposedShader, PackagedShader, ProgramShader).</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/shape.html#Appearancenode"/>
+		</xs:annotation>
+		<xs:choice>
+			<xs:group ref="AppearanceChildContentModelNoProtoInstance"/>
+			<xs:element ref="ProtoInstance"/>
+		</xs:choice>
+	</xs:group>
+	<xs:group name="AppearanceChildContentModelNoProtoInstance">
+		<xs:annotation>
+			<xs:appinfo>Child-node content model corresponding to X3DAppearanceChildNode.  Appearance can contain FillProperties, LineProperties, Material, any Texture node and any TextureTransform node, in any order. No more than one instance of these nodes is allowed.  Appearance may also contain multiple shaders (ComposedShader, PackagedShader, ProgramShader).</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/shape.html#Appearancenode"/>
+		</xs:annotation>
+		<xs:choice>
+			<xs:element ref="FillProperties">
+				<xs:annotation>
+					<xs:documentation>fillProperties</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+			<xs:element ref="LineProperties">
+				<xs:annotation>
+					<xs:documentation>lineProperties</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+			<xs:element ref="Material">
+				<xs:annotation>
+					<xs:documentation>material</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+			<xs:element ref="ComposedShader">
+				<xs:annotation>
+					<xs:documentation>shaders</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+			<xs:element ref="PackagedShader">
+				<xs:annotation>
+					<xs:documentation>shaders</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+			<xs:element ref="ProgramShader">
+				<xs:annotation>
+					<xs:documentation>shaders</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+			<xs:element ref="ComposedCubeMapTexture">
+				<xs:annotation>
+					<xs:documentation>texture</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+			<xs:element ref="ImageTexture">
+				<xs:annotation>
+					<xs:documentation>texture</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+			<xs:element ref="MovieTexture">
+				<xs:annotation>
+					<xs:documentation>texture</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+			<xs:element ref="MultiTexture">
+				<xs:annotation>
+					<xs:documentation>texture</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+			<xs:element ref="PixelTexture">
+				<xs:annotation>
+					<xs:documentation>texture</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+			<xs:element ref="GeneratedCubeMapTexture">
+				<xs:annotation>
+					<xs:documentation>texture</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+			<xs:element ref="ImageCubeMapTexture">
+				<xs:annotation>
+					<xs:documentation>texture</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+			<xs:element ref="MultiTextureTransform">
+				<xs:annotation>
+					<xs:documentation>textureTransform</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+			<xs:element ref="TextureTransform">
+				<xs:annotation>
+					<xs:documentation>textureTransform</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+		</xs:choice>
+	</xs:group>
+	<xs:group name="ChildContentModel">
+		<xs:annotation>
+			<xs:appinfo>ChildContentModel is the child-node content model corresponding to X3DChildNode, combining all profiles.  ChildContentModel can contain most nodes, other Grouping nodes, Prototype declarations and ProtoInstances in any order and any combination. When the assigned profile is less than Full, the precise palette of legal nodes depends on assigned profile and components.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/group.html#GroupingAndChildrenNodes">children</xs:documentation>
+		</xs:annotation>
+		<xs:choice>
+			<!-- ChildContentModeCore omitted here since included in X3DNode type definition -->
+			<xs:group ref="ChildContentModelInterchange"/>
+			<xs:group ref="ChildContentModelInteractive"/>
+			<xs:group ref="ChildContentModelImmersive"/>
+			<xs:group ref="ChildContentModelFull"/>
+			<xs:group ref="ChildContentModelDIS"/>
+			<xs:group ref="ChildContentModelGeoSpatial"/>
+			<xs:group ref="ChildContentModelHumanoidAnimation"/>
+			<xs:group ref="ChildContentModelNurbs"/>
+			<xs:group ref="ChildContentModelProtoInstance"/>
+		</xs:choice>
+	</xs:group>
+	<xs:group name="ChildContentModeCore">
+		<xs:annotation>
+			<xs:appinfo>Child-node content model corresponding to X3DChildNode for Core profile.  ChildContentModelCore enables the first child of any node to be MetadataDouble, MetadataFloat, MetadataInteger, MetadataSet or MetadataString.</xs:appinfo>
+			<xs:documentation/>
+		</xs:annotation>
+		<xs:choice>
+			<!-- empty -->
+			<xs:element ref="MetadataDouble"/>
+			<xs:element ref="MetadataFloat"/>
+			<xs:element ref="MetadataInteger"/>
+			<xs:element ref="MetadataSet"/>
+			<xs:element ref="MetadataString"/>
+		</xs:choice>
+	</xs:group>
+	<xs:group name="ChildContentModelInterchange">
+		<xs:annotation>
+			<xs:appinfo>Child-node content model corresponding to X3DChildNode for Interchange profile.</xs:appinfo>
+			<xs:documentation/>
+		</xs:annotation>
+		<xs:choice>
+			<xs:element ref="Appearance"/>
+			<xs:element ref="Background"/>
+			<xs:element ref="ColorInterpolator"/>
+			<xs:element ref="CoordinateInterpolator"/>
+			<xs:element ref="DirectionalLight"/>
+			<xs:element ref="Group"/>
+			<xs:element ref="NavigationInfo"/>
+			<xs:element ref="NormalInterpolator"/>
+			<xs:element ref="OrientationInterpolator"/>
+			<xs:element ref="PositionInterpolator"/>
+			<xs:element ref="ScalarInterpolator"/>
+			<xs:element ref="Shape"/>
+			<xs:element ref="TimeSensor"/>
+			<xs:element ref="Transform"/>
+			<xs:element ref="Viewpoint"/>
+			<xs:element ref="WorldInfo"/>
+		</xs:choice>
+	</xs:group>
+	<xs:group name="ChildContentModelInteractive">
+		<xs:annotation>
+			<xs:appinfo>Child-node content model corresponding to X3DChildNode for Interactive profile.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/interactive.html"/>
+		</xs:annotation>
+		<xs:choice>
+			<xs:element ref="Anchor"/>
+			<xs:element ref="BooleanFilter"/>
+			<xs:element ref="BooleanSequencer"/>
+			<xs:element ref="BooleanToggle"/>
+			<xs:element ref="BooleanTrigger"/>
+			<xs:element ref="CylinderSensor"/>
+			<xs:element ref="Inline"/>
+			<xs:element ref="IntegerSequencer"/>
+			<xs:element ref="IntegerTrigger"/>
+			<xs:element ref="KeySensor"/>
+			<xs:element ref="PlaneSensor"/>
+			<xs:element ref="PointLight"/>
+			<xs:element ref="ProximitySensor"/>
+			<xs:element ref="SphereSensor"/>
+			<xs:element ref="SpotLight"/>
+			<xs:element ref="StringSensor"/>
+			<xs:element ref="Switch"/>
+			<xs:element ref="TimeTrigger"/>
+			<xs:element ref="TouchSensor"/>
+		</xs:choice>
+	</xs:group>
+	<xs:group name="ChildContentModelImmersive">
+		<xs:annotation>
+			<xs:appinfo>Child-node content model corresponding to X3DChildNode for Immersive profile.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/immersive.html"/>
+		</xs:annotation>
+		<xs:choice>
+			<xs:element ref="AudioClip"/>
+			<xs:element ref="Billboard"/>
+			<xs:element ref="Collision"/>
+			<xs:element ref="Fog"/>
+			<xs:element ref="LoadSensor"/>
+			<xs:element ref="LocalFog"/>
+			<xs:element ref="LOD"/>
+			<xs:element ref="Script"/>
+			<xs:element ref="Sound"/>
+			<xs:element ref="VisibilitySensor"/>
+		</xs:choice>
+	</xs:group>
+	<xs:group name="ChildContentModelFull">
+		<xs:annotation>
+			<xs:appinfo>Child-node content model corresponding to X3DChildNode for Full profile.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/Full.html"/>
+		</xs:annotation>
+		<xs:choice>
+			<xs:element ref="CoordinateInterpolator2D"/>
+			<xs:element ref="PositionInterpolator2D"/>
+			<xs:element ref="StaticGroup"/>
+			<xs:element ref="CADAssembly"/>
+			<xs:element ref="CADLayer"/>
+		</xs:choice>
+	</xs:group>
+	<xs:group name="ChildContentModelDIS">
+		<xs:annotation>
+			<xs:appinfo>Child-node content model corresponding to X3DChildNode for DIS component.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/dis.html"/>
+		</xs:annotation>
+		<xs:choice>
+			<xs:element ref="EspduTransform"/>
+			<xs:element ref="ReceiverPdu"/>
+			<xs:element ref="SignalPdu"/>
+			<xs:element ref="TransmitterPdu"/>
+		</xs:choice>
+	</xs:group>
+	<xs:group name="ChildContentModelGeoSpatial">
+		<xs:annotation>
+			<xs:appinfo>Child-node content model corresponding to X3DChildNode for GeoSpatial component.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/geodata.html"/>
+		</xs:annotation>
+		<xs:choice>
+			<xs:element ref="GeoLocation"/>
+			<xs:element ref="GeoLOD"/>
+			<xs:element ref="GeoMetadata"/>
+			<xs:element ref="GeoOrigin"/>
+			<xs:element ref="GeoPositionInterpolator"/>
+			<xs:element ref="GeoTouchSensor"/>
+			<xs:element ref="GeoViewpoint"/>
+		</xs:choice>
+	</xs:group>
+	<xs:group name="ChildContentModelHumanoidAnimation">
+		<xs:annotation>
+			<xs:appinfo>Child-node content model corresponding to X3DChildNode for HumanoidAnimation component.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/hanim.html"/>
+		</xs:annotation>
+		<xs:choice>
+			<xs:element ref="HAnimHumanoid"/>
+			<xs:element ref="HAnimJoint"/>
+			<xs:element ref="HAnimSegment"/>
+			<xs:element ref="HAnimSite"/>
+		</xs:choice>
+	</xs:group>
+	<xs:group name="ChildContentModelNurbs">
+		<xs:annotation>
+			<xs:appinfo>Child-node content model corresponding to X3DChildNode for Nurbs component.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/nurbs.html"/>
+		</xs:annotation>
+		<xs:choice>
+			<xs:element ref="NurbsOrientationInterpolator"/>
+			<xs:element ref="NurbsPositionInterpolator"/>
+			<xs:element ref="NurbsSurfaceInterpolator"/>
+			<xs:element ref="NurbsSet"/>
+		</xs:choice>
+	</xs:group>
+	<xs:group name="ChildContentModelProtoInstance">
+		<xs:annotation>
+			<xs:appinfo>Child-node content model corresponding to ProtoInstance in Immersive profile.</xs:appinfo>
+			<xs:documentation/>
+		</xs:annotation>
+		<xs:choice>
+			<xs:element ref="ProtoInstance"/>
+		</xs:choice>
+	</xs:group>
+	<xs:group name="ChildContentModelSceneGraphStructure">
+		<xs:annotation>
+			<xs:appinfo>Child-node content model corresponding to SceneGraphStructure elements, which are not specific X3D nodes.</xs:appinfo>
+			<xs:documentation/>
+		</xs:annotation>
+		<xs:choice>
+			<xs:element ref="ROUTE"/>
+			<xs:element ref="ExternProtoDeclare"/>
+			<xs:element ref="ProtoDeclare"/>
+			<xs:element ref="IMPORT"/>
+			<xs:element ref="EXPORT"/>
+		</xs:choice>
+	</xs:group>
+	<xs:group name="ColorCoordinateContentModel">
+		<xs:annotation>
+			<xs:appinfo>ColorCoordinateContentModel is the child-node content model corresponding to IndexedLineSet, LineSet and PointSet.  ColorCoordinateContentModel can contain any-order Coordinate node with Color (or ColorRGBA) node.  No more than one instance of any single node type is allowed.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/rendering.html#IndexedLineSet"/>
+		</xs:annotation>
+		<xs:choice>
+			<xs:sequence>
+				<xs:choice>
+					<xs:element ref="Color"/>
+					<xs:element ref="ColorRGBA"/>
+				</xs:choice>
+				<xs:choice minOccurs="0">
+					<xs:element ref="Coordinate"/>
+					<xs:element ref="CoordinateDouble"/>
+					<xs:element ref="GeoCoordinate"/>
+					<xs:element ref="ProtoInstance"/>
+				</xs:choice>
+			</xs:sequence>
+			<xs:sequence>
+				<xs:choice>
+					<xs:element ref="Coordinate"/>
+					<xs:element ref="CoordinateDouble"/>
+					<xs:element ref="GeoCoordinate"/>
+				</xs:choice>
+				<xs:choice minOccurs="0">
+					<xs:choice>
+						<xs:element ref="Color"/>
+						<xs:element ref="ColorRGBA"/>
+					</xs:choice>
+					<xs:element ref="ProtoInstance"/>
+				</xs:choice>
+			</xs:sequence>
+			<xs:sequence>
+				<xs:element ref="ProtoInstance"/>
+				<xs:choice minOccurs="0">
+					<xs:choice>
+						<xs:element ref="Color"/>
+						<xs:element ref="ColorRGBA"/>
+					</xs:choice>
+					<xs:choice>
+						<xs:element ref="Coordinate"/>
+						<xs:element ref="CoordinateDouble"/>
+						<xs:element ref="GeoCoordinate"/>
+					</xs:choice>
+					<xs:element ref="ProtoInstance"/>
+				</xs:choice>
+			</xs:sequence>
+		</xs:choice>
+	</xs:group>
+	<xs:group name="ColorNormalTexCoordContentModel">
+		<xs:annotation>
+			<xs:appinfo>ColorNormalTexCoordContentModel is the child-node content model corresponding to ElevationGrid and GeoElevationGrid.  ColorNormalTexCoordContentModel can contain Color (or ColorRGBA), Normal and TextureCoordinate, in any order.  No more than one instance of any single node type is allowed.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/geometry3D.html#ElevationGrid"/>
+		</xs:annotation>
+		<xs:sequence>
+			<xs:choice>
+				<xs:sequence>
+					<xs:choice>
+						<xs:element ref="Color"/>
+						<xs:element ref="ColorRGBA"/>
+					</xs:choice>
+					<xs:choice minOccurs="0">
+						<xs:sequence>
+							<xs:element ref="Normal"/>
+							<xs:choice minOccurs="0">
+								<xs:element ref="TextureCoordinate"/>
+								<xs:element ref="TextureCoordinateGenerator"/>
+								<xs:element ref="MultiTextureCoordinate"/>
+								<xs:element ref="NurbsTextureCoordinate"/>
+								<xs:element ref="ProtoInstance"/>
+							</xs:choice>
+						</xs:sequence>
+						<xs:sequence>
+							<xs:choice>
+								<xs:element ref="TextureCoordinate"/>
+								<xs:element ref="TextureCoordinateGenerator"/>
+								<xs:element ref="MultiTextureCoordinate"/>
+								<xs:element ref="NurbsTextureCoordinate"/>
+							</xs:choice>
+							<xs:choice minOccurs="0">
+								<xs:element ref="Normal"/>
+								<xs:element ref="ProtoInstance"/>
+							</xs:choice>
+						</xs:sequence>
+						<xs:sequence>
+							<xs:element ref="ProtoInstance"/>
+							<xs:choice minOccurs="0">
+								<xs:element ref="Normal"/>
+								<xs:element ref="TextureCoordinate"/>
+								<xs:element ref="TextureCoordinateGenerator"/>
+								<xs:element ref="MultiTextureCoordinate"/>
+								<xs:element ref="NurbsTextureCoordinate"/>
+								<xs:element ref="ProtoInstance"/>
+							</xs:choice>
+						</xs:sequence>
+					</xs:choice>
+				</xs:sequence>
+				<xs:sequence>
+					<xs:element ref="Normal"/>
+					<xs:choice minOccurs="0">
+						<xs:sequence>
+							<xs:choice>
+								<xs:element ref="Color"/>
+								<xs:element ref="ColorRGBA"/>
+							</xs:choice>
+							<xs:choice minOccurs="0">
+								<xs:element ref="TextureCoordinate"/>
+								<xs:element ref="TextureCoordinateGenerator"/>
+								<xs:element ref="MultiTextureCoordinate"/>
+								<xs:element ref="NurbsTextureCoordinate"/>
+								<xs:element ref="ProtoInstance"/>
+							</xs:choice>
+						</xs:sequence>
+						<xs:sequence>
+							<xs:choice>
+								<xs:element ref="TextureCoordinate"/>
+								<xs:element ref="TextureCoordinateGenerator"/>
+								<xs:element ref="MultiTextureCoordinate"/>
+								<xs:element ref="NurbsTextureCoordinate"/>
+							</xs:choice>
+							<xs:choice minOccurs="0">
+								<xs:element ref="Color"/>
+								<xs:element ref="ColorRGBA"/>
+								<xs:element ref="ProtoInstance"/>
+							</xs:choice>
+						</xs:sequence>
+						<xs:sequence>
+							<xs:element ref="ProtoInstance"/>
+							<xs:choice minOccurs="0">
+								<xs:element ref="Color"/>
+								<xs:element ref="ColorRGBA"/>
+								<xs:element ref="TextureCoordinate"/>
+								<xs:element ref="TextureCoordinateGenerator"/>
+								<xs:element ref="MultiTextureCoordinate"/>
+								<xs:element ref="NurbsTextureCoordinate"/>
+								<xs:element ref="ProtoInstance"/>
+							</xs:choice>
+						</xs:sequence>
+					</xs:choice>
+				</xs:sequence>
+				<xs:sequence>
+					<xs:choice>
+						<xs:element ref="TextureCoordinate"/>
+						<xs:element ref="TextureCoordinateGenerator"/>
+						<xs:element ref="MultiTextureCoordinate"/>
+						<xs:element ref="NurbsTextureCoordinate"/>
+					</xs:choice>
+					<xs:choice minOccurs="0">
+						<xs:sequence>
+							<xs:choice>
+								<xs:element ref="Color"/>
+								<xs:element ref="ColorRGBA"/>
+							</xs:choice>
+							<xs:choice minOccurs="0">
+								<xs:element ref="Normal"/>
+								<xs:element ref="ProtoInstance"/>
+							</xs:choice>
+						</xs:sequence>
+						<xs:sequence>
+							<xs:element ref="Normal"/>
+							<xs:choice minOccurs="0">
+								<xs:element ref="Color"/>
+								<xs:element ref="ColorRGBA"/>
+								<xs:element ref="ProtoInstance"/>
+							</xs:choice>
+						</xs:sequence>
+						<xs:sequence>
+							<xs:element ref="ProtoInstance"/>
+							<xs:choice minOccurs="0">
+								<xs:element ref="Color"/>
+								<xs:element ref="ColorRGBA"/>
+								<xs:element ref="Normal"/>
+								<xs:element ref="ProtoInstance"/>
+							</xs:choice>
+						</xs:sequence>
+					</xs:choice>
+				</xs:sequence>
+				<xs:sequence>
+					<xs:element ref="ProtoInstance"/>
+					<xs:choice minOccurs="0">
+						<xs:sequence>
+							<xs:choice>
+								<xs:element ref="Color"/>
+								<xs:element ref="ColorRGBA"/>
+							</xs:choice>
+							<xs:choice minOccurs="0">
+								<xs:element ref="Normal"/>
+								<xs:element ref="TextureCoordinate"/>
+								<xs:element ref="TextureCoordinateGenerator"/>
+								<xs:element ref="MultiTextureCoordinate"/>
+								<xs:element ref="NurbsTextureCoordinate"/>
+								<xs:element ref="ProtoInstance"/>
+							</xs:choice>
+						</xs:sequence>
+						<xs:sequence>
+							<xs:element ref="Normal"/>
+							<xs:choice minOccurs="0">
+								<xs:element ref="Color"/>
+								<xs:element ref="ColorRGBA"/>
+								<xs:element ref="TextureCoordinate"/>
+								<xs:element ref="TextureCoordinateGenerator"/>
+								<xs:element ref="MultiTextureCoordinate"/>
+								<xs:element ref="NurbsTextureCoordinate"/>
+								<xs:element ref="ProtoInstance"/>
+							</xs:choice>
+						</xs:sequence>
+						<xs:sequence>
+							<xs:element ref="ProtoInstance"/>
+							<xs:choice minOccurs="0">
+								<xs:element ref="Color"/>
+								<xs:element ref="ColorRGBA"/>
+								<xs:element ref="Normal"/>
+								<xs:element ref="TextureCoordinate"/>
+								<xs:element ref="TextureCoordinateGenerator"/>
+								<xs:element ref="MultiTextureCoordinate"/>
+								<xs:element ref="NurbsTextureCoordinate"/>
+								<xs:element ref="ProtoInstance"/>
+							</xs:choice>
+						</xs:sequence>
+					</xs:choice>
+				</xs:sequence>
+			</xs:choice>
+			<xs:element ref="FogCoordinate" minOccurs="0"/>
+		</xs:sequence>
+	</xs:group>
+	<xs:group name="ComposedGeometryContentModel">
+		<xs:annotation>
+			<xs:appinfo>ComposedGeometryContentModel is the child-node content model corresponding to X3DComposedGeometryNodes.  It can contain Color (or ColorRGBA), Coordinate, Normal and TextureCoordinate, in any order.  No more than one instance of these nodes is allowed.  Multiple VertexAttribute (FloatVertexAttribute, Matrix3VertexAttribute, Matrix4VertexAttribute) nodes can also be contained.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/geometry3D.html#IndexedFaceSet"/>
+		</xs:annotation>
+		<xs:choice>
+			<xs:element ref="FloatVertexAttribute">
+				<xs:annotation>
+					<xs:documentation>attrib</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+			<xs:element ref="Matrix3VertexAttribute">
+				<xs:annotation>
+					<xs:documentation>attrib</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+			<xs:element ref="Matrix4VertexAttribute">
+				<xs:annotation>
+					<xs:documentation>attrib</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+			<xs:element ref="Color">
+				<xs:annotation>
+					<xs:documentation>color</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+			<xs:element ref="ColorRGBA">
+				<xs:annotation>
+					<xs:documentation>color</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+			<xs:element ref="Coordinate">
+				<xs:annotation>
+					<xs:documentation>coord</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+			<xs:element ref="CoordinateDouble">
+				<xs:annotation>
+					<xs:documentation>coord</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+			<xs:element ref="GeoCoordinate">
+				<xs:annotation>
+					<xs:documentation>coord</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+			<xs:element ref="FogCoordinate">
+				<xs:annotation>
+					<xs:documentation>fogcoord</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+			<xs:element ref="Normal">
+				<xs:annotation>
+					<xs:documentation>normal</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+			<xs:element ref="TextureCoordinate">
+				<xs:annotation>
+					<xs:documentation>texcoord</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+			<xs:element ref="TextureCoordinate3D">
+				<xs:annotation>
+					<xs:documentation>texcoord</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+			<xs:element ref="TextureCoordinate4D">
+				<xs:annotation>
+					<xs:documentation>texcoord</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+			<xs:element ref="TextureCoordinateGenerator">
+				<xs:annotation>
+					<xs:documentation>texcoord</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+			<xs:element ref="MultiTextureCoordinate">
+				<xs:annotation>
+					<xs:documentation>texcoord</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+			<xs:element ref="NurbsTextureCoordinate">
+				<xs:annotation>
+					<xs:documentation>texcoord</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+			<xs:element ref="ProtoInstance"/>
+		</xs:choice>
+	</xs:group>
+	<xs:group name="ColorCoordinateNormalTexCoordContentModel">
+		<xs:annotation>
+			<xs:appinfo>ColorCoordinateNormalTexCoordContentModel is the child-node content model corresponding to IndexedFaceSet and related Triangle 3D geometry nodes.  ColorCoordinateNormalTexCoordContentModel can contain VertexAttribute, Color (or ColorRGBA), Coordinate (or CoordinateDouble), Normal and TextureCoordinate nodes, in any order.  No more than one instance of any single node type is allowed.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/geometry3D.html#IndexedFaceSet"/>
+		</xs:annotation>
+		<xs:sequence>
+			<xs:choice>
+				<xs:sequence>
+					<xs:choice>
+						<xs:element ref="Color"/>
+						<xs:element ref="ColorRGBA"/>
+					</xs:choice>
+					<xs:choice minOccurs="0">
+						<xs:sequence>
+							<xs:choice>
+								<xs:element ref="Coordinate"/>
+								<xs:element ref="CoordinateDouble"/>
+								<xs:element ref="GeoCoordinate"/>
+							</xs:choice>
+							<xs:choice minOccurs="0">
+								<xs:sequence>
+									<xs:element ref="Normal"/>
+									<xs:choice minOccurs="0">
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:choice>
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+									</xs:choice>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Normal"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:element ref="ProtoInstance"/>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Normal"/>
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+							</xs:choice>
+						</xs:sequence>
+						<xs:sequence>
+							<xs:element ref="Normal"/>
+							<xs:choice minOccurs="0">
+								<xs:sequence>
+									<xs:choice>
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+									</xs:choice>
+									<xs:choice minOccurs="0">
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:choice>
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+									</xs:choice>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:element ref="ProtoInstance"/>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+							</xs:choice>
+						</xs:sequence>
+						<xs:sequence>
+							<xs:choice>
+								<xs:element ref="TextureCoordinate"/>
+								<xs:element ref="TextureCoordinateGenerator"/>
+								<xs:element ref="MultiTextureCoordinate"/>
+								<xs:element ref="NurbsTextureCoordinate"/>
+							</xs:choice>
+							<xs:choice minOccurs="0">
+								<xs:sequence>
+									<xs:choice>
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+									</xs:choice>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Normal"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:element ref="Normal"/>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:element ref="ProtoInstance"/>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+										<xs:element ref="Normal"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+							</xs:choice>
+						</xs:sequence>
+						<xs:sequence>
+							<xs:element ref="ProtoInstance"/>
+							<xs:choice minOccurs="0">
+								<xs:sequence>
+									<xs:choice>
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+									</xs:choice>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Normal"/>
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:element ref="Normal"/>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:choice>
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+									</xs:choice>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+										<xs:element ref="Normal"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:element ref="ProtoInstance"/>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+										<xs:element ref="Normal"/>
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+							</xs:choice>
+						</xs:sequence>
+					</xs:choice>
+				</xs:sequence>
+				<xs:sequence>
+					<xs:choice>
+						<xs:element ref="Coordinate"/>
+						<xs:element ref="CoordinateDouble"/>
+						<xs:element ref="GeoCoordinate"/>
+					</xs:choice>
+					<xs:choice minOccurs="0">
+						<xs:sequence>
+							<xs:choice>
+								<xs:element ref="Color"/>
+								<xs:element ref="ColorRGBA"/>
+							</xs:choice>
+							<xs:choice minOccurs="0">
+								<xs:sequence>
+									<xs:element ref="Normal"/>
+									<xs:choice minOccurs="0">
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:choice>
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+									</xs:choice>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Normal"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:element ref="ProtoInstance"/>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Normal"/>
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+							</xs:choice>
+						</xs:sequence>
+						<xs:sequence>
+							<xs:element ref="Normal"/>
+							<xs:choice minOccurs="0">
+								<xs:sequence>
+									<xs:choice>
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+									</xs:choice>
+									<xs:choice minOccurs="0">
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:choice>
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+									</xs:choice>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:element ref="ProtoInstance"/>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+							</xs:choice>
+						</xs:sequence>
+						<xs:sequence>
+							<xs:choice>
+								<xs:element ref="TextureCoordinate"/>
+								<xs:element ref="TextureCoordinateGenerator"/>
+								<xs:element ref="MultiTextureCoordinate"/>
+								<xs:element ref="NurbsTextureCoordinate"/>
+							</xs:choice>
+							<xs:choice minOccurs="0">
+								<xs:sequence>
+									<xs:choice>
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+									</xs:choice>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Normal"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:element ref="Normal"/>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:element ref="ProtoInstance"/>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+										<xs:element ref="Normal"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+							</xs:choice>
+						</xs:sequence>
+						<xs:sequence>
+							<xs:element ref="ProtoInstance"/>
+							<xs:choice minOccurs="0">
+								<xs:sequence>
+									<xs:choice>
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+									</xs:choice>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Normal"/>
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:element ref="Normal"/>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:choice>
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+									</xs:choice>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+										<xs:element ref="Normal"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:element ref="ProtoInstance"/>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+										<xs:element ref="Normal"/>
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+							</xs:choice>
+						</xs:sequence>
+					</xs:choice>
+				</xs:sequence>
+				<xs:sequence>
+					<xs:element ref="Normal"/>
+					<xs:choice minOccurs="0">
+						<xs:sequence>
+							<xs:choice>
+								<xs:element ref="Color"/>
+								<xs:element ref="ColorRGBA"/>
+							</xs:choice>
+							<xs:choice minOccurs="0">
+								<xs:sequence>
+									<xs:choice>
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+									</xs:choice>
+									<xs:choice minOccurs="0">
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:choice>
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+									</xs:choice>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:element ref="ProtoInstance"/>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+							</xs:choice>
+						</xs:sequence>
+						<xs:sequence>
+							<xs:choice>
+								<xs:element ref="Coordinate"/>
+								<xs:element ref="CoordinateDouble"/>
+								<xs:element ref="GeoCoordinate"/>
+							</xs:choice>
+							<xs:choice minOccurs="0">
+								<xs:sequence>
+									<xs:choice>
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+									</xs:choice>
+									<xs:choice minOccurs="0">
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:choice>
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+									</xs:choice>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:element ref="ProtoInstance"/>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+							</xs:choice>
+						</xs:sequence>
+						<xs:sequence>
+							<xs:choice>
+								<xs:element ref="TextureCoordinate"/>
+								<xs:element ref="TextureCoordinateGenerator"/>
+								<xs:element ref="MultiTextureCoordinate"/>
+								<xs:element ref="NurbsTextureCoordinate"/>
+							</xs:choice>
+							<xs:choice minOccurs="0">
+								<xs:sequence>
+									<xs:choice>
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+									</xs:choice>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:choice>
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+									</xs:choice>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:element ref="ProtoInstance"/>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+							</xs:choice>
+						</xs:sequence>
+						<xs:sequence>
+							<xs:element ref="ProtoInstance"/>
+							<xs:choice minOccurs="0">
+								<xs:sequence>
+									<xs:choice>
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+									</xs:choice>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:choice>
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+									</xs:choice>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:choice>
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+									</xs:choice>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:element ref="ProtoInstance"/>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+							</xs:choice>
+						</xs:sequence>
+					</xs:choice>
+				</xs:sequence>
+				<xs:sequence>
+					<xs:choice>
+						<xs:element ref="TextureCoordinate"/>
+						<xs:element ref="TextureCoordinateGenerator"/>
+						<xs:element ref="MultiTextureCoordinate"/>
+						<xs:element ref="NurbsTextureCoordinate"/>
+					</xs:choice>
+					<xs:choice minOccurs="0">
+						<xs:sequence>
+							<xs:choice>
+								<xs:element ref="Color"/>
+								<xs:element ref="ColorRGBA"/>
+							</xs:choice>
+							<xs:choice minOccurs="0">
+								<xs:sequence>
+									<xs:choice>
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+									</xs:choice>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Normal"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:element ref="Normal"/>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:element ref="ProtoInstance"/>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+										<xs:element ref="Normal"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+							</xs:choice>
+						</xs:sequence>
+						<xs:sequence>
+							<xs:choice>
+								<xs:element ref="Coordinate"/>
+								<xs:element ref="CoordinateDouble"/>
+								<xs:element ref="GeoCoordinate"/>
+							</xs:choice>
+							<xs:choice minOccurs="0">
+								<xs:sequence>
+									<xs:choice>
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+									</xs:choice>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Normal"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:element ref="Normal"/>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:element ref="ProtoInstance"/>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+										<xs:element ref="Normal"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+							</xs:choice>
+						</xs:sequence>
+						<xs:sequence>
+							<xs:element ref="Normal"/>
+							<xs:choice minOccurs="0">
+								<xs:sequence>
+									<xs:choice>
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+									</xs:choice>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:choice>
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+									</xs:choice>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:element ref="ProtoInstance"/>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+							</xs:choice>
+						</xs:sequence>
+						<xs:sequence>
+							<xs:element ref="ProtoInstance"/>
+							<xs:choice minOccurs="0">
+								<xs:sequence>
+									<xs:choice>
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+									</xs:choice>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+										<xs:element ref="Normal"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:choice>
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+									</xs:choice>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+										<xs:element ref="Normal"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:element ref="Normal"/>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:element ref="ProtoInstance"/>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+										<xs:element ref="Normal"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+							</xs:choice>
+						</xs:sequence>
+					</xs:choice>
+				</xs:sequence>
+				<xs:sequence>
+					<xs:element ref="ProtoInstance"/>
+					<xs:choice minOccurs="0">
+						<xs:sequence>
+							<xs:choice>
+								<xs:element ref="Color"/>
+								<xs:element ref="ColorRGBA"/>
+							</xs:choice>
+							<xs:choice minOccurs="0">
+								<xs:sequence>
+									<xs:choice>
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+									</xs:choice>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Normal"/>
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:element ref="Normal"/>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:choice>
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+									</xs:choice>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+										<xs:element ref="Normal"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:element ref="ProtoInstance"/>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+										<xs:element ref="Normal"/>
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+							</xs:choice>
+						</xs:sequence>
+						<xs:sequence>
+							<xs:choice>
+								<xs:element ref="Coordinate"/>
+								<xs:element ref="CoordinateDouble"/>
+								<xs:element ref="GeoCoordinate"/>
+							</xs:choice>
+							<xs:choice minOccurs="0">
+								<xs:sequence>
+									<xs:choice>
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+									</xs:choice>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Normal"/>
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:element ref="Normal"/>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:choice>
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+									</xs:choice>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+										<xs:element ref="Normal"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:element ref="ProtoInstance"/>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+										<xs:element ref="Normal"/>
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+							</xs:choice>
+						</xs:sequence>
+						<xs:sequence>
+							<xs:element ref="Normal"/>
+							<xs:choice minOccurs="0">
+								<xs:sequence>
+									<xs:choice>
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+									</xs:choice>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:choice>
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+									</xs:choice>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:choice>
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+									</xs:choice>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:element ref="ProtoInstance"/>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+							</xs:choice>
+						</xs:sequence>
+						<xs:sequence>
+							<xs:choice>
+								<xs:element ref="TextureCoordinate"/>
+								<xs:element ref="TextureCoordinateGenerator"/>
+								<xs:element ref="MultiTextureCoordinate"/>
+								<xs:element ref="NurbsTextureCoordinate"/>
+							</xs:choice>
+							<xs:choice minOccurs="0">
+								<xs:sequence>
+									<xs:choice>
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+									</xs:choice>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+										<xs:element ref="Normal"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:choice>
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+									</xs:choice>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+										<xs:element ref="Normal"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:element ref="Normal"/>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:element ref="ProtoInstance"/>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+										<xs:element ref="Normal"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+							</xs:choice>
+						</xs:sequence>
+						<xs:sequence>
+							<xs:element ref="ProtoInstance"/>
+							<xs:choice minOccurs="0">
+								<xs:sequence>
+									<xs:choice>
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+									</xs:choice>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+										<xs:element ref="Normal"/>
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:choice>
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+									</xs:choice>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+										<xs:element ref="Normal"/>
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:element ref="Normal"/>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:choice>
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+									</xs:choice>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+										<xs:element ref="Normal"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+								<xs:sequence>
+									<xs:element ref="ProtoInstance"/>
+									<xs:choice minOccurs="0">
+										<xs:element ref="Color"/>
+										<xs:element ref="ColorRGBA"/>
+										<xs:element ref="Coordinate"/>
+										<xs:element ref="CoordinateDouble"/>
+										<xs:element ref="GeoCoordinate"/>
+										<xs:element ref="Normal"/>
+										<xs:element ref="TextureCoordinate"/>
+										<xs:element ref="TextureCoordinateGenerator"/>
+										<xs:element ref="MultiTextureCoordinate"/>
+										<xs:element ref="NurbsTextureCoordinate"/>
+										<xs:element ref="ProtoInstance"/>
+									</xs:choice>
+								</xs:sequence>
+							</xs:choice>
+						</xs:sequence>
+					</xs:choice>
+				</xs:sequence>
+			</xs:choice>
+			<xs:element ref="FogCoordinate" minOccurs="0"/>
+		</xs:sequence>
+	</xs:group>
+	<xs:group name="GeometryContentModel">
+		<xs:annotation>
+			<xs:appinfo>GeometryContentModel is the child-node content model corresponding to X3DGeometryNode.   No more than one instance of any single geometry node is allowed.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/geometry3D.html#Shapeandgeometry">geometry</xs:documentation>
+		</xs:annotation>
+		<xs:choice>
+			<xs:group ref="GeometryContentModelInterchange"/>
+			<xs:group ref="GeometryContentModelInteractive"/>
+			<xs:group ref="GeometryContentModelImmersive"/>
+			<xs:group ref="GeometryContentModel2D"/>
+			<xs:group ref="GeometryContentModelCAD"/>
+			<xs:group ref="GeometryContentModelGeoSpatial"/>
+			<xs:group ref="GeometryContentModelNurbs"/>
+		</xs:choice>
+	</xs:group>
+	<xs:group name="GeometryContentModelInterchange">
+		<xs:annotation>
+			<xs:appinfo>Child-node content model corresponding to X3DGeometryNode for Interchange profile.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/interchange.html"/>
+		</xs:annotation>
+		<xs:choice>
+			<xs:element ref="Box"/>
+			<xs:element ref="Cone"/>
+			<xs:element ref="Cylinder"/>
+			<xs:element ref="IndexedFaceSet"/>
+			<xs:element ref="IndexedLineSet"/>
+			<xs:element ref="IndexedTriangleFanSet"/>
+			<xs:element ref="IndexedTriangleSet"/>
+			<xs:element ref="IndexedTriangleStripSet"/>
+			<xs:element ref="LineSet"/>
+			<xs:element ref="PointSet"/>
+			<xs:element ref="Sphere"/>
+			<xs:element ref="TriangleFanSet"/>
+			<xs:element ref="TriangleSet"/>
+			<xs:element ref="TriangleStripSet"/>
+		</xs:choice>
+	</xs:group>
+	<xs:group name="GeometryContentModelInteractive">
+		<xs:annotation>
+			<xs:appinfo>Child-node content model corresponding to X3DGeometryNode for Interactive profile.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/interactive.html"/>
+		</xs:annotation>
+		<xs:choice>
+			<xs:element ref="ElevationGrid"/>
+		</xs:choice>
+	</xs:group>
+	<xs:group name="GeometryContentModelImmersive">
+		<xs:annotation>
+			<xs:appinfo>Child-node content model corresponding to X3DGeometryNode for Immersive profile.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/immersive.html"/>
+		</xs:annotation>
+		<xs:choice>
+			<xs:group ref="GeometryContentModel2DImmersive"/>
+			<xs:element ref="Extrusion"/>
+			<xs:element ref="Text"/>
+		</xs:choice>
+	</xs:group>
+	<xs:group name="GeometryContentModel2D">
+		<xs:annotation>
+			<xs:appinfo>Child-node content model corresponding to Geometry2D component.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/geometry2D.html"/>
+		</xs:annotation>
+		<xs:choice>
+			<xs:element ref="Arc2D"/>
+			<xs:element ref="ArcClose2D"/>
+			<xs:element ref="Circle2D"/>
+			<xs:element ref="Disk2D"/>
+		</xs:choice>
+	</xs:group>
+	<xs:group name="GeometryContentModelCAD">
+		<xs:annotation>
+			<xs:appinfo>Child-node content model corresponding to nodes in CAD component.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/geometry2D.html"/>
+		</xs:annotation>
+		<xs:choice>
+			<xs:element ref="QuadSet"/>
+			<xs:element ref="IndexedQuadSet"/>
+		</xs:choice>
+	</xs:group>
+	<xs:group name="GeometryContentModel2DImmersive">
+		<xs:annotation>
+			<xs:appinfo>Child-node content model corresponding to Geometry2D component.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/geometry2D.html"/>
+		</xs:annotation>
+		<xs:choice>
+			<xs:element ref="Polyline2D"/>
+			<xs:element ref="Polypoint2D"/>
+			<xs:element ref="Rectangle2D"/>
+			<xs:element ref="TriangleSet2D"/>
+		</xs:choice>
+	</xs:group>
+	<xs:group name="GeometryContentModelGeoSpatial">
+		<xs:annotation>
+			<xs:appinfo>Child-node content model corresponding to X3DGeometryNode for GeoSpatial component.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/geodata.html"/>
+		</xs:annotation>
+		<xs:choice>
+			<xs:element ref="GeoElevationGrid"/>
+		</xs:choice>
+	</xs:group>
+	<xs:group name="GeometryContentModelNurbs">
+		<xs:annotation>
+			<xs:appinfo>Child-node content model corresponding to X3DGeometryNode for Nurbs component.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/nurbs.html"/>
+		</xs:annotation>
+		<xs:choice>
+			<xs:element ref="Contour2D"/>
+			<xs:element ref="ContourPolyline2D"/>
+			<xs:element ref="NurbsCurve"/>
+			<xs:element ref="NurbsCurve2D"/>
+			<xs:element ref="NurbsPatchSurface"/>
+			<xs:element ref="NurbsSweptSurface"/>
+			<xs:element ref="NurbsSwungSurface"/>
+			<xs:element ref="NurbsTrimmedSurface"/>
+			<!--verify that content model correctly contains other Nurbs nodes-->
+		</xs:choice>
+	</xs:group>
+	<xs:group name="GroupingNodeChildContentModel">
+		<xs:annotation>
+			<xs:appinfo>Child-node content model corresponding to X3DChildNode.  Can contain most nodes, other Grouping nodes, Prototype declarations and ProtoInstances in any order and any combination.  When less that Full profile, the precise palette of legal nodes depends on profile and components.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/concepts.html#f-Objecthierarchy"/>
+		</xs:annotation>
+		<xs:choice>
+			<xs:sequence minOccurs="0" maxOccurs="unbounded">
+				<xs:group ref="ChildContentModel" minOccurs="0" maxOccurs="unbounded"/>
+				<xs:group ref="ChildContentModelSceneGraphStructure" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+		</xs:choice>
+	</xs:group>
+	<xs:group name="SceneGraphFragmentContentModel">
+		<xs:annotation>
+			<xs:appinfo>Child-node content model corresponding to a valid scene-graph fragment.  Can provide field or fieldValue initialization, so no ROUTEs or prototype declarations allowed.</xs:appinfo>
+			<xs:documentation/>
+		</xs:annotation>
+		<xs:choice>
+			<xs:group ref="AppearanceChildContentModelNoProtoInstance"/>
+			<xs:group ref="ChildContentModeCore"/>
+			<xs:group ref="ChildContentModel"/>
+			<xs:group ref="GeometryContentModel"/>
+			<xs:element ref="Color"/>
+			<xs:element ref="ColorRGBA"/>
+			<xs:element ref="Coordinate"/>
+			<xs:element ref="CoordinateDouble"/>
+			<xs:element ref="FontStyle"/>
+			<xs:element ref="GeoCoordinate"/>
+			<xs:element ref="Normal"/>
+			<xs:element ref="TextureCoordinate"/>
+			<xs:element ref="NurbsTextureCoordinate"/>
+		</xs:choice>
+	</xs:group>
+	<xs:group name="SceneGraphFragmentWithPrototypeDeclarationsContentModel">
+		<xs:annotation>
+			<xs:appinfo>Child-node content model corresponding to a valid scene-graph fragment.  Also includes ROUTE(s) and prototype declaration(s).</xs:appinfo>
+			<xs:documentation/>
+		</xs:annotation>
+		<xs:choice>
+			<xs:choice minOccurs="0" maxOccurs="unbounded">
+				<xs:group ref="SceneGraphFragmentContentModel" minOccurs="0" maxOccurs="unbounded"/>
+				<xs:group ref="ChildContentModelSceneGraphStructure" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:choice>
+		</xs:choice>
+	</xs:group>
+	<xs:group name="ShapeChildContentModel">
+		<xs:annotation>
+			<xs:appinfo>ShapeChildContentModel is the child-node content model corresponding to X3DShapeNode.  ShapeChildContentModel can contain a single Appearance node and a single geometry node, in any order.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/shape.html#Shapenodes"/>
+		</xs:annotation>
+		<xs:choice>
+			<xs:sequence>
+				<xs:element ref="Appearance">
+					<xs:annotation>
+						<xs:documentation>appearance</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+				<xs:choice minOccurs="0">
+					<xs:annotation>
+						<xs:documentation>geometry</xs:documentation>
+					</xs:annotation>
+					<xs:group ref="GeometryContentModel"/>
+					<xs:element ref="ProtoInstance"/>
+				</xs:choice>
+			</xs:sequence>
+			<xs:sequence>
+				<xs:group ref="GeometryContentModel"/>
+				<xs:choice minOccurs="0">
+					<xs:annotation>
+						<xs:documentation>appearance</xs:documentation>
+					</xs:annotation>
+					<xs:element ref="Appearance">
+						<xs:annotation>
+							<xs:documentation>appearance</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element ref="ProtoInstance"/>
+				</xs:choice>
+			</xs:sequence>
+			<xs:sequence>
+				<xs:element ref="ProtoInstance">
+					<xs:annotation>
+						<xs:documentation>appearance or geometry</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+				<xs:choice minOccurs="0">
+					<xs:annotation>
+						<xs:documentation>geometry or appearance</xs:documentation>
+					</xs:annotation>
+					<xs:group ref="GeometryContentModel"/>
+					<xs:element ref="Appearance">
+						<xs:annotation>
+							<xs:documentation>appearance</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element ref="ProtoInstance"/>
+				</xs:choice>
+			</xs:sequence>
+		</xs:choice>
+	</xs:group>
+	<xs:group name="SoundChildContentModel">
+		<xs:annotation>
+			<xs:appinfo>SoundChildContentModel is the child-node content model corresponding to X3DSoundNode.  SoundChildContentModel can contain a single AudioClip or MovieTexture as sound source.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/sound.html#Sound"/>
+		</xs:annotation>
+		<xs:choice>
+			<xs:element ref="AudioClip"/>
+			<xs:element ref="MovieTexture"/>
+			<xs:element ref="ProtoInstance"/>
+		</xs:choice>
+	</xs:group>
+	<xs:group name="TextChildContentModel">
+		<xs:annotation>
+			<xs:appinfo>TextChildContentModel is the child-node content model corresponding to X3DTextNode.  TextChildContentModel can contain a single FontStyle node.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/text.html#Text"/>
+		</xs:annotation>
+		<xs:choice>
+			<xs:element ref="FontStyle"/>
+			<xs:element ref="ProtoInstance"/>
+		</xs:choice>
+	</xs:group>
+	<xs:group name="TextureBackgroundChildContentModel">
+		<xs:annotation>
+			<xs:appinfo>TextureBackgroundChildContentModel is the child-node content model corresponding to TextureBackground.  TextureBackgroundChildContentModel can contain up to six Texture nodes (ImageTexture, MovieTexture, MultiTexture or PixelTexture).  Each child texture must have a different containerField for topTexture, bottomTexture, leftTexture, rightTexture, frontTexture and backTexture.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/enveffects.html#TextureBackground"/>
+		</xs:annotation>
+		<xs:choice>
+			<xs:element ref="ImageTexture"/>
+			<xs:element ref="MovieTexture"/>
+			<xs:element ref="MultiTexture"/>
+			<xs:element ref="PixelTexture"/>
+			<xs:element ref="ProtoInstance"/>
+		</xs:choice>
+		<!--Controversial construct, throws errors if includes minOccurs="0" maxOccurs="6".  Deterministic content model.
+		    Moved constraint to parent referring xs:group OK.  Still need to test if more than 6 children will be invalidated.-->
+	</xs:group>
+	<!--======================================================================-->
+	<!--Interchange, Interactive, Immersive and Full Profile X3D Nodes-->
+	<xs:element name="Anchor">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/networking.html#Anchor"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DGroupingNode">
+					<xs:attribute name="description" type="SFString"/>
+					<xs:attribute name="parameter" type="MFString"/>
+					<xs:attribute name="url" type="MFString"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="Appearance">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/shape.html#Appearance"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DAppearanceNode"/>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="Arc2D">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/geometry2D.html#Arc2D"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DGeometryNode">
+					<xs:attribute name="radius" default="1">
+						<!-- type="SFFloatNonNegative" -->
+						<xs:simpleType>
+							<xs:restriction base="SFFloat">
+								<xs:minInclusive value="0"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:attribute>
+					<xs:attribute name="startAngle" type="SFFloat" default="0"/>
+					<xs:attribute name="endAngle" type="SFFloat" default="1.5708"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="ArcClose2D">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/geometry2D.html#ArcClose2D"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DGeometryNode">
+					<xs:attribute name="radius" default="1">
+						<!-- type="SFFloatNonNegative" -->
+						<xs:simpleType>
+							<xs:restriction base="SFFloat">
+								<xs:minInclusive value="0"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:attribute>
+					<xs:attribute name="startAngle" type="SFFloat" default="0"/>
+					<xs:attribute name="endAngle" type="SFFloat" default="1.5708"/>
+					<xs:attribute name="closureType" type="ArcClose2dTypeValues" default="PIE"/>
+					<xs:attribute name="solid" type="SFBool" default="true"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="AudioClip">
+		<xs:annotation>
+			<xs:appinfo>
+				<xs:attribute name="otherInterfaces" type="xs:string" fixed="X3DUrlObject"/>
+			</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/sound.html#AudioClip"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DSoundSourceNode">
+					<xs:attribute name="description" type="SFString"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="Background">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/enveffects.html#Background"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DBackgroundNode">
+					<xs:attribute name="backUrl" type="MFString"/>
+					<xs:attribute name="bottomUrl" type="MFString"/>
+					<xs:attribute name="frontUrl" type="MFString"/>
+					<xs:attribute name="leftUrl" type="MFString"/>
+					<xs:attribute name="rightUrl" type="MFString"/>
+					<xs:attribute name="topUrl" type="MFString"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="Billboard">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/navigation.html#Billboard"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DGroupingNode">
+					<xs:attribute name="axisOfRotation" type="SFVec3f" default="0 1 0"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="BooleanFilter">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/utils.html#BooleanFilter"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DChildNode">
+					<xs:attribute name="set_boolean" type="SFBool"/>
+					<xs:attribute name="inputTrue" type="SFBool"/>
+					<xs:attribute name="inputFalse" type="SFBool"/>
+					<xs:attribute name="inputNegate" type="SFBool"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="BooleanSequencer">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/utils.html#BooleanSequencer"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DSequencerNode">
+					<xs:attribute name="keyValue" type="MFBool"/>
+					<xs:attribute name="value_changed" type="SFBool"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="BooleanToggle">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/utils.html#BooleanToggle"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DChildNode">
+					<xs:attribute name="set_boolean" type="SFBool"/>
+					<xs:attribute name="toggle" type="SFBool" default="false"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="BooleanTrigger">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/utils.html#BooleanTrigger"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DChildNode">
+					<xs:attribute name="set_triggerTime" type="SFTime"/>
+					<xs:attribute name="triggerTrue" type="SFBool"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="Box">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/geometry3D.html#Box"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DGeometryNode">
+					<xs:attribute name="size" type="SFVec3f" default="2 2 2"/>
+					<xs:attribute name="solid" type="SFBool" default="true"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="Circle2D">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/geometry2D.html#Circle2D"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DGeometryNode">
+					<xs:attribute name="radius" default="1">
+						<!-- type="SFFloatPositive" -->
+						<xs:simpleType>
+							<xs:restriction base="SFFloat">
+								<xs:minExclusive value="0"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:attribute>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="Collision">
+		<xs:annotation>
+			<xs:appinfo>
+				<xs:attribute name="otherInterfaces" type="xs:string" fixed="X3DSensorNode"/>
+			</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/navigation.html#Collision"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DGroupingNode">
+					<xs:attribute name="collideTime" type="SFTime"/>
+					<xs:attribute name="enabled" type="SFBool" default="true"/>
+					<xs:attribute name="isActive" type="SFBool"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="Color">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/rendering.html#Color"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DColorNode">
+					<xs:attribute name="color" type="MFColor"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="ColorRGBA">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/rendering.html#ColorRGBA"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DColorNode">
+					<xs:attribute name="color" type="MFColorRGBA"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="ColorInterpolator">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/interp.html#ColorInterpolator"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DInterpolatorNode">
+					<xs:attribute name="keyValue" type="MFColor"/>
+					<xs:attribute name="value_changed" type="SFColor"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="Cone">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/geometry3D.html#Cone"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DGeometryNode">
+					<xs:attribute name="bottomRadius" default="1">
+						<!-- type="SFFloatPositive" -->
+						<xs:simpleType>
+							<xs:restriction base="SFFloat">
+								<xs:minExclusive value="0"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:attribute>
+					<xs:attribute name="height" default="2">
+						<!-- type="SFFloatPositive" -->
+						<xs:simpleType>
+							<xs:restriction base="SFFloat">
+								<xs:minExclusive value="0"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:attribute>
+					<xs:attribute name="side" type="SFBool" default="true"/>
+					<xs:attribute name="bottom" type="SFBool" default="true"/>
+					<xs:attribute name="solid" type="SFBool" default="true"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="Coordinate">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/rendering.html#Coordinate"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DCoordinateNode">
+					<xs:attribute name="point" type="MFVec3f"/>
+					<xs:attribute name="containerField" type="xs:NMTOKEN" default="coord"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="CoordinateDouble">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/nurbs.html#CoordinateDouble"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DCoordinateNode">
+					<xs:attribute name="point" type="MFVec3d"/>
+					<xs:attribute name="containerField" type="xs:NMTOKEN" default="coord"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="CoordinateInterpolator">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/nurbs.html#CoordinateDouble"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DInterpolatorNode">
+					<xs:attribute name="keyValue" type="MFVec3f"/>
+					<xs:attribute name="value_changed" type="MFVec3f"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="CoordinateInterpolator2D">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/interp.html#CoordinateInterpolator2D"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DInterpolatorNode">
+					<xs:attribute name="keyValue" type="MFVec2f"/>
+					<xs:attribute name="value_changed" type="MFVec2f"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="Cylinder">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/geometry3D.html#Cylinder"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DGeometryNode">
+					<xs:attribute name="bottom" type="SFBool" default="true"/>
+					<xs:attribute name="height" default="2">
+						<!-- type="SFFloatPositive" -->
+						<xs:simpleType>
+							<xs:restriction base="SFFloat">
+								<xs:minExclusive value="0"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:attribute>
+					<xs:attribute name="radius" default="1">
+						<!-- type="SFFloatPositive" -->
+						<xs:simpleType>
+							<xs:restriction base="SFFloat">
+								<xs:minExclusive value="0"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:attribute>
+					<xs:attribute name="side" type="SFBool" default="true"/>
+					<xs:attribute name="top" type="SFBool" default="true"/>
+					<xs:attribute name="solid" type="SFBool" default="true"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="CylinderSensor">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/pointingsensor.html#CylinderSensor"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DDragSensorNode">
+					<xs:attribute name="diskAngle" type="SFFloat" default="0.26179167"/>
+					<xs:attribute name="maxAngle" type="SFFloat" default="-1"/>
+					<xs:attribute name="minAngle" type="SFFloat" default="0"/>
+					<xs:attribute name="offset" type="SFFloat" default="0"/>
+					<xs:attribute name="rotation_changed" type="SFRotation"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="DirectionalLight">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/lighting.html#DirectionalLight"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DLightNode">
+					<xs:attribute name="direction" type="SFVec3f" default="0 0 -1"/>
+					<xs:attribute name="global" type="SFBool" default="false"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="Disk2D">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/geometry2D.html#Disk2D"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DGeometryNode">
+					<xs:attribute name="innerRadius" default="0">
+						<!-- type="SFFloatNonNegative" -->
+						<xs:simpleType>
+							<xs:restriction base="SFFloat">
+								<xs:minInclusive value="0"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:attribute>
+					<xs:attribute name="outerRadius" default="1">
+						<!-- type="SFFloatPositive" -->
+						<xs:simpleType>
+							<xs:restriction base="SFFloat">
+								<xs:minExclusive value="0"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:attribute>
+					<xs:attribute name="solid" type="SFBool" default="true"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="ElevationGrid">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/geometry3D.html#ElevationGrid"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DGeometryNode">
+					<xs:choice minOccurs="0" maxOccurs="unbounded">
+						<xs:element ref="FloatVertexAttribute">
+							<xs:annotation>
+								<xs:documentation>attrib</xs:documentation>
+							</xs:annotation>
+						</xs:element>
+						<xs:element ref="Matrix3VertexAttribute">
+							<xs:annotation>
+								<xs:documentation>attrib</xs:documentation>
+							</xs:annotation>
+						</xs:element>
+						<xs:element ref="Matrix4VertexAttribute">
+							<xs:annotation>
+								<xs:documentation>attrib</xs:documentation>
+							</xs:annotation>
+						</xs:element>
+						<xs:element ref="Color">
+							<xs:annotation>
+								<xs:documentation>color</xs:documentation>
+							</xs:annotation>
+						</xs:element>
+						<xs:element ref="ColorRGBA">
+							<xs:annotation>
+								<xs:documentation>color</xs:documentation>
+							</xs:annotation>
+						</xs:element>
+						<xs:element ref="FogCoordinate">
+							<xs:annotation>
+								<xs:documentation>fogcoord</xs:documentation>
+							</xs:annotation>
+						</xs:element>
+						<xs:element ref="Normal">
+							<xs:annotation>
+								<xs:documentation>normal</xs:documentation>
+							</xs:annotation>
+						</xs:element>
+						<xs:element ref="TextureCoordinate">
+							<xs:annotation>
+								<xs:documentation>texcoord</xs:documentation>
+							</xs:annotation>
+						</xs:element>
+						<xs:element ref="TextureCoordinate3D">
+							<xs:annotation>
+								<xs:documentation>texcoord</xs:documentation>
+							</xs:annotation>
+						</xs:element>
+						<xs:element ref="TextureCoordinate4D">
+							<xs:annotation>
+								<xs:documentation>texcoord</xs:documentation>
+							</xs:annotation>
+						</xs:element>
+						<xs:element ref="TextureCoordinateGenerator">
+							<xs:annotation>
+								<xs:documentation>texcoord</xs:documentation>
+							</xs:annotation>
+						</xs:element>
+						<xs:element ref="MultiTextureCoordinate">
+							<xs:annotation>
+								<xs:documentation>texcoord</xs:documentation>
+							</xs:annotation>
+						</xs:element>
+						<xs:element ref="NurbsTextureCoordinate">
+							<xs:annotation>
+								<xs:documentation>texcoord</xs:documentation>
+							</xs:annotation>
+						</xs:element>
+						<xs:element ref="ProtoInstance"/>
+					</xs:choice>
+					<xs:attribute name="height" type="MFFloat"/>
+					<xs:attribute name="set_height" type="MFFloat"/>
+					<xs:attribute name="ccw" type="SFBool" default="true"/>
+					<xs:attribute name="colorPerVertex" type="SFBool" default="true"/>
+					<xs:attribute name="creaseAngle" default="0">
+						<!-- type="SFFloatNonNegative" -->
+						<xs:simpleType>
+							<xs:restriction base="SFFloat">
+								<xs:minInclusive value="0"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:attribute>
+					<xs:attribute name="normalPerVertex" type="SFBool" default="true"/>
+					<xs:attribute name="solid" type="SFBool" default="true"/>
+					<xs:attribute name="xDimension" type="SFInt32" default="0"/>
+					<xs:attribute name="xSpacing" default="1.0">
+						<!-- type="SFFloatPositive" -->
+						<xs:simpleType>
+							<xs:restriction base="SFFloat">
+								<xs:minExclusive value="0"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:attribute>
+					<xs:attribute name="zDimension" type="SFInt32" default="0"/>
+					<xs:attribute name="zSpacing" default="1.0">
+						<!-- type="SFFloatPositive" -->
+						<xs:simpleType>
+							<xs:restriction base="SFFloat">
+								<xs:minExclusive value="0"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:attribute>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="Extrusion">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/geometry3D.html#Extrusion"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DGeometryNode">
+					<xs:attribute name="beginCap" type="SFBool" default="true"/>
+					<xs:attribute name="ccw" type="SFBool" default="true"/>
+					<xs:attribute name="convex" type="SFBool" default="true"/>
+					<xs:attribute name="creaseAngle" default="0.0">
+						<!-- type="SFFloatNonNegative" -->
+						<xs:simpleType>
+							<xs:restriction base="SFFloat">
+								<xs:minInclusive value="0"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:attribute>
+					<xs:attribute name="crossSection" type="MFVec2f" default="1 1 1 -1 -1 -1 -1 1 1 1"/>
+					<xs:attribute name="set_crossSection" type="MFVec2f"/>
+					<xs:attribute name="endCap" type="SFBool" default="true"/>
+					<xs:attribute name="orientation" type="MFRotation" default="0 0 1 0"/>
+					<xs:attribute name="set_orientation" type="MFRotation"/>
+					<xs:attribute name="scale" type="MFVec2f" default="1 1"/>
+					<xs:attribute name="set_scale" type="MFVec2f"/>
+					<xs:attribute name="solid" type="SFBool" default="true"/>
+					<xs:attribute name="spine" type="MFVec3f" default="0 0 0 0 1 0"/>
+					<xs:attribute name="set_spine" type="MFVec3f"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="FillProperties">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/shape.html#FillProperties"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DAppearanceChildNode">
+					<xs:attribute name="filled" type="SFBool" default="true"/>
+					<xs:attribute name="hatched" type="SFBool" default="true"/>
+					<xs:attribute name="hatchStyle" type="SFInt32" default="1"/>
+					<xs:attribute name="hatchColor" type="SFColor" default="1 1 1"/>
+					<xs:attribute name="containerField" type="xs:NMTOKEN" default="fillProperties"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="Fog">
+		<xs:annotation>
+			<xs:appinfo>
+				<xs:attribute name="otherInterfaces" type="xs:string" fixed="X3DFogObject"/>
+			</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/enveffects.html#Fog"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DBindableNode">
+					<xs:attribute name="color" type="SFColor" default="1 1 1"/>
+					<xs:attribute name="fogType" type="fogTypeValues" default="LINEAR"/>
+					<xs:attribute name="visibilityRange" type="SFFloat" default="0"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="FogCoordinate">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/rendering.html#Coordinate"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DCoordinateNode">
+					<xs:attribute name="depth" type="MFVec3f"/>
+					<xs:attribute name="containerField" type="xs:NMTOKEN" default="fogCoord"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="FontStyle">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/text.html#FontStyle"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DFontStyleNode">
+					<xs:attribute name="family" type="MFString" default='"SERIF"'/>
+					<xs:attribute name="horizontal" type="SFBool" default="true"/>
+					<xs:attribute name="justify" type="MFString" default='"BEGIN"'/>
+					<xs:attribute name="language" type="SFString"/>
+					<xs:attribute name="leftToRight" type="SFBool" default="true"/>
+					<xs:attribute name="size" type="SFFloat" default="1.0"/>
+					<xs:attribute name="spacing" type="SFFloat" default="1.0"/>
+					<xs:attribute name="style" type="fontStyleValues" default="PLAIN"/>
+					<xs:attribute name="topToBottom" type="SFBool" default="true"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="Group">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/group.html#Group"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DGroupingNode"/>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="ImageTexture">
+		<xs:annotation>
+			<xs:appinfo>
+				<xs:attribute name="otherInterfaces" type="xs:string" fixed="X3DUrlObject"/>
+			</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/texturing.html#ImageTexture"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DTexture2DNode">
+					<xs:attribute name="url" type="MFString"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="IndexedFaceSet">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/geometry3D.html#IndexedFaceSet"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DComposedGeometryNode">
+					<xs:attribute name="convex" type="SFBool" default="true"/>
+					<xs:attribute name="creaseAngle" default="0">
+						<!-- type="SFFloatNonNegative" -->
+						<xs:simpleType>
+							<xs:restriction base="SFFloat">
+								<xs:minInclusive value="0"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:attribute>
+					<xs:attribute name="colorIndex" type="MFInt32"/>
+					<xs:attribute name="coordIndex" type="MFInt32"/>
+					<xs:attribute name="normalIndex" type="MFInt32"/>
+					<xs:attribute name="texCoordIndex" type="MFInt32"/>
+					<xs:attribute name="set_colorIndex" type="MFInt32"/>
+					<xs:attribute name="set_coordIndex" type="MFInt32"/>
+					<xs:attribute name="set_normalIndex" type="MFInt32"/>
+					<xs:attribute name="set_texCoordIndex" type="MFInt32"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="IndexedLineSet">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/rendering.html#IndexedLineSet"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DGeometryNode">
+					<xs:group ref="ColorCoordinateContentModel" minOccurs="0"/>
+					<xs:attribute name="colorPerVertex" type="SFBool" default="true"/>
+					<xs:attribute name="colorIndex" type="MFInt32"/>
+					<xs:attribute name="coordIndex" type="MFInt32"/>
+					<xs:attribute name="set_colorIndex" type="MFInt32"/>
+					<xs:attribute name="set_coordIndex" type="MFInt32"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="IndexedTriangleFanSet">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/rendering.html#IndexedTriangleFanSet"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DComposedGeometryNode">
+					<xs:attribute name="index" type="MFInt32"/>
+					<xs:attribute name="set_index" type="MFInt32"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="IndexedTriangleSet">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/rendering.html#IndexedTriangleSet"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DComposedGeometryNode">
+					<xs:attribute name="index" type="MFInt32"/>
+					<xs:attribute name="set_index" type="MFInt32"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="IndexedTriangleStripSet">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/rendering.html#IndexedTriangleStripSet"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DComposedGeometryNode">
+					<xs:attribute name="index" type="MFInt32"/>
+					<xs:attribute name="set_index" type="MFInt32"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="Inline">
+		<xs:annotation>
+			<xs:appinfo>
+				<xs:attribute name="otherInterfaces" type="xs:string" fixed="X3DUrlObject"/>
+			</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/networking.html#Inline"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DChildNode">
+					<xs:attribute name="load" type="SFBool" default="true"/>
+					<xs:attribute name="bboxCenter" type="SFVec3f" default="0 0 0"/>
+					<xs:attribute name="bboxSize" type="BoundingBoxSize" default="-1 -1 -1"/>
+					<xs:attribute name="url" type="MFString"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="IntegerSequencer">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/utils.html#IntegerSequencer"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DSequencerNode">
+					<xs:attribute name="keyValue" type="MFInt32"/>
+					<xs:attribute name="value_changed" type="SFInt32"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="IntegerTrigger">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/utils.html#IntegerTrigger"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DChildNode">
+					<xs:attribute name="set_boolean" type="SFBool"/>
+					<xs:attribute name="integerKey" type="SFInt32" default="-1"/>
+					<xs:attribute name="triggerValue" type="SFInt32"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="KeySensor">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/keyboard.html#KeySensor"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DKeyDeviceSensorNode">
+					<xs:attribute name="keyPress" type="SFString"/>
+					<xs:attribute name="keyRelease" type="SFString"/>
+					<xs:attribute name="actionKeyPress" type="SFInt32"/>
+					<xs:attribute name="actionKeyRelease" type="SFInt32"/>
+					<xs:attribute name="altKey" type="SFBool"/>
+					<xs:attribute name="controlKey" type="SFBool"/>
+					<xs:attribute name="shiftKey" type="SFBool"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="LineProperties">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/shape.html#LineProperties"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DAppearanceChildNode">
+					<xs:attribute name="applied" type="SFBool" default="true"/>
+					<xs:attribute name="linetype" type="SFInt32" default="1"/>
+					<xs:attribute name="linewidthScaleFactor" type="SFFloat" default="0"/>
+					<xs:attribute name="containerField" type="xs:NMTOKEN" default="lineProperties"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="LineSet">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/rendering.html#LineSet"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DGeometryNode">
+					<xs:group ref="ColorCoordinateContentModel" minOccurs="0"/>
+					<xs:attribute name="vertexCount" type="MFInt32"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="LoadSensor">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/networking.html#LoadSensor"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DNetworkSensorNode">
+					<xs:attribute name="timeOut" type="SFTime" default="0"/>
+					<xs:attribute name="loadTime" type="SFTime"/>
+					<xs:attribute name="isLoaded" type="SFBool"/>
+					<xs:attribute name="progress" type="SFFloat"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="LocalFog">
+		<xs:annotation>
+			<xs:appinfo>
+				<xs:attribute name="otherInterfaces" type="xs:string" fixed="X3DFogObject"/>
+			</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-FPDAM-X3DAbstractSpecification/Part01/components/enveffects.html#LocalFog"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DBindableNode">
+					<xs:attribute name="enabled" type="SFBool" default="true"/>
+					<xs:attribute name="color" type="SFColor" default="1 1 1"/>
+					<xs:attribute name="fogType" type="fogTypeValues" default="LINEAR"/>
+					<xs:attribute name="visibilityRange" type="SFFloat" default="0"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="LOD">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/navigation.html#LOD"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DGroupingNode">
+					<xs:attribute name="forceTransitions" type="SFBool" default="false"/>
+					<xs:attribute name="center" type="SFVec3f" default="0 0 0"/>
+					<xs:attribute name="range" type="MFFloat"/>
+					<xs:attribute name="level_changed" type="SFInt32"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="Material">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/shape.html#Material"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DMaterialNode">
+					<xs:attribute name="ambientIntensity" default="0.2">
+						<xs:simpleType>
+							<xs:restriction base="SFFloat">
+								<xs:minInclusive value="0"/>
+								<xs:maxInclusive value="1"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:attribute>
+					<xs:attribute name="diffuseColor" type="SFColor" default="0.8 0.8 0.8"/>
+					<xs:attribute name="emissiveColor" type="SFColor" default="0 0 0"/>
+					<xs:attribute name="shininess" default="0.2">
+						<xs:simpleType>
+							<xs:restriction base="SFFloat">
+								<xs:minInclusive value="0"/>
+								<xs:maxInclusive value="1"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:attribute>
+					<xs:attribute name="specularColor" type="SFColor" default="0 0 0"/>
+					<xs:attribute name="transparency" default="0">
+						<xs:simpleType>
+							<xs:restriction base="SFFloat">
+								<xs:minInclusive value="0"/>
+								<xs:maxInclusive value="1"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:attribute>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="MetadataDouble">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/core.html#MetadataDouble"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DMetadataObject">
+					<xs:attribute name="value" type="MFDouble"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="MetadataFloat">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/core.html#MetadataFloat"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DMetadataObject">
+					<xs:attribute name="value" type="MFFloat"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="MetadataInteger">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/core.html#MetadataInteger"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DMetadataObject">
+					<xs:attribute name="value" type="MFInt32"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="MetadataSet">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/core.html#MetadataSet"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DMetadataObject"/>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="MetadataString">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/core.html#MetadataString"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DMetadataObject">
+					<xs:attribute name="value" type="MFString"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="MovieTexture">
+		<xs:annotation>
+			<xs:appinfo>
+				<xs:attribute name="otherInterfaces" type="xs:string" fixed="X3DTexture2DNode"/>
+			</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/texturing.html#MovieTexture"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DSoundSourceNode">
+					<xs:attribute name="description" type="SFString"/>
+					<xs:attribute name="repeatS" type="SFBool" default="true"/>
+					<xs:attribute name="repeatT" type="SFBool" default="true"/>
+					<xs:attribute name="speed" type="SFFloat" default="1.0"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="MultiTexture">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/texturing.html#MultiTexture"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DTextureNode">
+					<xs:choice minOccurs="0" maxOccurs="unbounded">
+						<xs:element ref="ImageTexture"/>
+						<xs:element ref="MovieTexture"/>
+						<xs:element ref="PixelTexture"/>
+						<xs:element ref="ProtoInstance"/>
+					</xs:choice>
+					<xs:attribute name="alpha" type="SFFloat" default="1"/>
+					<xs:attribute name="color" type="SFColor" default="1 1 1"/>
+					<xs:attribute name="function" type="MFString"/>
+					<xs:attribute name="mode" type="MFString"/>
+					<xs:attribute name="source" type="MFString"/>
+					<xs:attribute name="transparent" type="SFBool" default="false"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="MultiTextureCoordinate">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/texturing.html#MultiTextureCoordinate"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DTextureCoordinateNode"/>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="MultiTextureTransform">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/texturing.html#MultiTextureTransform"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DTextureTransformNode">
+					<xs:choice minOccurs="0" maxOccurs="unbounded">
+						<xs:element ref="TextureTransform"/>
+						<xs:element ref="ProtoInstance"/>
+					</xs:choice>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="NavigationInfo">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/navigation.html#NavigationInfo"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DBindableNode">
+					<xs:attribute name="avatarSize" type="MFFloat" default="0.25 1.6 0.75"/>
+					<xs:attribute name="headlight" type="SFBool" default="true"/>
+					<xs:attribute name="speed" type="SFFloat" default="1"/>
+					<xs:attribute name="type" type="MFString" default='"EXAMINE" "ANY"'/>
+					<xs:attribute name="transitionComplete" type="SFBool"/>
+					<xs:attribute name="transitionType" type="MFString" default='"ANIMATE"'/>
+					<xs:attribute name="transitionTime" type="MFFloat" default="1.0"/>
+					<xs:attribute name="visibilityLimit" type="SFFloat" default="0"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="Normal">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/rendering.html#Normal"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DNormalNode">
+					<xs:attribute name="vector" type="MFVec3f"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="NormalInterpolator">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/interp.html#NormalInterpolator"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DInterpolatorNode">
+					<xs:attribute name="keyValue" type="MFVec3f"/>
+					<xs:attribute name="value_changed" type="MFVec3f"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="OrientationInterpolator">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/interp.html#OrientationInterpolator"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DInterpolatorNode">
+					<xs:attribute name="keyValue" type="MFRotation"/>
+					<xs:attribute name="value_changed" type="SFRotation"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="PixelTexture">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/texturing.html#PixelTexture"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DTexture2DNode">
+					<xs:attribute name="image" type="SFImage" default="0 0 0"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="PlaneSensor">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/pointingsensor.html#PlaneSensor"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DDragSensorNode">
+					<xs:attribute name="translation_changed" type="SFVec3f"/>
+					<xs:attribute name="maxPosition" type="SFVec2f" default="-1 -1"/>
+					<xs:attribute name="minPosition" type="SFVec2f" default="0 0"/>
+					<xs:attribute name="offset" type="SFVec3f" default="0 0 0"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="PointLight">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/lighting.html#PointLight"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DLightNode">
+					<xs:attribute name="attenuation" type="SFVec3f" default="1 0 0"/>
+					<xs:attribute name="location" type="SFVec3f" default="0 0 0"/>
+					<xs:attribute name="radius" default="100">
+						<xs:simpleType>
+							<xs:restriction base="SFFloat">
+								<xs:minInclusive value="0"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:attribute>
+					<xs:attribute name="global" type="SFBool" default="true"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="PointSet">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/rendering.html#PointSet"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DGeometryNode">
+					<xs:group ref="ColorCoordinateContentModel" minOccurs="0"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="Polyline2D">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/geometry2D.html#Polyline2D"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DGeometryNode">
+					<xs:attribute name="lineSegments" type="MFVec2f"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="Polypoint2D">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/geometry2D.html#Polypoint2D"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DGeometryNode">
+					<xs:attribute name="point" type="MFVec2f"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="PositionInterpolator">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/interp.html#PositionInterpolator"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DInterpolatorNode">
+					<xs:attribute name="keyValue" type="MFVec3f"/>
+					<xs:attribute name="value_changed" type="SFVec3f"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="PositionInterpolator2D">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/interp.html#PositionInterpolator2D"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DInterpolatorNode">
+					<xs:attribute name="keyValue" type="MFVec2f"/>
+					<xs:attribute name="value_changed" type="SFVec2f"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="ProximitySensor">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/envsensor.html#ProximitySensor"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DEnvironmentalSensorNode">
+					<xs:attribute name="position_changed" type="SFVec3f"/>
+					<xs:attribute name="centerOfRotation_changed" type="SFVec3f"/>
+					<xs:attribute name="orientation_changed" type="SFRotation"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="Rectangle2D">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/geometry2D.html#Rectangle2D"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DGeometryNode">
+					<xs:attribute name="isFilled" type="SFBool" default="true"/>
+					<xs:attribute name="size" type="SFVec2f" default="2 2"/>
+					<xs:attribute name="solid" type="SFBool" default="true"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="ScalarInterpolator">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/interp.html#ScalarInterpolator"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DInterpolatorNode">
+					<xs:attribute name="keyValue" type="MFFloat"/>
+					<xs:attribute name="value_changed" type="SFFloat"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="Script">
+		<xs:annotation>
+			<xs:appinfo>
+				<xs:attribute name="otherInterfaces" type="xs:string" fixed="X3DUrlObject"/>
+			</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/scripting.html#Script"/>
+		</xs:annotation>
+		<xs:complexType mixed="true">
+			<xs:complexContent mixed="true">
+				<xs:extension base="X3DScriptNode">
+					<xs:attribute name="directOutput" type="SFBool" default="false"/>
+					<xs:attribute name="mustEvaluate" type="SFBool" default="false"/>
+					<xs:attribute name="url" type="MFString"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="Shape">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/shape.html#Shape"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DShapeNode"/>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="Sound">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/sound.html#Sound"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DSoundNode">
+					<xs:attribute name="direction" type="SFVec3f" default="0 0 1"/>
+					<xs:attribute name="intensity" type="SFFloat" default="1"/>
+					<xs:attribute name="location" type="SFVec3f" default="0 0 0"/>
+					<xs:attribute name="maxBack" type="SFFloat" default="10"/>
+					<xs:attribute name="maxFront" type="SFFloat" default="10"/>
+					<xs:attribute name="minBack" type="SFFloat" default="1"/>
+					<xs:attribute name="minFront" type="SFFloat" default="1"/>
+					<xs:attribute name="priority" type="SFFloat" default="0"/>
+					<xs:attribute name="spatialize" type="SFBool" default="true"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="Sphere">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/geometry3D.html#Sphere"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DGeometryNode">
+					<xs:attribute name="radius" default="1">
+						<!-- type="SFFloatPositive" -->
+						<xs:simpleType>
+							<xs:restriction base="SFFloat">
+								<xs:minExclusive value="0"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:attribute>
+					<xs:attribute name="solid" type="SFBool" default="true"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="SphereSensor">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/pointingsensor.html#SphereSensor"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DDragSensorNode">
+					<xs:attribute name="offset" type="SFRotation" default="0 1 0 0"/>
+					<xs:attribute name="rotation_changed" type="SFRotation"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="SpotLight">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/lighting.html#SpotLight"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DLightNode">
+					<xs:attribute name="attenuation" type="SFVec3f" default="1 0 0"/>
+					<xs:attribute name="beamWidth" default="1.5708">
+						<xs:simpleType>
+							<xs:restriction base="SFFloat">
+								<xs:minExclusive value="0"/>
+								<xs:maxInclusive value="1.5708"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:attribute>
+					<xs:attribute name="cutOffAngle" type="SFFloat" default="0.785398"/>
+					<xs:attribute name="direction" type="SFVec3f" default="0 0 -1"/>
+					<xs:attribute name="location" type="SFVec3f" default="0 0 0"/>
+					<xs:attribute name="radius" default="100">
+						<xs:simpleType>
+							<xs:restriction base="SFFloat">
+								<xs:minInclusive value="0"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:attribute>
+					<xs:attribute name="global" type="SFBool" default="true"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="StaticGroup">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/group.html#StaticGroup"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DGroupingNode"/>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="StringSensor">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/keyboard.html#StringSensor"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DKeyDeviceSensorNode">
+					<xs:attribute name="enteredText" type="SFString"/>
+					<xs:attribute name="finalText" type="SFString"/>
+					<xs:attribute name="deletionAllowed" type="SFBool" default="true"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="Switch">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/group.html#Switch"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DGroupingNode">
+					<xs:attribute name="whichChoice" type="SFInt32" default="-1"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="Text">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/text.html#Text"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DGeometryNode">
+					<xs:sequence minOccurs="0">
+						<xs:group ref="TextChildContentModel"/>
+					</xs:sequence>
+					<xs:attribute name="string" type="MFString"/>
+					<xs:attribute name="length" type="MFFloat"/>
+					<xs:attribute name="maxExtent" default="0.0">
+						<!-- type="SFFloatNonNegative" -->
+						<xs:simpleType>
+							<xs:restriction base="SFFloat">
+								<xs:minInclusive value="0"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:attribute>
+					<xs:attribute name="solid" type="SFBool" default="true"/>
+					<xs:attribute name="lineBounds" type="MFVec2f"/>
+					<xs:attribute name="textBounds" type="SFVec2f"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="TextureBackground">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/enveffects.html#TextureBackground"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DBackgroundNode">
+					<xs:group ref="TextureBackgroundChildContentModel" minOccurs="0" maxOccurs="6"/>
+					<xs:attribute name="transparency" type="MFFloat" default="0"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="TextureCoordinate">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/texturing.html#TextureCoordinate"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DTextureCoordinateNode">
+					<xs:attribute name="point" type="MFVec2f"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="TextureCoordinateGenerator">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/texturing.html#TextureCoordinateGenerator"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DTextureCoordinateNode">
+					<xs:attribute name="mode" type="SFString" default="SPHERE"/>
+					<xs:attribute name="parameter" type="MFFloat"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="TextureTransform">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/texturing.html#TextureTransform"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DTextureTransform2DNode"/>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="TimeSensor">
+		<xs:annotation>
+			<xs:appinfo>
+				<xs:attribute name="otherInterfaces" type="xs:string" fixed="X3DSensorNode"/>
+			</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/time.html#TimeSensor"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DTimeDependentNode">
+					<xs:attribute name="cycleInterval" type="SFTime" default="1.0"/>
+					<xs:attribute name="cycleTime" type="SFTime"/>
+					<xs:attribute name="fraction_changed" type="SFFloat"/>
+					<xs:attribute name="time" type="SFTime"/>
+					<xs:attribute name="enabled" type="SFBool" default="true"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="TimeTrigger">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/utils.html#TimeTrigger"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DChildNode">
+					<xs:attribute name="set_boolean" type="SFBool"/>
+					<xs:attribute name="triggerTime" type="SFTime"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="TouchSensor">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/pointingsensor.html#TouchSensor"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DTouchSensorNode">
+					<xs:attribute name="hitNormal_changed" type="SFVec3f"/>
+					<xs:attribute name="hitPoint_changed" type="SFVec3f"/>
+					<xs:attribute name="hitTexCoord_changed" type="SFVec2f"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="Transform">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/group.html#Transform"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DGroupingNode">
+					<xs:attribute name="center" type="SFVec3f" default="0 0 0"/>
+					<xs:attribute name="rotation" type="SFRotation" default="0 0 1 0"/>
+					<xs:attribute name="scale" type="SFVec3f" default="1 1 1"/>
+					<xs:attribute name="scaleOrientation" type="SFRotation" default="0 0 1 0"/>
+					<xs:attribute name="translation" type="SFVec3f" default="0 0 0"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="TriangleFanSet">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/rendering.html#TriangleFanSet"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DComposedGeometryNode">
+					<xs:attribute name="fanCount" type="MFInt32"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="TriangleSet">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/rendering.html#TriangleSet"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DComposedGeometryNode"/>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="TriangleSet2D">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/geometry2D.html#TriangleSet2D"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DGeometryNode">
+					<xs:attribute name="vertices" type="MFVec2f"/>
+					<xs:attribute name="solid" type="SFBool" default="true"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="TriangleStripSet">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/rendering.html#TriangleStripSet"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DComposedGeometryNode">
+					<xs:attribute name="stripCount" type="MFInt32"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="Viewpoint">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/navigation.html#Viewpoint"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DBindableNode">
+					<xs:attribute name="fieldOfView" type="SFFloat" default="0.785398"/>
+					<xs:attribute name="jump" type="SFBool" default="true"/>
+					<xs:attribute name="orientation" type="SFRotation" default="0 0 1 0"/>
+					<xs:attribute name="position" type="SFVec3f" default="0 0 10"/>
+					<xs:attribute name="description" type="SFString"/>
+					<xs:attribute name="centerOfRotation" type="SFVec3f" default="0 0 0"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="VisibilitySensor">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/envsensor.html#VisibilitySensor"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DEnvironmentalSensorNode"/>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="WorldInfo">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/group.html#WorldInfo"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DInfoNode">
+					<xs:attribute name="info" type="MFString"/>
+					<xs:attribute name="title" type="SFString"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<!--======================================================================-->
+	<!--Scene graph structural nodes now available as elements and via SAI: X3D, header, component, meta, Scene, ROUTE, USE, field, fieldValue, ProtoDeclare, ExternProtoDeclare, ProtoInstance-->
+	<!--======================================================================-->
+	<xs:element name="component">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/concepts.html#Components"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="SceneGraphStructureNodeType">
+					<xs:attribute name="name" type="componentNames" use="required"/>
+					<xs:attribute name="level" type="SFInt32" use="required"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="EXPORT">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/concepts.html#EXPORTSemantics"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="SceneGraphStructureNodeType">
+					<xs:attribute name="localDEF" type="xs:IDREF" use="required"/>
+					<xs:attribute name="AS" type="xs:NMTOKEN"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="IMPORT">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/concepts.html#IMPORTSemantics"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="SceneGraphStructureNodeType">
+					<xs:attribute name="inlineDEF" type="xs:IDREF" use="required"/>
+					<xs:attribute name="importedDEF" type="xs:NMTOKEN" use="required"/>
+					<xs:attribute name="AS" type="xs:ID"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="IS">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/concepts.html#PROTOdefinitionsemantics"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="SceneGraphStructureNodeType">
+					<xs:choice maxOccurs="unbounded">
+						<xs:element ref="connect"/>
+					</xs:choice>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="connect">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/specifications/ISO-IEC-19776/Part01/concepts.html#IS_ConnectStatementSyntax"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="SceneGraphStructureNodeType">
+					<xs:attribute name="nodeField" type="xs:NMTOKEN" use="required"/>
+					<xs:attribute name="protoField" type="xs:NMTOKEN" use="required"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="field">
+		<xs:annotation>
+			<xs:appinfo>field can contain either attribute-value or node content.  field is used by ExternProtoDeclare, ProtoDeclare and Script nodes.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/specifications/ISO-IEC-19776/Part01/concepts.html#NodeAndFieldStatementSyntax"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="SceneGraphStructureNodeType">
+					<xs:choice minOccurs="0" maxOccurs="unbounded">
+						<xs:group ref="SceneGraphFragmentContentModel"/>
+					</xs:choice>
+					<xs:attribute name="name" type="xs:NMTOKEN" use="required"/>
+					<xs:attribute name="accessType" type="accessTypeNames" use="required"/>
+					<xs:attribute name="type" type="fieldTypeName" use="required"/>
+					<xs:attribute name="value" type="SFString"/>
+					<xs:attribute name="appinfo" type="SFString"/>
+					<xs:attribute name="documentation" type="SFString"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="fieldValue">
+		<xs:annotation>
+			<xs:appinfo>fieldValue can contain either attribute-value or node content.  fieldValue is used by ProtoInstance nodes, reinitializing default values specified in ProtoDeclare field tags.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/specifications/ISO-IEC-19776/Part01/concepts.html#ProtoInstanceAndFieldValueStatement"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="SceneGraphStructureNodeType">
+					<xs:choice minOccurs="0" maxOccurs="unbounded">
+						<xs:group ref="SceneGraphFragmentContentModel"/>
+					</xs:choice>
+					<xs:attribute name="name" type="xs:NMTOKEN" use="required"/>
+					<xs:attribute name="value" type="SFString"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="head">
+		<xs:complexType>
+			<xs:complexContent>
+				<xs:extension base="SceneGraphStructureNodeType">
+					<xs:sequence>
+						<xs:element ref="component" minOccurs="0" maxOccurs="unbounded"/>
+						<xs:element ref="meta" minOccurs="0" maxOccurs="unbounded"/>
+					</xs:sequence>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="meta">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="SceneGraphStructureNodeType">
+					<xs:attribute name="name" type="SFString" use="required"/>
+					<xs:attribute name="content" type="SFString" use="required"/>
+					<xs:attribute name="http-equiv" type="SFString"/>
+					<xs:attribute name="lang" type="SFString"/>
+					<xs:attribute name="dir" type="metaDirectionValues"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="ExternProtoDeclare">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/concepts.html#Externalprototypesemantics"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DPrototype">
+					<xs:sequence minOccurs="0" maxOccurs="unbounded">
+						<xs:element ref="field"/>
+					</xs:sequence>
+					<xs:attribute name="url" type="MFString" use="required"/>
+					<xs:attribute name="appinfo" type="SFString"/>
+					<xs:attribute name="documentation" type="SFString"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="ProtoDeclare">
+		<xs:annotation>
+			<xs:appinfo>ProtoDeclare defines new Prototype nodes.  Nested ProtoDeclares, ProtoInstances are allowed by specification.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/specifications/ISO-IEC-19776/Part01/concepts.html#PrototypeAndFieldDeclarationSyntax"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DPrototype">
+					<xs:sequence>
+						<xs:element ref="ProtoInterface" minOccurs="0"/>
+						<xs:element ref="ProtoBody"/>
+					</xs:sequence>
+					<xs:attribute name="appinfo" type="SFString"/>
+					<xs:attribute name="documentation" type="SFString"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="ProtoInterface">
+		<xs:annotation>
+			<xs:appinfo>ProtoInterface defines fields for new Prototype nodes.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/specifications/ISO-IEC-19776/Part01/concepts.html#PrototypeAndFieldDeclarationSyntax"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="SceneGraphStructureNodeType">
+					<xs:sequence>
+						<xs:element ref="field" minOccurs="0" maxOccurs="unbounded"/>
+					</xs:sequence>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="ProtoBody">
+		<xs:annotation>
+			<xs:appinfo>ProtoBody contains the definition nodes for new Prototype nodes.</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/specifications/ISO-IEC-19776/Part01/concepts.html#PrototypeAndFieldDeclarationSyntax"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="SceneGraphStructureNodeType">
+					<xs:sequence>
+						<xs:group ref="SceneGraphFragmentWithPrototypeDeclarationsContentModel" maxOccurs="unbounded"/>
+						<!-- nested ProtoDeclares, ProtoInstances are allowed by specification. -->
+					</xs:sequence>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="ProtoInstance">
+		<xs:annotation>
+			<xs:appinfo>Nested ProtoDeclares, ProtoInstances are allowed by specification. ProtoInstance contained content normally captured via fieldValue initializations.
+					<xs:attribute name="otherInterfaces" type="xs:string" fixed="X3DNode"/>
+			</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/specifications/ISO-IEC-19776/Part01/concepts.html#ProtoInstanceAndFieldValueStatement"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DPrototype">
+					<xs:sequence>
+						<xs:element ref="fieldValue" minOccurs="0" maxOccurs="unbounded"/>
+						<xs:element ref="IS" minOccurs="0" maxOccurs="unbounded"/>
+						<!-- direct children disallowed, let fieldValue name="children" handle them -->
+					</xs:sequence>
+					<xs:attributeGroup ref="DEF_USE"/>
+					<xs:attributeGroup ref="globalAttributes"/>
+					<xs:attribute name="containerField" type="xs:NMTOKEN" default="children"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="ROUTE">
+		<xs:annotation>
+			<xs:appinfo>ROUTEs connect event-producing nodes/fields to event-consuming nodes/fields.
+					<xs:attribute name="otherInterfaces" type="xs:string" fixed="X3DChildNode"/>
+			</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/concepts.html#ModifyingObjectsRoutes"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="SceneGraphStructureNodeType">
+					<xs:attribute name="fromNode" type="xs:IDREF" use="required"/>
+					<xs:attribute name="fromField" type="xs:NMTOKEN" use="required"/>
+					<xs:attribute name="toNode" type="xs:IDREF" use="required"/>
+					<xs:attribute name="toField" type="xs:NMTOKEN" use="required"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="Scene">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/specifications/ISO-IEC-19776/Part01/concepts.html#Header"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="SceneGraphStructureNodeType">
+					<xs:choice minOccurs="0" maxOccurs="unbounded">
+						<xs:group ref="ChildContentModeCore"/>
+						<xs:group ref="GroupingNodeChildContentModel"/>
+					</xs:choice>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="X3D">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/specifications/ISO-IEC-19776/Part01/concepts.html#Header"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="SceneGraphStructureNodeType">
+					<xs:sequence>
+						<xs:element ref="head" minOccurs="0"/>
+						<xs:element ref="Scene"/>
+					</xs:sequence>
+					<xs:attribute name="version" type="x3dVersion" use="required"/>
+					<xs:attribute name="profile" type="profileNames" use="required"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<!--======================================================================-->
+	<!--Node sets for the DIS, GeoSpatial, HumanoidAnimation and Nurbs components are included in the X3D schema so that the Full Profile which combines them is complete in a single file. -->
+	<!--======================================================================-->
+	<!--DIS Nodes-->
+	<xs:element name="EspduTransform">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/dis.html#EspduTransform"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DGroupingNode">
+					<xs:attribute name="enabled" type="SFBool" default="true"/>
+					<xs:attribute name="marking" type="SFString"/>
+					<xs:attribute name="siteID" type="SFInt32" default="0"/>
+					<xs:attribute name="applicationID" type="SFInt32" default="1"/>
+					<xs:attribute name="entityID" type="SFInt32" default="0"/>
+					<xs:attribute name="forceID" type="SFInt32" default="0"/>
+					<xs:attribute name="entityKind" type="SFInt32" default="0"/>
+					<xs:attribute name="entityDomain" type="SFInt32" default="0"/>
+					<xs:attribute name="entityCountry" type="SFInt32" default="0"/>
+					<xs:attribute name="entityCategory" type="SFInt32" default="0"/>
+					<xs:attribute name="entitySubCategory" type="SFInt32" default="0"/>
+					<xs:attribute name="entitySpecific" type="SFInt32" default="0"/>
+					<xs:attribute name="entityExtra" type="SFInt32" default="0"/>
+					<xs:attribute name="readInterval" type="SFTime" default="0.1"/>
+					<xs:attribute name="writeInterval" type="SFTime" default="1.0"/>
+					<xs:attribute name="networkMode" type="networkModeValues" default="standAlone"/>
+					<xs:attribute name="translation" type="SFVec3f" default="0 0 0"/>
+					<xs:attribute name="rotation" type="SFRotation" default="0 0 1 0"/>
+					<xs:attribute name="scale" type="SFVec3f" default="1 1 1"/>
+					<xs:attribute name="scaleOrientation" type="SFRotation" default="0 0 1 0"/>
+					<xs:attribute name="center" type="SFVec3f" default="0 0 0"/>
+					<xs:attribute name="address" type="SFString" default="localhost"/>
+					<xs:attribute name="port" type="SFInt32" default="0"/>
+					<xs:attribute name="multicastRelayHost" type="SFString"/>
+					<xs:attribute name="multicastRelayPort" type="SFInt32" default="0"/>
+					<xs:attribute name="rtpHeaderExpected" type="SFBool" default="false"/>
+					<xs:attribute name="isRtpHeaderHeard" type="SFBool"/>
+					<xs:attribute name="isStandAlone" type="SFBool"/>
+					<xs:attribute name="isNetworkReader" type="SFBool"/>
+					<xs:attribute name="isNetworkWriter" type="SFBool"/>
+					<xs:attribute name="isActive" type="SFBool"/>
+					<xs:attribute name="timestamp" type="SFTime"/>
+					<xs:attribute name="deadReckoning" type="SFInt32" default="0"/>
+					<xs:attribute name="linearVelocity" type="SFVec3f" default="0 0 0"/>
+					<xs:attribute name="linearAcceleration" type="SFVec3f" default="0 0 0"/>
+					<xs:attribute name="isCollided" type="SFBool"/>
+					<xs:attribute name="collideTime" type="SFTime"/>
+					<xs:attribute name="isDetonated" type="SFBool"/>
+					<xs:attribute name="detonateTime" type="SFTime"/>
+					<xs:attribute name="fired1" type="SFBool" default="false"/>
+					<xs:attribute name="fired2" type="SFBool" default="false"/>
+					<xs:attribute name="firedTime" type="SFTime"/>
+					<xs:attribute name="collisionType" type="SFInt32" default="0"/>
+					<xs:attribute name="detonationLocation" type="SFVec3f" default="0 0 0"/>
+					<xs:attribute name="detonationRelativeLocation" type="SFVec3f" default="0 0 0"/>
+					<xs:attribute name="detonationResult" type="SFInt32" default="0"/>
+					<xs:attribute name="eventApplicationID" type="SFInt32" default="1"/>
+					<xs:attribute name="eventEntityID" type="SFInt32" default="0"/>
+					<xs:attribute name="eventNumber" type="SFInt32" default="0"/>
+					<xs:attribute name="eventSiteID" type="SFInt32" default="0"/>
+					<xs:attribute name="munitionStartPoint" type="SFVec3f" default="0 0 0"/>
+					<xs:attribute name="munitionEndPoint" type="SFVec3f" default="0 0 0"/>
+					<xs:attribute name="munitionSiteID" type="SFInt32" default="0"/>
+					<xs:attribute name="munitionApplicationID" type="SFInt32" default="1"/>
+					<xs:attribute name="munitionEntityID" type="SFInt32" default="0"/>
+					<xs:attribute name="fireMissionIndex" type="SFInt32" default="0"/>
+					<xs:attribute name="warhead" type="SFInt32" default="0"/>
+					<xs:attribute name="fuse" type="SFInt32" default="0"/>
+					<xs:attribute name="munitionQuantity" type="SFInt32" default="0"/>
+					<xs:attribute name="firingRate" type="SFInt32" default="0"/>
+					<xs:attribute name="firingRange" type="SFFloat" default="0"/>
+					<xs:attribute name="articulationParameterCount" type="SFInt32" default="0"/>
+					<xs:attribute name="articulationParameterDesignatorArray" type="MFInt32"/>
+					<xs:attribute name="articulationParameterChangeIndicatorArray" type="MFInt32"/>
+					<xs:attribute name="articulationParameterIdPartAttachedToArray" type="MFInt32"/>
+					<xs:attribute name="articulationParameterTypeArray" type="MFInt32"/>
+					<xs:attribute name="articulationParameterArray" type="MFFloat"/>
+					<xs:attribute name="set_articulationParameterValue0" type="SFFloat"/>
+					<xs:attribute name="set_articulationParameterValue1" type="SFFloat"/>
+					<xs:attribute name="set_articulationParameterValue2" type="SFFloat"/>
+					<xs:attribute name="set_articulationParameterValue3" type="SFFloat"/>
+					<xs:attribute name="set_articulationParameterValue4" type="SFFloat"/>
+					<xs:attribute name="set_articulationParameterValue5" type="SFFloat"/>
+					<xs:attribute name="set_articulationParameterValue6" type="SFFloat"/>
+					<xs:attribute name="set_articulationParameterValue7" type="SFFloat"/>
+					<xs:attribute name="articulationParameterValue0_changed" type="SFFloat"/>
+					<xs:attribute name="articulationParameterValue1_changed" type="SFFloat"/>
+					<xs:attribute name="articulationParameterValue2_changed" type="SFFloat"/>
+					<xs:attribute name="articulationParameterValue3_changed" type="SFFloat"/>
+					<xs:attribute name="articulationParameterValue4_changed" type="SFFloat"/>
+					<xs:attribute name="articulationParameterValue5_changed" type="SFFloat"/>
+					<xs:attribute name="articulationParameterValue6_changed" type="SFFloat"/>
+					<xs:attribute name="articulationParameterValue7_changed" type="SFFloat"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="ReceiverPdu">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/dis.html#ReceiverPdu"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DGroupingNode">
+					<xs:attribute name="enabled" type="SFBool" default="true"/>
+					<xs:attribute name="whichGeometry" type="SFInt32" default="1"/>
+					<xs:attribute name="readInterval" type="SFTime" default="0.1"/>
+					<xs:attribute name="writeInterval" type="SFTime" default="1.0"/>
+					<xs:attribute name="networkMode" type="networkModeValues" default="standAlone"/>
+					<xs:attribute name="isStandAlone" type="SFBool"/>
+					<xs:attribute name="isNetworkReader" type="SFBool"/>
+					<xs:attribute name="isNetworkWriter" type="SFBool"/>
+					<xs:attribute name="siteID" type="SFInt32" default="0"/>
+					<xs:attribute name="applicationID" type="SFInt32" default="1"/>
+					<xs:attribute name="entityID" type="SFInt32" default="0"/>
+					<xs:attribute name="address" type="SFString" default="localhost"/>
+					<xs:attribute name="port" type="SFInt32" default="0"/>
+					<xs:attribute name="multicastRelayHost" type="SFString"/>
+					<xs:attribute name="multicastRelayPort" type="SFInt32" default="0"/>
+					<xs:attribute name="rtpHeaderExpected" type="SFBool" default="false"/>
+					<xs:attribute name="isRtpHeaderHeard" type="SFBool"/>
+					<xs:attribute name="isActive" type="SFBool"/>
+					<xs:attribute name="timestamp" type="SFTime"/>
+					<xs:attribute name="radioID" type="SFInt32" default="0"/>
+					<xs:attribute name="receivedPower" type="SFFloat" default="0.0"/>
+					<xs:attribute name="receiverState" type="SFInt32" default="0"/>
+					<xs:attribute name="transmitterSiteID" type="SFInt32" default="0"/>
+					<xs:attribute name="transmitterApplicationID" type="SFInt32" default="0"/>
+					<xs:attribute name="transmitterEntityID" type="SFInt32" default="0"/>
+					<xs:attribute name="transmitterRadioID" type="SFInt32" default="0"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="SignalPdu">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/dis.html#SignalPdu"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DGroupingNode">
+					<xs:attribute name="enabled" type="SFBool" default="true"/>
+					<xs:attribute name="whichGeometry" type="SFInt32" default="1"/>
+					<xs:attribute name="readInterval" type="SFTime" default="0.1"/>
+					<xs:attribute name="writeInterval" type="SFTime" default="1.0"/>
+					<xs:attribute name="networkMode" type="networkModeValues" default="standAlone"/>
+					<xs:attribute name="isStandAlone" type="SFBool"/>
+					<xs:attribute name="isNetworkReader" type="SFBool"/>
+					<xs:attribute name="isNetworkWriter" type="SFBool"/>
+					<xs:attribute name="siteID" type="SFInt32" default="0"/>
+					<xs:attribute name="applicationID" type="SFInt32" default="1"/>
+					<xs:attribute name="entityID" type="SFInt32" default="0"/>
+					<xs:attribute name="address" type="SFString" default="localhost"/>
+					<xs:attribute name="port" type="SFInt32" default="0"/>
+					<xs:attribute name="multicastRelayHost" type="SFString"/>
+					<xs:attribute name="multicastRelayPort" type="SFInt32" default="0"/>
+					<xs:attribute name="rtpHeaderExpected" type="SFBool" default="false"/>
+					<xs:attribute name="isRtpHeaderHeard" type="SFBool"/>
+					<xs:attribute name="isActive" type="SFBool"/>
+					<xs:attribute name="timestamp" type="SFTime"/>
+					<xs:attribute name="radioID" type="SFInt32" default="0"/>
+					<xs:attribute name="encodingScheme" type="SFInt32" default="0"/>
+					<xs:attribute name="tdlType" type="SFInt32" default="0"/>
+					<xs:attribute name="sampleRate" type="SFInt32" default="0"/>
+					<xs:attribute name="samples" type="SFInt32" default="0"/>
+					<xs:attribute name="dataLength" type="SFInt32" default="0"/>
+					<xs:attribute name="data" type="MFInt32"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="TransmitterPdu">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/dis.html#TransmitterPdu"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DGroupingNode">
+					<xs:attribute name="enabled" type="SFBool" default="true"/>
+					<xs:attribute name="whichGeometry" type="SFInt32" default="1"/>
+					<xs:attribute name="readInterval" type="SFTime" default="0.1"/>
+					<xs:attribute name="writeInterval" type="SFTime" default="1.0"/>
+					<xs:attribute name="networkMode" type="networkModeValues" default="standAlone"/>
+					<xs:attribute name="isStandAlone" type="SFBool"/>
+					<xs:attribute name="isNetworkReader" type="SFBool"/>
+					<xs:attribute name="isNetworkWriter" type="SFBool"/>
+					<xs:attribute name="siteID" type="SFInt32" default="0"/>
+					<xs:attribute name="applicationID" type="SFInt32" default="1"/>
+					<xs:attribute name="entityID" type="SFInt32" default="0"/>
+					<xs:attribute name="address" type="SFString" default="localhost"/>
+					<xs:attribute name="port" type="SFInt32" default="0"/>
+					<xs:attribute name="multicastRelayHost" type="SFString"/>
+					<xs:attribute name="multicastRelayPort" type="SFInt32" default="0"/>
+					<xs:attribute name="rtpHeaderExpected" type="SFBool" default="false"/>
+					<xs:attribute name="isRtpHeaderHeard" type="SFBool"/>
+					<xs:attribute name="isActive" type="SFBool"/>
+					<xs:attribute name="timestamp" type="SFTime"/>
+					<xs:attribute name="radioID" type="SFInt32" default="0"/>
+					<xs:attribute name="antennaLocation" type="SFVec3f" default="0 0 0"/>
+					<xs:attribute name="antennaPatternLength" type="SFInt32" default="0"/>
+					<xs:attribute name="antennaPatternType" type="SFInt32" default="0"/>
+					<xs:attribute name="cryptoKeyID" type="SFInt32" default="0"/>
+					<xs:attribute name="cryptoSystem" type="SFInt32" default="0"/>
+					<xs:attribute name="frequency" type="SFInt32" default="0"/>
+					<xs:attribute name="inputSource" type="SFInt32" default="0"/>
+					<xs:attribute name="lengthOfModulationParameters" type="SFInt32" default="0"/>
+					<xs:attribute name="modulationTypeDetail" type="SFInt32" default="0"/>
+					<xs:attribute name="modulationTypeMajor" type="SFInt32" default="0"/>
+					<xs:attribute name="modulationTypeSpreadSpectrum" type="SFInt32" default="0"/>
+					<xs:attribute name="modulationTypeSystem" type="SFInt32" default="0"/>
+					<xs:attribute name="power" type="SFFloat" default="0.0"/>
+					<xs:attribute name="radioEntityTypeCategory" type="SFInt32" default="0"/>
+					<xs:attribute name="radioEntityTypeCountry" type="SFInt32" default="0"/>
+					<xs:attribute name="radioEntityTypeDomain" type="SFInt32" default="0"/>
+					<xs:attribute name="radioEntityTypeKind" type="SFInt32" default="0"/>
+					<xs:attribute name="radioEntityTypeNomenclature" type="SFInt32" default="0"/>
+					<xs:attribute name="radioEntityTypeNomenclatureVersion" type="SFInt32" default="0"/>
+					<xs:attribute name="relativeAntennaLocation" type="SFVec3f" default="0 0 0"/>
+					<xs:attribute name="transmitFrequencyBandwidth" type="SFFloat" default="0"/>
+					<xs:attribute name="transmitState" type="SFInt32" default="0"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<!--======================================================================-->
+	<!--GeoVrml 2.0 Nodes-->
+	<!--needs to be split into two enumerations for validatability-->
+	<xs:simpleType name="geoSystemType">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/geodata.html#Specifyingaspatialreference"/>
+		</xs:annotation>
+		<xs:restriction base="SFString"/>
+	</xs:simpleType>
+	<xs:element name="GeoCoordinate">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/geodata.html#GeoCoordinate"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DCoordinateNode">
+					<xs:sequence minOccurs="0">
+						<xs:element name="GeoOrigin"/>
+					</xs:sequence>
+					<xs:attribute name="geoSystem" type="geoSystemType" default='"GD" "WE"'/>
+					<xs:attribute name="point" type="MFVec3d"/>
+					<xs:attribute name="containerField" type="xs:NMTOKEN" default="coord"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="GeoElevationGrid">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/geodata.html#GeoElevationGrid"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DGeometryNode">
+					<xs:choice minOccurs="0">
+						<xs:sequence>
+							<xs:element ref="GeoOrigin"/>
+							<xs:group ref="ColorNormalTexCoordContentModel" minOccurs="0"/>
+						</xs:sequence>
+						<xs:sequence minOccurs="0">
+							<xs:group ref="ColorNormalTexCoordContentModel"/>
+							<xs:element ref="GeoOrigin" minOccurs="0"/>
+						</xs:sequence>
+					</xs:choice>
+					<xs:attribute name="geoSystem" type="geoSystemType" default='"GD" "WE"'/>
+					<xs:attribute name="geoGridOrigin" type="SFVec3d" default="0 0 0"/>
+					<xs:attribute name="height" type="MFDouble" default="0 0"/>
+					<xs:attribute name="ccw" type="SFBool" default="true"/>
+					<xs:attribute name="colorPerVertex" type="SFBool" default="true"/>
+					<xs:attribute name="creaseAngle" default="0">
+						<!-- type="SFFloatNonNegative" -->
+						<xs:simpleType>
+							<xs:restriction base="SFFloat">
+								<xs:minInclusive value="0"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:attribute>
+					<xs:attribute name="normalPerVertex" type="SFBool" default="true"/>
+					<xs:attribute name="solid" type="SFBool" default="true"/>
+					<xs:attribute name="xDimension" type="SFInt32" default="0"/>
+					<xs:attribute name="xSpacing" default="1.0">
+						<!-- type="SFFloatNonNegative" -->
+						<xs:simpleType>
+							<xs:restriction base="SFDouble">
+								<xs:minInclusive value="0"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:attribute>
+					<xs:attribute name="yScale" default="1">
+						<!-- type="SFFloatNonNegative" -->
+						<xs:simpleType>
+							<xs:restriction base="SFFloat">
+								<xs:minInclusive value="0"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:attribute>
+					<xs:attribute name="zDimension" type="SFInt32" default="0"/>
+					<xs:attribute name="zSpacing" default="1.0">
+						<!-- type="SFFloatNonNegative" -->
+						<xs:simpleType>
+							<xs:restriction base="SFDouble">
+								<xs:minInclusive value="0"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:attribute>
+					<xs:attribute name="set_height" type="MFDouble"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="GeoLocation">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/geodata.html#GeoLocation"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DGroupingNode">
+					<xs:attribute name="geoSystem" type="geoSystemType" default='"GD" "WE"'/>
+					<xs:attribute name="geoCoords" type="SFVec3d" default="0 0 0"/>
+				</xs:extension>
+				<!-- GeoOrigin included in X3DGroupingNode content model -->
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="GeoLOD">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/geodata.html#GeoLOD"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DGroupingNode">
+					<xs:attribute name="geoSystem" type="geoSystemType" default='"GD" "WE"'/>
+					<xs:attribute name="rootUrl" type="MFString"/>
+					<xs:attribute name="child1Url" type="MFString"/>
+					<xs:attribute name="child2Url" type="MFString"/>
+					<xs:attribute name="child3Url" type="MFString"/>
+					<xs:attribute name="child4Url" type="MFString"/>
+					<xs:attribute name="center" type="SFVec3d" default="0 0 0"/>
+					<xs:attribute name="range" type="SFFloat" default="10"/>
+				</xs:extension>
+				<!-- GeoOrigin included in X3DGroupingNode content model -->
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="GeoMetadata">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/geodata.html#GeoMetadata"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DInfoNode">
+					<xs:choice minOccurs="0">
+						<xs:element name="GeoCoordinate"/>
+						<xs:element name="GeoElevationGrid"/>
+						<xs:element name="GeoLocation"/>
+						<xs:element name="GeoOrigin"/>
+						<xs:element name="GeoLOD"/>
+						<!--	<xs:element name="GeoMetadata"/> excluded since does not make sense for a GeoMetadata node to pertain to another GeoMetadata node -->
+						<xs:element name="GeoPositionInterpolator"/>
+						<xs:element name="GeoTouchSensor"/>
+						<xs:element name="GeoViewpoint"/>
+						<xs:element name="ProtoInstance"/>
+					</xs:choice>
+					<xs:attribute name="url" type="MFString"/>
+					<xs:attribute name="data" type="xs:IDREFS"/>
+					<xs:attribute name="summary" type="MFString"/>
+				</xs:extension>
+				<!--
+					<xs:attribute name="title" type="SFString"/>
+					<xs:attribute name="description" type="SFString"/>
+					<xs:attribute name="coordinateSystem" type="SFString"/>
+					<xs:attribute name="horizontalDatum" type="SFString"/>
+					<xs:attribute name="verticalDatum" type="SFString"/>
+					<xs:attribute name="ellipsoid" type="SFString"/>
+					<xs:attribute name="extent" type="SFString"/>
+					<xs:attribute name="resolution" type="SFString"/>
+					<xs:attribute name="originator" type="SFString"/>
+					<xs:attribute name="copyright" type="SFString"/>
+					<xs:attribute name="date" type="SFString"/>
+					<xs:attribute name="metadataFormat" type="SFString"/>
+					<xs:attribute name="dataUrl" type="SFString"/>
+					<xs:attribute name="dataFormat" type="SFString"/>
+					-->
+				<!-- 'data' field is MFNode reference array to pertinent GeoSpatial nodes affected by this GeoMetadata node, empty array refers to entire scene -->
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="GeoOrigin">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/geodata.html#GeoOrigin"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DNode">
+					<xs:attribute name="geoSystem" type="geoSystemType" default='"GD" "WE"'/>
+					<xs:attribute name="geoCoords" type="SFVec3d" default="0 0 0"/>
+					<xs:attribute name="rotateYUp" type="SFBool" default="false"/>
+					<xs:attribute name="containerField" type="xs:NMTOKEN" default="geoOrigin"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="GeoPositionInterpolator">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/geodata.html#GeoPositionInterpolator"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DInterpolatorNode">
+					<xs:sequence minOccurs="0">
+						<xs:element ref="GeoOrigin"/>
+					</xs:sequence>
+					<xs:attribute name="geoSystem" type="geoSystemType" default='"GD" "WE"'/>
+					<xs:attribute name="keyValue" type="MFVec3d"/>
+					<xs:attribute name="value_changed" type="SFVec3f"/>
+					<xs:attribute name="geovalue_changed" type="SFVec3d"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="GeoTouchSensor">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/geodata.html#GeoTouchSensor"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DTouchSensorNode">
+					<xs:sequence minOccurs="0">
+						<xs:element ref="GeoOrigin"/>
+					</xs:sequence>
+					<xs:attribute name="geoSystem" type="geoSystemType" default='"GD" "WE"'/>
+					<xs:attribute name="hitGeoCoord_changed" type="SFVec3d"/>
+					<xs:attribute name="hitNormal_changed" type="SFVec3f"/>
+					<xs:attribute name="hitPoint_changed" type="SFVec3f"/>
+					<xs:attribute name="hitTexCoord_changed" type="SFVec2f"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="GeoViewpoint">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/geodata.html#GeoViewpoint"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DBindableNode">
+					<xs:sequence minOccurs="0">
+						<xs:element ref="GeoOrigin"/>
+					</xs:sequence>
+					<xs:attribute name="geoSystem" type="geoSystemType" default='"GD" "WE"'/>
+					<xs:attribute name="fieldOfView" type="SFFloat" default="0.785398"/>
+					<xs:attribute name="jump" type="SFBool" default="true"/>
+					<xs:attribute name="orientation" type="SFRotation" default="0 0 1 0"/>
+					<xs:attribute name="position" type="SFVec3d" default="0 0 100000"/>
+					<xs:attribute name="description" type="SFString"/>
+					<xs:attribute name="headlight" type="SFBool" default="true"/>
+					<xs:attribute name="navType" type="MFString" default='"EXAMINE" "ANY"'/>
+					<xs:attribute name="speedFactor" type="SFFloat" default="1.0"/>
+					<xs:attribute name="set_orientation" type="SFRotation"/>
+					<xs:attribute name="set_position" type="SFVec3d"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<!--======================================================================-->
+	<!--Humanoid Animation (H-Anim) 1.1 Nodes-->
+	<xs:simpleType name="jointName">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://ecetemp.uwaterloo.ca/~h-anim/spec1.1/#hierarchy"/>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="c1"/>
+			<xs:enumeration value="c2"/>
+			<xs:enumeration value="c3"/>
+			<xs:enumeration value="c4"/>
+			<xs:enumeration value="c5"/>
+			<xs:enumeration value="c6"/>
+			<xs:enumeration value="c7"/>
+			<xs:enumeration value="HumanoidRoot"/>
+			<xs:enumeration value="jaw"/>
+			<xs:enumeration value="l_acromioclavicular"/>
+			<xs:enumeration value="l_ankle"/>
+			<xs:enumeration value="l_calf"/>
+			<xs:enumeration value="l_clavicle"/>
+			<xs:enumeration value="l_elbow"/>
+			<xs:enumeration value="l_eyeball"/>
+			<xs:enumeration value="l_eyeball_joint"/>
+			<xs:enumeration value="l_eyebrow"/>
+			<xs:enumeration value="l_eyebrow_joint"/>
+			<xs:enumeration value="l_eyelid"/>
+			<xs:enumeration value="l_eyelid_joint"/>
+			<xs:enumeration value="l_forearm"/>
+			<xs:enumeration value="l_forefoot"/>
+			<xs:enumeration value="l_hand"/>
+			<xs:enumeration value="l_hindfoot"/>
+			<xs:enumeration value="l_hip"/>
+			<xs:enumeration value="l_index_distal"/>
+			<xs:enumeration value="l_index_metacarpal"/>
+			<xs:enumeration value="l_index_middle"/>
+			<xs:enumeration value="l_index_proximal"/>
+			<xs:enumeration value="l_index0"/>
+			<xs:enumeration value="l_index1"/>
+			<xs:enumeration value="l_index2"/>
+			<xs:enumeration value="l_index3"/>
+			<xs:enumeration value="l_knee"/>
+			<xs:enumeration value="l_metatarsal"/>
+			<xs:enumeration value="l_middistal"/>
+			<xs:enumeration value="l_middle_distal"/>
+			<xs:enumeration value="l_middle_metacarpal"/>
+			<xs:enumeration value="l_middle_middle"/>
+			<xs:enumeration value="l_middle_proximal"/>
+			<xs:enumeration value="l_middle0"/>
+			<xs:enumeration value="l_middle1"/>
+			<xs:enumeration value="l_middle2"/>
+			<xs:enumeration value="l_middle3"/>
+			<xs:enumeration value="l_midproximal"/>
+			<xs:enumeration value="l_midtarsal"/>
+			<xs:enumeration value="l_pinky_distal"/>
+			<xs:enumeration value="l_pinky_metacarpal"/>
+			<xs:enumeration value="l_pinky_middle"/>
+			<xs:enumeration value="l_pinky_proximal"/>
+			<xs:enumeration value="l_pinky0"/>
+			<xs:enumeration value="l_pinky1"/>
+			<xs:enumeration value="l_pinky2"/>
+			<xs:enumeration value="l_pinky3"/>
+			<xs:enumeration value="l_ring_distal"/>
+			<xs:enumeration value="l_ring_metacarpal"/>
+			<xs:enumeration value="l_ring_middle"/>
+			<xs:enumeration value="l_ring_proximal"/>
+			<xs:enumeration value="l_ring0"/>
+			<xs:enumeration value="l_ring1"/>
+			<xs:enumeration value="l_ring2"/>
+			<xs:enumeration value="l_ring3"/>
+			<xs:enumeration value="l_scapula"/>
+			<xs:enumeration value="l_shoulder"/>
+			<xs:enumeration value="l_sternoclavicular"/>
+			<xs:enumeration value="l_subtalar"/>
+			<xs:enumeration value="l_thigh"/>
+			<xs:enumeration value="l_thumb_distal"/>
+			<xs:enumeration value="l_thumb_metacarpal"/>
+			<xs:enumeration value="l_thumb_proximal"/>
+			<xs:enumeration value="l_thumb1"/>
+			<xs:enumeration value="l_thumb2"/>
+			<xs:enumeration value="l_thumb3"/>
+			<xs:enumeration value="l_upperarm"/>
+			<xs:enumeration value="l_wrist"/>
+			<xs:enumeration value="l1"/>
+			<xs:enumeration value="l2"/>
+			<xs:enumeration value="l3"/>
+			<xs:enumeration value="l4"/>
+			<xs:enumeration value="l5"/>
+			<xs:enumeration value="pelvis"/>
+			<xs:enumeration value="r_acromioclavicular"/>
+			<xs:enumeration value="r_ankle"/>
+			<xs:enumeration value="r_calf"/>
+			<xs:enumeration value="r_clavicle"/>
+			<xs:enumeration value="r_elbow"/>
+			<xs:enumeration value="r_eyeball"/>
+			<xs:enumeration value="r_eyeball_joint"/>
+			<xs:enumeration value="r_eyebrow"/>
+			<xs:enumeration value="r_eyebrow_joint"/>
+			<xs:enumeration value="r_eyelid"/>
+			<xs:enumeration value="r_eyelid_joint"/>
+			<xs:enumeration value="r_forearm"/>
+			<xs:enumeration value="r_forefoot"/>
+			<xs:enumeration value="r_hand"/>
+			<xs:enumeration value="r_hindfoot"/>
+			<xs:enumeration value="r_hip"/>
+			<xs:enumeration value="r_index_distal"/>
+			<xs:enumeration value="r_index_metacarpal"/>
+			<xs:enumeration value="r_index_middle"/>
+			<xs:enumeration value="r_index_proximal"/>
+			<xs:enumeration value="r_index0"/>
+			<xs:enumeration value="r_index1"/>
+			<xs:enumeration value="r_index2"/>
+			<xs:enumeration value="r_index3"/>
+			<xs:enumeration value="r_knee"/>
+			<xs:enumeration value="r_metatarsal"/>
+			<xs:enumeration value="r_middistal"/>
+			<xs:enumeration value="r_middle_distal"/>
+			<xs:enumeration value="r_middle_metacarpal"/>
+			<xs:enumeration value="r_middle_middle"/>
+			<xs:enumeration value="r_middle_proximal"/>
+			<xs:enumeration value="r_middle0"/>
+			<xs:enumeration value="r_middle1"/>
+			<xs:enumeration value="r_middle2"/>
+			<xs:enumeration value="r_middle3"/>
+			<xs:enumeration value="r_midproximal"/>
+			<xs:enumeration value="r_midtarsal"/>
+			<xs:enumeration value="r_pinky_distal"/>
+			<xs:enumeration value="r_pinky_metacarpal"/>
+			<xs:enumeration value="r_pinky_middle"/>
+			<xs:enumeration value="r_pinky_proximal"/>
+			<xs:enumeration value="r_pinky0"/>
+			<xs:enumeration value="r_pinky1"/>
+			<xs:enumeration value="r_pinky2"/>
+			<xs:enumeration value="r_pinky3"/>
+			<xs:enumeration value="r_ring_distal"/>
+			<xs:enumeration value="r_ring_metacarpal"/>
+			<xs:enumeration value="r_ring_middle"/>
+			<xs:enumeration value="r_ring_proximal"/>
+			<xs:enumeration value="r_ring0"/>
+			<xs:enumeration value="r_ring1"/>
+			<xs:enumeration value="r_ring2"/>
+			<xs:enumeration value="r_ring3"/>
+			<xs:enumeration value="r_scapula"/>
+			<xs:enumeration value="r_shoulder"/>
+			<xs:enumeration value="r_sternoclavicular"/>
+			<xs:enumeration value="r_subtalar"/>
+			<xs:enumeration value="r_thigh"/>
+			<xs:enumeration value="r_thumb_distal"/>
+			<xs:enumeration value="r_thumb_metacarpal"/>
+			<xs:enumeration value="r_thumb_proximal"/>
+			<xs:enumeration value="r_thumb1"/>
+			<xs:enumeration value="r_thumb2"/>
+			<xs:enumeration value="r_thumb3"/>
+			<xs:enumeration value="r_upperarm"/>
+			<xs:enumeration value="r_wrist"/>
+			<xs:enumeration value="sacroiliac"/>
+			<xs:enumeration value="sacrum"/>
+			<xs:enumeration value="skull"/>
+			<xs:enumeration value="skullbase"/>
+			<xs:enumeration value="t1"/>
+			<xs:enumeration value="t2"/>
+			<xs:enumeration value="t3"/>
+			<xs:enumeration value="t4"/>
+			<xs:enumeration value="t5"/>
+			<xs:enumeration value="t6"/>
+			<xs:enumeration value="t7"/>
+			<xs:enumeration value="t8"/>
+			<xs:enumeration value="t9"/>
+			<xs:enumeration value="t10"/>
+			<xs:enumeration value="t11"/>
+			<xs:enumeration value="t12"/>
+			<xs:enumeration value="temporomandibular"/>
+			<xs:enumeration value="vc1"/>
+			<xs:enumeration value="vc2"/>
+			<xs:enumeration value="vc3"/>
+			<xs:enumeration value="vc4"/>
+			<xs:enumeration value="vc5"/>
+			<xs:enumeration value="vc6"/>
+			<xs:enumeration value="vc7"/>
+			<xs:enumeration value="vl1"/>
+			<xs:enumeration value="vl2"/>
+			<xs:enumeration value="vl3"/>
+			<xs:enumeration value="vl4"/>
+			<xs:enumeration value="vl5"/>
+			<xs:enumeration value="vt1"/>
+			<xs:enumeration value="vt2"/>
+			<xs:enumeration value="vt3"/>
+			<xs:enumeration value="vt4"/>
+			<xs:enumeration value="vt5"/>
+			<xs:enumeration value="vt6"/>
+			<xs:enumeration value="vt7"/>
+			<xs:enumeration value="vt8"/>
+			<xs:enumeration value="vt9"/>
+			<xs:enumeration value="vt10"/>
+			<xs:enumeration value="vt11"/>
+			<xs:enumeration value="vt12"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:element name="HAnimDisplacer">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/hanim.html#HAnimDisplacer"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DGeometricPropertyNode">
+					<xs:attribute name="name" type="SFString"/>
+					<xs:attribute name="coordIndex" type="MFInt32"/>
+					<xs:attribute name="displacements" type="MFVec3f"/>
+					<xs:attribute name="weight" type="SFFloat" default="0.0"/>
+					<xs:attribute name="containerField" type="xs:NMTOKEN" default="displacers"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="HAnimHumanoid">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/hanim.html#HAnimHumanoid"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DHumanoidNode">
+					<xs:sequence minOccurs="0" maxOccurs="unbounded">
+						<xs:group ref="ChildContentModel" minOccurs="0" maxOccurs="unbounded"/>
+						<xs:choice minOccurs="0">
+							<xs:element ref="Coordinate"/>
+							<xs:element ref="CoordinateDouble"/>
+						</xs:choice>
+						<xs:element ref="Normal" minOccurs="0"/>
+					</xs:sequence>
+					<xs:attribute name="name" type="SFString"/>
+					<xs:attribute name="center" type="SFVec3f" default="0 0 0"/>
+					<xs:attribute name="rotation" type="SFRotation" default="0 0 1 0"/>
+					<xs:attribute name="scale" type="SFVec3f" default="1 1 1"/>
+					<xs:attribute name="scaleOrientation" type="SFRotation" default="0 0 1 0"/>
+					<xs:attribute name="translation" type="SFVec3f" default="0 0 0"/>
+					<xs:attribute name="info" type="MFString"/>
+					<xs:attribute name="version" type="SFString"/>
+				</xs:extension>
+				<!--	<xs:attribute name="authorName" type="SFString"/>
+					<xs:attribute name="authorEmail" type="SFString"/>
+					<xs:attribute name="copyright" type="SFString"/>
+					<xs:attribute name="creationDate" type="SFString"/>
+					<xs:attribute name="usageRestrictions" type="SFString"/>
+					<xs:attribute name="humanoidVersion" type="SFString"/>
+					<xs:attribute name="age" type="SFString"/>
+					<xs:attribute name="gender" type="SFString"/>
+					<xs:attribute name="height" type="SFString"/>
+					<xs:attribute name="weight" type="SFString"/> -->
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="HAnimJoint">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/hanim.html#HAnimJoint"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DGroupingNode">
+					<xs:attribute name="name" type="jointName"/>
+					<xs:attribute name="center" type="SFVec3f" default="0 0 0"/>
+					<xs:attribute name="rotation" type="SFRotation" default="0 0 1 0"/>
+					<xs:attribute name="scale" type="SFVec3f" default="1 1 1"/>
+					<xs:attribute name="scaleOrientation" type="SFRotation" default="0 0 1 0"/>
+					<xs:attribute name="translation" type="SFVec3f" default="0 0 0"/>
+					<xs:attribute name="skinCoordIndex" type="MFInt32"/>
+					<xs:attribute name="skinCoordWeight" type="MFFloat"/>
+					<xs:attribute name="llimit" type="MFFloat"/>
+					<xs:attribute name="ulimit" type="MFFloat"/>
+					<xs:attribute name="limitOrientation" type="SFRotation" default="0 0 1 0"/>
+					<xs:attribute name="stiffness" type="MFFloat" default="0 0 0"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="HAnimSegment">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/hanim.html#HAnimSegment"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DGroupingNode">
+					<xs:sequence minOccurs="0" maxOccurs="unbounded">
+						<xs:element ref="HAnimDisplacer"/>
+					</xs:sequence>
+					<xs:attribute name="name" type="SFString"/>
+					<xs:attribute name="mass" type="SFFloat" default="0"/>
+					<xs:attribute name="centerOfMass" type="SFVec3f" default="0 0 0"/>
+					<xs:attribute name="momentsOfInertia" type="MFFloat" default="0 0 0 0 0 0 0 0 0"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="HAnimSite">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/hanim.html#HAnimSite"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DGroupingNode">
+					<xs:attribute name="name" type="SFString"/>
+					<xs:attribute name="center" type="SFVec3f" default="0 0 0"/>
+					<xs:attribute name="rotation" type="SFRotation" default="0 0 1 0"/>
+					<xs:attribute name="scale" type="SFVec3f" default="1 1 1"/>
+					<xs:attribute name="scaleOrientation" type="SFRotation" default="0 0 1 0"/>
+					<xs:attribute name="translation" type="SFVec3f" default="0 0 0"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<!--======================================================================-->
+	<!--Nurbs Nodes-->
+	<xs:element name="Contour2D">
+		<xs:annotation>
+			<xs:appinfo>http://www.blaxxun.com/support/developerguide/developer/contact/3d/nurbs/spec/nodes.htm#Contour2D</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/nurbs.html#Contour2D"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DNode">
+					<xs:choice minOccurs="0" maxOccurs="unbounded">
+						<xs:element ref="NurbsCurve2D"/>
+						<xs:element ref="ContourPolyline2D"/>
+						<xs:element ref="ProtoInstance"/>
+					</xs:choice>
+					<xs:attribute name="containerField" type="xs:NMTOKEN" default="trimmingContour"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="ContourPolyline2D">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/nurbs.html#ContourPolyline2D"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DNurbsControlCurveNode"/>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="NurbsCurve">
+		<xs:annotation>
+			<xs:appinfo>http://www.blaxxun.com/support/developerguide/developer/contact/3d/nurbs/spec/nodes.htm#NurbsCurve</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/nurbs.html#NurbsCurve"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DParametricGeometryNode">
+					<xs:choice minOccurs="0">
+						<xs:element ref="Coordinate"/>
+						<xs:element ref="CoordinateDouble"/>
+						<xs:element ref="ProtoInstance"/>
+					</xs:choice>
+					<xs:attribute name="closed" type="SFBool" default="false"/>
+					<xs:attribute name="knot" type="MFDouble"/>
+					<xs:attribute name="order" type="SFInt32" default="3"/>
+					<xs:attribute name="tessellation" type="SFInt32" default="0"/>
+					<xs:attribute name="weight" type="MFDouble"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="NurbsCurve2D">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/nurbs.html#NurbsCurve2D"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DNurbsControlCurveNode">
+					<xs:attribute name="closed" type="SFBool" default="false"/>
+					<xs:attribute name="knot" type="MFDouble"/>
+					<xs:attribute name="order" type="SFInt32" default="3"/>
+					<xs:attribute name="tessellation" type="SFInt32" default="0"/>
+					<xs:attribute name="weight" type="MFDouble"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="NurbsOrientationInterpolator">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/nurbs.html#NurbsOrientationInterpolator"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DChildNode">
+					<xs:choice minOccurs="0">
+						<xs:element ref="Coordinate"/>
+						<xs:element ref="CoordinateDouble"/>
+						<xs:element ref="ProtoInstance"/>
+					</xs:choice>
+					<xs:attribute name="set_fraction" type="SFFloat"/>
+					<xs:attribute name="value_changed" type="SFRotation"/>
+					<xs:attribute name="knot" type="MFDouble"/>
+					<xs:attribute name="order" type="SFInt32" default="3"/>
+					<xs:attribute name="weight" type="MFDouble"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="NurbsPatchSurface">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.blaxxun.com/support/developerguide/developer/contact/3d/nurbs/spec/nodes.htm#NurbsSurface"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DNurbsSurfaceGeometryNode">
+					<xs:choice minOccurs="0" maxOccurs="2">
+						<xs:element ref="Coordinate"/>
+						<xs:element ref="CoordinateDouble"/>
+						<xs:element ref="TextureCoordinate"/>
+						<xs:element ref="TextureCoordinateGenerator"/>
+						<xs:element ref="NurbsTextureCoordinate"/>
+						<xs:element ref="ProtoInstance"/>
+					</xs:choice>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="NurbsPositionInterpolator">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/nurbs.html#NurbsPositionInterpolator"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DChildNode">
+					<xs:choice minOccurs="0">
+						<xs:element ref="Coordinate"/>
+						<xs:element ref="CoordinateDouble"/>
+						<xs:element ref="ProtoInstance"/>
+					</xs:choice>
+					<xs:attribute name="set_fraction" type="SFFloat"/>
+					<xs:attribute name="value_changed" type="SFVec3f"/>
+					<xs:attribute name="knot" type="MFDouble"/>
+					<xs:attribute name="order" type="SFInt32" default="3"/>
+					<xs:attribute name="weight" type="MFDouble"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="NurbsSet">
+		<xs:annotation>
+			<xs:appinfo>
+				<xs:attribute name="otherInterfaces" type="xs:string" fixed="X3DBoundedObject"/>
+			</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/nurbs.html#NurbsSet"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DChildNode">
+					<xs:sequence minOccurs="0" maxOccurs="unbounded">
+						<xs:element ref="NurbsPatchSurface"/>
+						<xs:element ref="NurbsSweptSurface"/>
+						<xs:element ref="NurbsSwungSurface"/>
+						<xs:element ref="NurbsTrimmedSurface"/>
+						<xs:element ref="ProtoInstance"/>
+					</xs:sequence>
+					<xs:attribute name="tessellationScale" type="SFFloat" default="1.0"/>
+					<xs:attribute name="bboxCenter" type="SFVec3f" default="0 0 0"/>
+					<xs:attribute name="bboxSize" type="BoundingBoxSize" default="-1 -1 -1"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="NurbsSurfaceInterpolator">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/nurbs.html#NurbsSurfaceInterpolator"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DChildNode">
+					<xs:choice minOccurs="0">
+						<xs:element ref="Coordinate"/>
+						<xs:element ref="CoordinateDouble"/>
+						<xs:element ref="ProtoInstance"/>
+					</xs:choice>
+					<xs:attribute name="set_fraction" type="SFVec2f"/>
+					<xs:attribute name="normal_changed" type="SFVec3f"/>
+					<xs:attribute name="position_changed" type="SFVec3f"/>
+					<xs:attribute name="uDimension" type="SFInt32" default="0"/>
+					<xs:attribute name="vDimension" type="SFInt32" default="0"/>
+					<xs:attribute name="uKnot" type="MFDouble"/>
+					<xs:attribute name="vKnot" type="MFDouble"/>
+					<xs:attribute name="uOrder" type="SFInt32" default="3"/>
+					<xs:attribute name="vOrder" type="SFInt32" default="3"/>
+					<xs:attribute name="weight" type="MFDouble"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="NurbsSweptSurface">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/nurbs.html#NurbsSweptSurface"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DParametricGeometryNode">
+					<xs:choice minOccurs="0" maxOccurs="2">
+						<xs:element ref="ContourPolyline2D"/>
+						<xs:element ref="NurbsCurve2D"/>
+						<xs:element ref="NurbsCurve"/>
+						<xs:element ref="ProtoInstance"/>
+					</xs:choice>
+					<xs:attribute name="ccw" type="SFBool" default="true"/>
+					<xs:attribute name="solid" type="SFBool" default="true"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="NurbsSwungSurface">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/nurbs.html#NurbsSwungSurface"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DParametricGeometryNode">
+					<xs:choice minOccurs="0" maxOccurs="2">
+						<xs:element ref="ContourPolyline2D"/>
+						<xs:element ref="NurbsCurve2D"/>
+						<xs:element ref="ProtoInstance"/>
+					</xs:choice>
+					<xs:attribute name="ccw" type="SFBool" default="true"/>
+					<xs:attribute name="solid" type="SFBool" default="true"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="NurbsTextureCoordinate">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/nurbs.html#NurbsTextureCoordinate"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DTextureCoordinateNode">
+					<xs:attribute name="controlPoint" type="MFVec2f"/>
+					<xs:attribute name="uDimension" type="SFInt32" default="0"/>
+					<xs:attribute name="vDimension" type="SFInt32" default="0"/>
+					<xs:attribute name="uKnot" type="MFDouble"/>
+					<xs:attribute name="vKnot" type="MFDouble"/>
+					<xs:attribute name="uOrder" type="SFInt32" default="3"/>
+					<xs:attribute name="vOrder" type="SFInt32" default="3"/>
+					<xs:attribute name="weight" type="MFFloat"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="NurbsTrimmedSurface">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01/components/nurbs.html#NurbsTrimmedSurface"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DNurbsSurfaceGeometryNode">
+					<xs:choice minOccurs="0" maxOccurs="unbounded">
+						<xs:element ref="Contour2D"/>
+						<xs:element ref="Coordinate"/>
+						<xs:element ref="CoordinateDouble"/>
+						<xs:element ref="TextureCoordinate"/>
+						<xs:element ref="TextureCoordinateGenerator"/>
+						<xs:element ref="NurbsTextureCoordinate"/>
+						<xs:element ref="ProtoInstance"/>
+					</xs:choice>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<!--======================================================================-->
+	<!--CAD Nodes-->
+	<xs:element name="CADAssembly">
+		<xs:annotation>
+			<xs:appinfo>
+				<xs:attribute name="otherInterfaces" type="xs:string" fixed="X3DProductStructureChildNode"/>
+			</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-FPDAM-X3DAbstractSpecification/Part01/components/CADGeometry.html#CADAssembly"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DGroupingNode">
+					<xs:choice>
+						<xs:element ref="CADPart" minOccurs="0" maxOccurs="unbounded"/>
+					</xs:choice>
+					<xs:attribute name="name" type="SFString"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="CADFace">
+		<xs:annotation>
+			<xs:appinfo>
+				<xs:attribute name="otherInterfaces" type="xs:string" fixed="X3DBoundedObject"/>
+			</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-FPDAM-X3DAbstractSpecification/Part01/components/CADGeometry.html#CADFace "/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DProductStructureChildNode">
+					<xs:choice>
+						<xs:element ref="Shape"/>
+						<xs:element ref="LOD"/>
+						<xs:element ref="ProtoInstance"/>
+					</xs:choice>
+					<xs:attribute name="bboxCenter" type="SFVec3f" default="0 0 0"/>
+					<xs:attribute name="bboxSize" type="BoundingBoxSize" default="-1 -1 -1"/>
+					<xs:attribute name="name" type="SFString"/>
+				</xs:extension>
+				<!-- shape field -->
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="CADLayer">
+		<xs:annotation>
+			<xs:appinfo>
+				<xs:attribute name="otherInterfaces" type="xs:string" fixed="X3DProductStructureChildNode"/>
+			</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-FPDAM-X3DAbstractSpecification/Part01/components/CADGeometry.html#CADLayer "/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DGroupingNode">
+					<xs:attribute name="name" type="SFString"/>
+					<xs:attribute name="visible" type="MFBool"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="CADPart">
+		<xs:annotation>
+			<xs:appinfo>
+				<xs:attribute name="otherInterfaces" type="xs:string" fixed="X3DProductStructureChildNode"/>
+			</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-FPDAM-X3DAbstractSpecification/Part01/components/CADGeometry.html#CADPart "/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DGroupingNode">
+					<xs:choice>
+						<xs:element ref="CADFace" minOccurs="0" maxOccurs="unbounded"/>
+					</xs:choice>
+					<xs:attribute name="name" type="SFString"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="IndexedQuadSet">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-FPDAM-X3DAbstractSpecification/Part01/components/CADGeometry.html#IndexedQuadSet"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DComposedGeometryNode">
+					<xs:attribute name="index" type="MFInt32"/>
+					<xs:attribute name="set_index" type="MFInt32"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="QuadSet">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-FPDAM-X3DAbstractSpecification/Part01/components/CADGeometry.html#QuadSet"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DComposedGeometryNode"/>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<!--======================================================================-->
+	<!--Shader Nodes-->
+	<xs:element name="ComposedShader">
+		<xs:annotation>
+			<xs:appinfo>
+				<xs:attribute name="otherInterfaces" type="xs:string" fixed="X3DProgrammableShaderObject"/>
+			</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-X3DAbstractSpecification/Part01/components/shaders.html#X3DShaderNode"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DShaderNode">
+					<xs:sequence>
+						<!-- note different design pattern than Script - IS/connect definitions (from X3DNode) precede field definitions -->
+						<xs:element ref="field" minOccurs="0" maxOccurs="unbounded"/>
+						<xs:element ref="ShaderPart" minOccurs="0" maxOccurs="unbounded"/>
+					</xs:sequence>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="FloatVertexAttribute">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-X3DAbstractSpecification/Part01/components/shaders.html#FloatVertexAttribute"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DVertexAttributeNode">
+					<xs:attribute name="value" type="MFFloat"/>
+					<xs:attribute name="numComponents" default="4">
+						<xs:simpleType>
+							<xs:restriction base="SFInt32">
+								<xs:minInclusive value="1"/>
+								<xs:maxInclusive value="4"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:attribute>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="Matrix3VertexAttribute">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-X3DAbstractSpecification/Part01/components/shaders.html#Matrix3VertexAttribute"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DVertexAttributeNode">
+					<xs:attribute name="value" type="MFMatrix3f"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="Matrix4VertexAttribute">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-X3DAbstractSpecification/Part01/components/shaders.html#Matrix4VertexAttribute"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DVertexAttributeNode">
+					<xs:attribute name="value" type="MFMatrix4f"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="PackagedShader">
+		<xs:annotation>
+			<xs:appinfo>
+				<xs:attribute name="otherInterfaces" type="xs:string" fixed="X3DProgrammableShaderObject,X3DUrlObject"/>
+			</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-X3DAbstractSpecification/Part01/components/shaders.html#PackagedShader"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DShaderNode">
+					<xs:sequence>
+						<!-- note different design pattern than Script - IS/connect definitions (from X3DNode) precede field definitions -->
+						<xs:element ref="field" minOccurs="0" maxOccurs="unbounded"/>
+					</xs:sequence>
+					<xs:attribute name="url" type="MFString"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="ProgramShader">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-X3DAbstractSpecification/Part01/components/shaders.html#ProgramShader"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DShaderNode">
+					<xs:sequence>
+						<!-- containerField:  programs -->
+						<xs:element ref="ShaderProgram" minOccurs="0" maxOccurs="unbounded"/>
+					</xs:sequence>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="ShaderPart">
+		<xs:annotation>
+			<xs:appinfo>
+				<xs:attribute name="otherInterfaces" type="xs:string" fixed="X3DProgrammableShaderObject"/>
+			</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-X3DAbstractSpecification/Part01/components/shaders.html#ShaderPart"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DNode">
+					<xs:attribute name="containerField" type="xs:NMTOKEN" default="parts"/>
+					<xs:attribute name="url" type="MFString"/>
+					<xs:attribute name="type" type="shaderPartTypeValues"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="ShaderProgram">
+		<xs:annotation>
+			<xs:appinfo>
+				<xs:attribute name="otherInterfaces" type="xs:string" fixed="X3DProgrammableShaderObject"/>
+			</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-X3DAbstractSpecification/Part01/components/shaders.html#ShaderProgram"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DNode">
+					<xs:sequence>
+						<!-- note different design pattern than Script - IS/connect definitions (from X3DNode) precede field definitions -->
+						<xs:element ref="field" minOccurs="0" maxOccurs="unbounded"/>
+					</xs:sequence>
+					<xs:attribute name="containerField" type="xs:NMTOKEN" default="programs"/>
+					<xs:attribute name="url" type="MFString"/>
+					<xs:attribute name="type" type="shaderPartTypeValues"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<!--======================================================================-->
+	<!--CubeMapTexturing Nodes-->
+	<xs:element name="ComposedCubeMapTexture">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-X3DAbstractSpecification/Part01/components/env_texture.html#ComposedCubeMapTexture"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DEnvironmentTextureNode">
+					<xs:sequence minOccurs="0" maxOccurs="6">
+						<xs:choice>
+							<xs:element ref="ImageTexture"/>
+							<xs:element ref="PixelTexture"/>
+							<xs:element ref="MovieTexture"/>
+							<xs:element ref="ProtoInstance"/>
+						</xs:choice>
+					</xs:sequence>
+				</xs:extension>
+				<!-- containerField values:  front back left right top bottom -->
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="GeneratedCubeMapTexture">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-X3DAbstractSpecification/Part01/components/env_texture.html#GeneratedCubeMapTexture"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DEnvironmentTextureNode">
+					<xs:attribute name="update" default="NONE">
+						<xs:simpleType>
+							<xs:restriction base="SFString">
+								<xs:enumeration value="NONE"/>
+								<xs:enumeration value="NEXT_FRAME_ONLY"/>
+								<xs:enumeration value="ALWAYS"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:attribute>
+					<xs:attribute name="size" default="128">
+						<xs:simpleType>
+							<xs:restriction base="SFInt32">
+								<xs:minExclusive value="0"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:attribute>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="ImageCubeMapTexture">
+		<xs:annotation>
+			<xs:appinfo>
+				<xs:attribute name="otherInterfaces" type="xs:string" fixed="X3DUrlObject"/>
+			</xs:appinfo>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-X3DAbstractSpecification/Part01/components/env_texture.html#ImageCubeMapTexture"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DEnvironmentTextureNode">
+					<xs:attribute name="url" type="MFString"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<!--======================================================================-->
+	<!--Texturing3DTexturing Nodes	-->
+	<xs:element name="Composed3DTexture">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-X3DAbstractSpecification/Part01/components/texture3D.html#Composed3DTexture"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DTexture3DNode">
+					<xs:sequence minOccurs="0" maxOccurs="unbounded">
+						<xs:choice>
+							<xs:element ref="ImageTexture"/>
+							<xs:element ref="PixelTexture"/>
+							<xs:element ref="MovieTexture"/>
+							<xs:element ref="ProtoInstance"/>
+						</xs:choice>
+					</xs:sequence>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="Image3DTexture">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-X3DAbstractSpecification/Part01/components/texture3D.html#Image3DTexture"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DTexture3DNode">
+					<xs:attribute name="url" type="MFString"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="Pixel3DTexture">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-X3DAbstractSpecification/Part01/components/texture3D.html#Pixel3DTexture"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DTexture3DNode">
+					<xs:attribute name="image" type="MFInt32" default="0 0 0 0"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="TextureCoordinate3D">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-X3DAbstractSpecification/Part01/components/texture3D.html#TextureCoordinate3D"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DTextureCoordinateNode">
+					<xs:attribute name="point" type="MFVec3f"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="TextureCoordinate4D">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-X3DAbstractSpecification/Part01/components/texture3D.html#TextureCoordinate4D"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DTextureCoordinateNode">
+					<xs:attribute name="point" type="MFVec4f"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="TextureMatrixTransform">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-X3DAbstractSpecification/Part01/components/texture3D.html#TextureMatrixTransform"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DTextureTransformNode">
+					<xs:attribute name="matrix" type="SFMatrix4f" default="1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="TextureTransform3D">
+		<xs:annotation>
+			<xs:appinfo/>
+			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-X3DAbstractSpecification/Part01/components/texture3D.html#TextureTransform3D"/>
+		</xs:annotation>
+		<xs:complexType mixed="false">
+			<xs:complexContent mixed="false">
+				<xs:extension base="X3DTextureTransformNode">
+					<xs:attribute name="center" type="SFVec3f" default="0 0 0"/>
+					<xs:attribute name="rotation" type="SFRotation" default="0 0 1 0"/>
+					<xs:attribute name="scale" type="SFVec3f" default="1 1 1"/>
+					<xs:attribute name="translation" type="SFVec3f" default="0 0 0"/>
+				</xs:extension>
+			</xs:complexContent>
+		</xs:complexType>
+	</xs:element>
+	<!--======================================================================-->
+</xs:schema>
diff --git a/examples/x3d/BoundingBox.jrag b/examples/x3d/BoundingBox.jrag
index ae713a0..f8c69cc 100644
--- a/examples/x3d/BoundingBox.jrag
+++ b/examples/x3d/BoundingBox.jrag
@@ -29,13 +29,17 @@ aspect BoundingBox {
     eq Scene.obb() {
         OrientedBoundingBox obb = new OrientedBoundingBox();
         StringBuffer sb = getCoordinates();
-        String s = sb.toString().replace('\"',' ').replace(',',' ');
-//         String s = sb.toString().replace('\"',' ').replace(',',' ').replace("  "," ");
+        String s = sb.toString().replace('\"',' ').replace('\'',' ').replace(',',' ');
         String[] sa = s.split(" ",0);
         float[] fa = new float[sa.length];
         for (int i=0,j=0; i<sa.length; i++) {
-            if (!sa[i].equals("")) {
-                fa[j++] = Float.parseFloat(sa[i]);
+            try {
+                float f = Float.parseFloat(sa[i]);
+                fa[j++] = f;
+            } catch (NumberFormatException e) {
+                // If it couldn't be parsed, let's just hope it
+                // shouldn't.
+//                 System.out.println(sa[i]+" is not a float");
             }
         }
         obb.computeFromPoints(BufferUtils.createFloatBuffer(fa));
@@ -60,13 +64,17 @@ aspect BoundingBox {
     eq Scene.aabb() {
         BoundingBox aabb = new BoundingBox();
         StringBuffer sb = getCoordinates();
-        String s = sb.toString().replace('\"',' ').replace(',',' ');
-//         String s = sb.toString().replace('\"',' ').replace(',',' ').replace("  "," ");
+        String s = sb.toString().replace('\"',' ').replace('\'',' ').replace(',',' ');
         String[] sa = s.split(" ",0);
         float[] fa = new float[sa.length];
         for (int i=0,j=0; i<sa.length; i++) {
-            if (!sa[i].equals("")) {
-                fa[j++] = Float.parseFloat(sa[i]);
+            try {
+                float f = Float.parseFloat(sa[i]);
+                fa[j++] = f;
+            } catch (NumberFormatException e) {
+                // If it couldn't be parsed, let's just hope it
+                // shouldn't.
+//                 System.out.println(sa[i]+" is not a float");
             }
         }
         aabb.computeFromPoints(BufferUtils.createFloatBuffer(fa));
@@ -148,7 +156,6 @@ aspect WireFrame {
                                           add(new point(new AttrValue(sb.toString()))),
                                           new List());
         colorPerVertex cpv = new colorPerVertex(new AttrValue("\"false\""));
-//         String cis = "\"0 1 1 3 3 2 2 0 0 4 4 5 5 1 1 5 5 7 7 3 3 7 7 6 6 2 2 6 6 4\"";
         String cis = "\"0 1 2 3 0 4 5 1 5 6 2 6 7 3 7 4\"";
         coordIndex ci = new coordIndex(new AttrValue(cis));
         IndexedLineSet ils = new IndexedLineSet(new List().add(cpv).add(ci),
diff --git a/examples/x3d/Demo.java b/examples/x3d/Demo.java
index 46d3268..20e7d09 100644
--- a/examples/x3d/Demo.java
+++ b/examples/x3d/Demo.java
@@ -32,11 +32,14 @@ public class Demo extends Parser {
 
         String s = new String();
         try {
-            s = con.readLine("%s","1$");
             ast.prettyPrint("  ",new PrintStream("x3d_demo.x3d"));
-            s = con.readLine("%s","2$");
+            System.out.println("Generated X#D with original model");
+            s = con.readLine("%s","Press enter to include OBB wire-frame");
             ast.addWireFrameBB(obb);
             ast.prettyPrint("  ",new PrintStream("x3d_demo.x3d"));
+            s = con.readLine("%s","Press enter to include AABB wire-frame");
+            ast.addWireFrameBB(aabb);
+            ast.prettyPrint("  ",new PrintStream("x3d_demo.x3d"));
         } catch (FileNotFoundException e) {
             e.printStackTrace();
         }
-- 
GitLab