<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSPY v5 rel. 2 U (http://www.xmlspy.com) by Don Brutzman (Naval Postgraduate School) -->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.9.0">
	<xsd:annotation>
		<xsd:appinfo>XML Schema for the Extensible 3D (X3D) Graphics Specification tagset</xsd:appinfo>
		<xsd:documentation><![CDATA[
=============================================================================

Revised:  20 January 2003
Author:   Don Brutzman

Acknowledgements:
- Rick Goldberg of the Sun Java3D team wrote the first two versions
  of the SAI using IDL and provided invaluable help on the schema 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 many consistency checks.
- Thanks for additional insights and assistance from Len Bullard,
  Justin Couch, Leonard Daly, Paul Diefenbach, Bryan Housel,
  Alan Hudson, Chris Lilley, Braden McDaniel, Tony Parisi, Nick Polys,
  Dick Puk, C. Michael Sperberg-McQueen, Henry Thompson and Joe Williams.

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 match the interface hierarchy, capture strong typing of node,
  relationships, and collect common attributes shared by nodes.  These
  features provide functional consistency between scene graph content and the
  Scene Authoring Interface (SAI) application programming interface (API).
- XML Schema xsd:group element definitions provide child-node content models,
  since complexTypes can't be used as references to unnamed element children.

Version plan:
- 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
- 0.9  Public review and Xj3D open-source implementation version
- 1.0  X3D Task Group consensus for inclusion in X3D Specification

=============================================================================

References:
- This schema:         http://www.web3D.org/TaskGroups/x3d/translation/X3dSchemaDraftSpy.xml
- X3D tagset DTDs:     http://www.web3D.org/TaskGroups/x3d/translation/x3d-3.0.dtd
- Interface hierarchy: http://www.web3d.org/TaskGroups/x3d/X3DSpec_FCD/Part01/concepts.html#Objecthierarchy
- X3D Scene Authoring
  Interface (SAI):     http://www.web3D.org/TaskGroups/x3d/translation/sai/SceneAuthoringInterface.html
- Related VRML specs:  http://www.web3D.org/technicalinfo/specifications/vrml97/index.htm
                       http://web3D.org/TaskGroups/vrtp/dis-java-vrml
                       http://www.geovrml.org/1.0
                       http://h-anim.org/spec1.1
                       http://www.blaxxun.com/support/developerguide/developer/contact/3d/nurbs/spec/nurbsproposal.html
- Schema DTD:          http://www.w3.org/2000/10/XMLSchema.dtd
- Schema schema:       http://www.w3.org/2000/10/XMLSchema.xsd
- Datatypes DTD:       http://www.w3.org/2000/10/datatypes.dtd
- Datatypes schema:    http://www.w3.org/2000/10/datatypes.xsd
- Schema Primer:       http://www.w3.org/TR/2000/WD-xmlschema-0-20000922
- Schema Structures:   http://www.w3.org/TR/2000/WD-xmlschema-1-20000922
- Schema Datatypes:    http://www.w3.org/TR/2000/WD-xmlschema-2-20000922
- Schema group:        http://www.w3.org/XML/Schema
- Schema quality checker:
                       http://alphaworks.ibm.com/tech/xmlsqc
- Schema validator:    http://www.w3.org/2001/03/webdata/xsv
  (currently testing C:\www.web3D.org\TaskGroups\x3d\translation\X3dSchemaDraftSpy.xsd)
- Robin Cover's pages: http://www.oasis-open.org/cover/schemas.html
- Best practices:      http://www.xfront.com/BestPractices.html
- Xeena XML editor:    http://www.alphaWorks.ibm.com/tech/xeena
- Xeena xsd profile:   http://www.web3D.org/TaskGroups/x3d/translation/XMLSchema.profile
- X3D-Edit:            http://www.web3D.org/TaskGroups/x3d/translation/README.X3D-Edit.html
- X3D-Schema-Edit:     http://www.web3D.org/TaskGroups/x3d/translation/X3D-Schema-Edit.bat
- X3D Contributors:    http://www.web3D.org/x3d.html

- _Professional XML Schemas_ by Kurt Cagle, Jon Duckett,
  Oliver Griffin, Stephen Mohr, Francis Norton, Nik Ozu, Ian Stokes-Rees,
  Jeni Tennison and Kevin Williams, Wrox Press Ltd., Birmingham UK, 2001.
                       http://www.wrox.com/Books/Book_Details.asp?ISBN=1861005474

- _Definitive XML Schema_, Priscilla Walmsley, Prentice Hall, Upper Saddle River
  New Jersey, 2002.  http://www.phptr.com

W3C XmlSchema.dtd revisions:
- None needed.  Using original W3C Schema and Datatypes DTDs listed above.

=============================================================================

---Recheck---

Nodes with different attributes/interfaces/names than VRML 97:
- Anchor:  implement X3DTouchSensorNode (and thus SensorNodeType)
  interface, add attributes enabled, isActive, isOver, touchTime
- Collision:  implement X3DEnvironmentalSensorNode (and thus SensorNodeType)
  interface, add attributes enabled, isActive
- Joint:   implement X3DBoundedObject interface, attributes bboxCenter, bboxSize
- KeySensor:  new node
- IndexedLineSet:  new attribute lineWidth
- LOD:  children (instead of level), implement X3DBoundedObject interface
  for bboxCenter, bboxSize
- PointSet:  new attribute pointSize
- Scene:  integrates functionality of VRML 97 Script node's Browser class
- Site:   implement X3DBoundedObject interface, attributes bboxCenter, bboxSize
- StringSensor:  new node
- Switch:  children (instead of choice), might implement X3DBoundedObject
  interface
- Viewpoint:  new (experimental) attribute examine (rotation used
  when active NavigationInfo is in EXAMINE mode)
- No attributes are designated as eventIn, eventOut, field, exposedField
  since all are treated equivalently (by design decision at 1999 summit).
  Prototype fields can indicate fieldHint via attribute vrml97Hint for
  backwards compatibility using X3D-to-VRML-97 translators.
- Routing events via field-name prefix set_ (or suffix _changed) is no
  longer needed.  Ought to be designated as a deprecation so that X3D
  implementations are forgiving.  X3dToVrml97.xsl needs to be updated
  to support proper backwards translation automatically.

=============================================================================

---Recheck---

X3D design work completed:
- Removed profile attributes for all nodes.
- Verify all nodes, attributes and relationships using DTD.
- Verify node types against latest interface hierarchy.
- Verify summary of attribute additions relative to VRML 97 specification.
- Verify attribute distribution among node types using SAI version 1.
- Resolve X3DNode and base type relationships and naming conventions.
- Added StringsUrl type to allow further pattern restrictions on
  valid url values, with expectation that further detail needs to be
  specified that is compatible with URNs.  StringsUrl maps to
  VRML 97 MFStrings.
- Multiple interfaces for Anchor, Collision, MovieTexture, TimeSensor:
  have verified there is no native Schema approach available for directly
  indicating multiple simultaneous types.  Thus an otherInterfaces attribute
  is provided in combination with explicit repetition of attributes for
  these other interfaces.  This allows proper autogeneration of multiple
  IDL and API interfaces by XSLT stylesheets.
- Verify there are no other multiple interface nodes.
- Extract tooltips from X3D-Edit to augment annotation->appinfo text.
- Ensure setup and configuration files properly documented and available
  online as part of X3D-Edit distribution.
- VRML 97's Script node Browser class (for values exposed to a browser) is
  being provided via attributes on Scene node (and thus a Scene interface).
  Also need to update DTD, X3D-Edit tooltips profile and X3dToVrml97.xsl
  translation stylesheet.
- Use attributeGroup for any attributes contained in complexType (meaning
  NodeType definitions) so that multiple-interface repetitions can refer to
  the proper attributeGroup rather than explicitly repeating each attribute.
- SceneGraphStructureType interface identifies scene-related nodes that are
  not renderable nodes in the scene graph (X3D, Header, Scene, ROUTE etc.).
- Scene Authoring Interface (SAI) Java bindings for interfaces in
  org/web3d/x3d/sai/SceneAuthoringInterface.java are autogenerated
  from X3dSchemaDraft.xml by BuildInterfacesFromSchema.xsl
- Enumeration types originally converted to Java interfaces, now converted
  into fully functional utility classes.
- Can X3D element be formally designated as root node?  Apparently not,
  according to revised Schema recommendation.  Nevertheless, structured
  relationships of the node typing rules makes X3D the root.  No further
  action required.
- SceneGraphStructureNodeType nodes (X3D, Scene, Header, Prototype* etc.)
  changed from Full profile to either Base or Core profile as appropriate.
- Updated to match final 2001 XML Schema Recommendation revisions.
- Investigate restrictions on use of abstract="true" for element content
  as described in
  http://www.w3.org/2000/05/12-xmlschema-lcissues.html#abstract-types
- Profile renaming:
  Core            to Interchange profile
  CoreInteractive to Interactive profile
  BaseLine        to Immersive   profile
  Full         stays Full        profile, so far
  DisJavaVrml     to DIS         profile
  GeoVrml         to GeoSpatial  profile
- Wrapper tag issues:  http://www.web3D.org/TaskGroups/x3d/ComposingSceneGraphAlternatives.html
- Color:  naming collision between X3DField 'color' and node interface 'Color'
  avoided by distinct naming conventions for field type and field name.
  
=============================================================================

---Recheck---

X3D design work in progress:
- How to identify simple types as X3DField and X3DArrayField?
- Need 2D nodes, new nodes
- Need X3DTexture3DNode?
  Probably keep Extrusion, [Geo]ElevationGrid as X3DGeometryNode
- Need regex patterns for SFVec2d, MFVec2d, SFVec3d, MFVec3d, MFVec3f,
  BoundingBoxSize
- Need constraint or pattern on TriangleFanSet fanCount and
  TriangleStripSet stripCount (3 or more values)
- Need boundary constraint restrictions

- is there some way to apply a restriction that only one child of
  Collision can have containerField="proxy" ?
- Augment H-Anim 1.1 with H-Anim 2001.  Decide if 1.1 can be included
  compatibly (as with DTD).
- Using XSV validator to check the internal consistency of the schema.
- Matching interfaces with org.w3c.dom Element, Attr and Event types.
  Mapping to SAI X3DNode, X3DField and Event respectively.  Under
  evaluation as part of Scene Authoring Interface (SAI) development.
- Add additional type restrictions such as FloatNonNegative etc. ?
  Consider whether this can be codified as further base types or
  included as range restrictions on existing base types.  Challenge
  is getting FloatNonNegative to map to Float externally while still
  providing range-checking of attribute values.
- Can FloatNonNegative pattern restrictions instead be added on a
  localized node-by-node basis?  Probably too verbose, but at least that
  preserves base-type definitions.
- Can deprecations be encoded as allowable options, or alternate/duplicate
  attributes?  Stylesheets can capture and propagate the deprecations if
  consistently defined.
- Can SubstitutionGroup be used for deprecated node labels like
  LOD-level (now LOD-children) and Switch-choice (now Switch-children)?  No.
- Patterns for multifield types need to be completed.
- Establish different namespace scopes using key/keyRef for DEF/USE ID/IDREFs
  (and ROUTE/IS)  inside ProtoDeclare.
- Establish different namespace scopes for node and ProtoDeclare names.
- Update the x3d-compact.dtd to precisely match names used for node types
  (e.g. GroupingNode).
- Add source urls for annotations appinfo/documentation once specification
  addresses are stable.  Initially using VRML 97 specification URLs for
  clarity.  Updating to XLink urls into VRML 200x is the eventual goal.
- Can USE be substituted anywhere?  XML Schema substitutionGroup?  Wildcard?
  Answer:  USE no longer allowed due to type ambiguity, redundancy.
- Insert namespace prefixes (xsd: etc.) once Xeena editing permits.
  See next section of this documentation for example implementation details.
- How do we allow X3D.profileForContainedScene to contain/return an array
  of profileName values?  Must we create a new type profileNameArray?
- Consider optionalAttributes for appropriate fields in Interchange profile nodes
  that are only guaranteed at higher profile levels (or else just annotate them
  and leave optional implementation silent as an implementer choice).
- Is it possible for this schema to differentiate profile-optional attributes
  (e.g. Anchor.target, IndexedFaceSet.convex etc.) in the same way that the
  DTD allows strict or loose checking of different-profile attributes?  This
  is a bit tricky since browsers can optionally support Immersive-related
  attributes even when operating in a Interchange profile mode.
- Relax ROUTE to appear within a scene/prototype, not solely at the end:
  ROUTE is a child node type.
- Interface Base renamed to Base for clarity & consistency
- May 2002:  successfully tested with XML Spy 4.3.  Need to automate
  regression testing for schema-based validation of content suites, a few
  esoteric schema warnings remain from xsqc and xsv.

=============================================================================

Future work with namespaces and 'xsd:' qualifiers for non-X3D schema
elements/datatypes, once software tools are namespace aware:

  xmlns    ="http://www.w3.org/2000/10/XMLSchema"
  xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"
  xmlns:x3d="http://www.web3D.org/TaskGroups/x3d/translation/X3dSchemaDraft.dtd"
  targetNamespace="http://www.web3D.org/TaskGroups/x3d/translation/X3dSchemaDraft.dtd"

DTD processing approach to namespaces:

X3dSchemaDraft.xml entity declaration section (i.e. document subset)
which goes inside the DOCTYPE tag at the top of this schema:

<!DOCTYPE schema
	  PUBLIC "-//W3C//DTD XMLSCHEMA 200102//EN"
	         "http://www.w3.org/2001/XMLSchema.dtd"
[
  <!--	%p - can be overriden in the internal subset of a schema document to
	establish a namespace prefix -->
  <!--	%s - if %p is defined (e.g. as foo:) then you must also define %s as
	the suffix for the appropriate namespace declaration (e.g. :foo) -->
  <!--	reference:  XMLSchema.dtd header comments -->

  <!ENTITY % p 'xsd:'>
  <!ENTITY % s ':xsd'>
]

Caution:  Xeena and JAXP do not yet support document subset or namespaces,
          so the preceding document subset fragment listed here will get
          clobbered if inserted inside DOCTYPE.

=============================================================================
XSV validator server: http://www.w3.org/2001/03/webdata/xsv
Actual schema public ID: -//W3C//DTD XMLSCHEMA 200102//EN
Web address schema DTD:
    http://www.w3.org/2001/XMLSchema.dtd
Local address schema DTD:
    file://localhost/www.web3D.org/TaskGroups/x3d/translation/XMLSchema.dtd
Edited copy X3D schema:
    C:\www.web3D.org\TaskGroups\x3d\translation\X3dSchemaDraftSpy.xsd
Smooth copy X3D schema:
    C:\www.web3D.org\TaskGroups\x3d\translation\X3dSchemaDraft.xml
=============================================================================
]]></xsd:documentation>
	</xsd:annotation>
	<!--======================================================================-->
	<!--List type and other additions to augment Schema simple types. These will probably get directly integrated into the other field types (SFFloat MFFloat etc.). These list types are not included in the SAI interfaces.-->
	<xsd:simpleType name="integerList">
		<xsd:annotation>
			<xsd:appinfo>.</xsd:appinfo>
			<xsd:documentation>integerList is an internal type for creating lists in the schema, not for author use, that may get refactored away in a future version of the X3D schema</xsd:documentation>
		</xsd:annotation>
		<xsd:list itemType="xsd:integer"/>
	</xsd:simpleType>
	<xsd:simpleType name="doubleList">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation>doubleList is an internal type for creating lists in the schema, not for author use, that may get refactored away in a future version of the X3D schema.</xsd:documentation>
		</xsd:annotation>
		<xsd:list itemType="xsd:double"/>
	</xsd:simpleType>
	<xsd:simpleType name="floatList">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation>floatList is an internal type for creating lists in the schema, not for author use, that may get refactored away in a future version of the X3D schema.</xsd:documentation>
		</xsd:annotation>
		<xsd:list itemType="xsd:float"/>
	</xsd:simpleType>
	<!--======================================================================-->
	<!--Several pattern possibilities for urls/URNs are conceivable, perhaps a type definition is preferable, more work is needed.-->
	<xsd:simpleType name="BoundingBoxSize">
		<xsd:annotation>
			<xsd: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.</xsd:appinfo>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/concepts.html#4.6.4">BoundingBoxSize dimensions are non-negative values.  Default value (-1 -1 -1) indicates that no bounding box size has been computed.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="SFVec3f"/>
	</xsd:simpleType>
	<!--======================================================================-->
	<!--Simple types are used as Field types for VRML attributes -->
	<xsd:simpleType name="SFBool">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/fieldsRef.html#SFBool">
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.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:boolean"/>
	</xsd:simpleType>
	<xsd:simpleType name="MFBool">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/fieldsRef.html#SFBool">
MFBool is an array of Boolean values.
Type MFBool was unspecified in the VRML 97 Specification, but nevertheless needed for event utilities and scripting.
Hint: MFBool is useful for defining a series of behavior states using a BooleanSequencer prototype.</xsd:documentation>
		</xsd:annotation>
		<xsd:list itemType="xsd:boolean"/>
	</xsd:simpleType>
	<xsd:simpleType name="SFColor">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/fieldsRef.html#SFColor">Color is equivalent to type SFColor in the VRML 97 Specification.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="((\.[0-9]+|0(\.[0-9]*)?|1(\.[0]*)?) (\.[0-9]+|0(\.[0-9]*)?|1(\.[0]*)?) (\.[0-9]+|0(\.[0-9]*)?|1(\.[0]*)?))?"/>
		</xsd:restriction>
		<!-- <xsd:restriction base="floatList">
			<xsd:length value="3"/>
			<xsd:minInclusive value="0"/>
			<xsd:maxInclusive value="1"/> -->
	</xsd:simpleType>
	<xsd:simpleType name="MFColor">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/fieldsRef.html#SFColor">MFColor is equivalent to type MFColor in the VRML 97 Specification.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="((\.[0-9]+|0(\.[0-9]*)?|1(\.[0]*)?) (\.[0-9]+|0(\.[0-9]*)?|1(\.[0]*)?) (\.[0-9]+|0(\.[0-9]*)?|1(\.[0]*)?)([,]|[ ,])? )*"/>
		</xsd:restriction>
		<!-- <xsd:restriction base="floatList">
			<xsd:minInclusive value="0"/>
			<xsd:maxInclusive value="1"/> -->
	</xsd:simpleType>
	<xsd:simpleType name="SFDouble">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.geovrml.org/1.0/doc/concepts.html">
SFDouble is a double-precision floating-point type.
See GeoVRML 1.0 Recommended Practice, Section 2.3, Limitations Of Single-Precision.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:double"/>
	</xsd:simpleType>
	<xsd:simpleType name="MFDouble">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.geovrml.org/1.0/doc/concepts.html">
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.
SFDouble/MFDouble are analagous to SFDouble/MFDouble using VRML specification nomenclature.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="doubleList"/>
	</xsd:simpleType>
	<xsd:simpleType name="SFFloat">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/fieldsRef.html#SFFloat">
SFFloat is a single-precision floating-point type.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:float"/>
	</xsd:simpleType>
	<xsd:simpleType name="MFFloat">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/fieldsRef.html#SFFloat">
MFFloat is an array of SFFloat values, i.e. a single-precision floating-point array type.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="floatList"/>
	</xsd:simpleType>
	<xsd:simpleType name="SFImage">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/fieldsRef.html#SFImage">
</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:minLength value="4"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="MFImage">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation>MFImage is an array of SFImage values.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:minLength value="4"/>
			<xsd:pattern value="pattern for repeating zero (or more) of three size parameters followed by array of hexadecimal/integer pixel values"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="SFInt32">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/fieldsRef.html#SFInt32">
</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:integer"/>
	</xsd:simpleType>
	<xsd:simpleType name="MFInt32">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/fieldsRef.html#SFInt32">
MFInt32 is an array of Integer values.</xsd:documentation>
		</xsd:annotation>
		<xsd:list itemType="xsd:integer"/>
	</xsd:simpleType>
	<xsd:simpleType name="SFRotation">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/fieldsRef.html#SFRotation">
SFRotation is an axis-angle 4-tuple, indicating X-Y-Z direction plus angle orientation about that axis.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="floatList">
			<xsd:length value="4"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="MFRotation">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/fieldsRef.html#SFRotation">
MFRotation is an array of SFRotation values.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="floatList">
			<xsd:pattern value="empty or pattern for array of float quadruplets"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="SFString">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/fieldsRef.html#SFString">
</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string"/>
	</xsd:simpleType>
	<xsd:simpleType name="MFString">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/fieldsRef.html#SFString">
MFString is an array of SFString values.</xsd:documentation>
		</xsd:annotation>
		<xsd:list itemType="xsd:string"/>
	</xsd:simpleType>
	<xsd:simpleType name="SFTime">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/fieldsRef.html#SFTime"/>
		</xsd:annotation>
		<xsd:restriction base="xsd:integer"/>
		<!-- xsd:time not usable due to different nomenclatures. -->
		<!-- add further bounds on values, -1 or nonnegative. -->
	</xsd:simpleType>
	<xsd:simpleType name="MFTime">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/fieldsRef.html#SFTime">
MFTime is an array of SFTime values.</xsd:documentation>
		</xsd:annotation>
		<xsd:list itemType="xsd:time"/>
	</xsd:simpleType>
	<xsd:simpleType name="SFVec2d">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/fieldsRef.html#SFVec2f">
SFVec2d is a 2-tuple pair of SFDouble values.
Hint: SFVec2d can be used to specify a 2D coordinate.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="floatList">
			<xsd:maxLength value="2"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="MFVec2d">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation>MFVec2d is an array of SFVec2d values.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="floatList"/>
	</xsd:simpleType>
	<xsd:simpleType name="SFVec2f">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/fieldsRef.html#SFVec2f">
SFVec2f is a 2-tuple pair of SFFloat values.
SFVec2f is equivalent to type SFVec2f in the VRML 97 Specification.
Hint: SFVec2f can be used to specify a 2D coordinate.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="floatList">
			<xsd:maxLength value="2"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="MFVec2f">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/fieldsRef.html#SFVec2f">
MFVec2f is an array of SFVec2f values.
MFVec2f is equivalent to type MFVec2f in the VRML 97 Specification.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="floatList"/>
	</xsd:simpleType>
	<xsd:simpleType name="SFVec3d">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.geovrml.org/1.0/doc/concepts.html">
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.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="doubleList">
			<xsd:maxLength value="3"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="MFVec3d">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.geovrml.org/1.0/doc/concepts.html">
MFVec3d is an array of SFVec3d values.
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.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="doubleList"/>
	</xsd:simpleType>
	<xsd:simpleType name="SFVec3f">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/fieldsRef.html#SFVec3f">
SFVec3f is a 3-tuple triplet of SFFloat values.
SFVec3f is equivalent to type SFVec3f in the VRML 97 Specification.
Hint:  SFVec3f can be used to specify a 3D coordinate or a 3D scale value.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="floatList">
			<xsd:maxLength value="3"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="MFVec3f">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/fieldsRef.html#SFVec3f">
MFVec3f is an array of SFVec3f values.
MFVec3f is equivalent to type MFVec3f in the VRML 97 Specification.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="floatList"/>
	</xsd:simpleType>
	<!--======================================================================-->
	<!-- Special range restrictions on regular base types to be provided here -->
	<!--======================================================================-->
	<!--Enumerations-->
	<!--X3DField enumerations are used by field tag-->
	<xsd:simpleType name="fieldTypeName">
		<xsd:annotation>
			<xsd:appinfo> fieldTypeName contains the names of all X3DField types.</xsd:appinfo>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/fieldsRef.html"/>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="SFBool"/>
			<xsd:enumeration value="MFBool"/>
			<xsd:enumeration value="SFColor"/>
			<xsd:enumeration value="MFColor"/>
			<xsd:enumeration value="SFColorRGBA"/>
			<xsd:enumeration value="MFColorRGBA"/>
			<xsd:enumeration value="SFDouble"/>
			<xsd:enumeration value="MFDouble"/>
			<xsd:enumeration value="SFFloat"/>
			<xsd:enumeration value="MFFloat"/>
			<xsd:enumeration value="SFImage"/>
			<xsd:enumeration value="MFImage"/>
			<xsd:enumeration value="SFInt32"/>
			<xsd:enumeration value="MFInt32"/>
			<xsd:enumeration value="SFRotation"/>
			<xsd:enumeration value="MFRotation"/>
			<xsd:enumeration value="SFString"/>
			<xsd:enumeration value="MFString"/>
			<xsd:enumeration value="SFTime"/>
			<xsd:enumeration value="MFTime"/>
			<xsd:enumeration value="SFVec2d"/>
			<xsd:enumeration value="MFVec2d"/>
			<xsd:enumeration value="SFVec2f"/>
			<xsd:enumeration value="MFVec2f"/>
			<xsd:enumeration value="SFVec3d"/>
			<xsd:enumeration value="MFVec3d"/>
			<xsd:enumeration value="SFVec3f"/>
			<xsd:enumeration value="MFVec3f"/>
		</xsd:restriction>
	</xsd:simpleType>
	<!--Profiles correspond primarily to nodes. Some nodes in Interchange profile include fields that are ignored unless Immersive or Full profile is active.-->
	<xsd:simpleType name="profileName">
		<xsd:annotation>
			<xsd: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.</xsd:appinfo>
			<xsd:documentation/>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="Core">
				<xsd:annotation>
					<xsd:appinfo/>
					<xsd:documentation> Core Profile includes no nodes and is available for custom componentization.</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="Interchange">
				<xsd:annotation>
					<xsd:appinfo> Interchange Profile equals the minimum subset of nodes needed to author lightweight compelling content.</xsd:appinfo>
					<xsd:documentation source="http://www.web3d.org/TaskGroups/x3d/specification/part1/coreProfile.html">
</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="Interactive">
				<xsd:annotation>
					<xsd:appinfo> Interactive Profile adds interaction nodes (Anchor, KeySensor) to the minimum subset of nodes needed to author lightweight compelling content.  Interactive also matches corresponding profile in MPEG-4 Amendment 4.</xsd:appinfo>
					<xsd:documentation source="http://www.web3d.org/TaskGroups/x3d/specification/part1/coreProfile.html">
</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="Immersive">
				<xsd:annotation>
					<xsd:appinfo> Immersive Profile equals all of the nodes in the VRML 97 Specification, plus VRML 200x node additions including KeySensor, StringSensor and Scene.</xsd:appinfo>
					<xsd:documentation source="http://www.web3d.org/TaskGroups/x3d/specification">
</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="Extensibility">
				<xsd:annotation>
					<xsd:appinfo> Extensibility Profile may become a choice for lightweight scripting content; includes Interactive Profile plus a few more nodes.  Under development.</xsd:appinfo>
					<xsd:documentation source="http://www.web3d.org/TaskGroups/x3d/specification/part1/coreProfile.html">
</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="Full">
				<xsd:annotation>
					<xsd:appinfo> The Full Profile corresponds to all Immersive VRML
    nodes plus all approved/implemented extensions.  Full may get renamed Integrated.</xsd:appinfo>
					<xsd:documentation source="http://www.web3d.org/TaskGroups/x3d/specification">
</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="networkModeValues">
		<xsd:annotation>
			<xsd:appinfo> networkModeValues are allowed enumeration values for DIS field networkMode.</xsd:appinfo>
			<xsd:documentation/>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="standAlone"/>
			<xsd:enumeration value="networkReader"/>
			<xsd:enumeration value="networkWriter"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="accessTypeNames">
		<xsd:annotation>
			<xsd:appinfo> accessTypeNames are allowed enumeration values for accessType.  Prior names in VRML 97 were eventIn, eventOut, field, exposedField respectively.</xsd:appinfo>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/concepts.html#4.7"/>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="initializeOnly"/>
			<xsd:enumeration value="inputOnly"/>
			<xsd:enumeration value="outputOnly"/>
			<xsd:enumeration value="inputOutput"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="initializeOnlyAccessTypes">
		<xsd:annotation>
			<xsd:appinfo> Table of fields having accessType initializeOnly.</xsd:appinfo>
			<xsd:documentation/>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="bboxCenter"/>
			<xsd:enumeration value="bboxSize"/>
			<xsd:enumeration value="beginCap"/>
			<xsd:enumeration value="bottom"/>
			<xsd:enumeration value="bottomRadius"/>
			<xsd:enumeration value="ccw"/>
			<xsd:enumeration value="child1Url"/>
			<xsd:enumeration value="child2Url"/>
			<xsd:enumeration value="child3Url"/>
			<xsd:enumeration value="child4Url"/>
			<xsd:enumeration value="closureType"/>
			<xsd:enumeration value="colorIndex"/>
			<xsd:enumeration value="colorPerVertex"/>
			<xsd:enumeration value="convex"/>
			<xsd:enumeration value="coordIndex"/>
			<xsd:enumeration value="creaseAngle"/>
			<xsd:enumeration value="crossSection"/>
			<xsd:enumeration value="directOutput"/>
			<xsd:enumeration value="endCap"/>
			<xsd:enumeration value="endAngle"/>
			<xsd:enumeration value="geoGridOrigin"/>
			<xsd:enumeration value="geoSystem"/>
			<xsd:enumeration value="height"/>
			<xsd:enumeration value="horizontal"/>
			<xsd:enumeration value="info"/>
			<xsd:enumeration value="innerRadius"/>
			<xsd:enumeration value="justify"/>
			<xsd:enumeration value="knot"/>
			<xsd:enumeration value="language"/>
			<xsd:enumeration value="leftToRight"/>
			<xsd:enumeration value="lineSegments"/>
			<xsd:enumeration value="mustEvaluate"/>
			<xsd:enumeration value="normalIndex"/>
			<xsd:enumeration value="normalPerVertex"/>
			<xsd:enumeration value="order"/>
			<xsd:enumeration value="outerRadius"/>
			<xsd:enumeration value="orientation"/>
			<xsd:enumeration value="points"/>
			<xsd:enumeration value="radius"/>
			<xsd:enumeration value="range"/>
			<xsd:enumeration value="repeatS"/>
			<xsd:enumeration value="repeatT"/>
			<xsd:enumeration value="rootUrl"/>
			<xsd:enumeration value="rotateYUp"/>
			<xsd:enumeration value="side"/>
			<xsd:enumeration value="size"/>
			<xsd:enumeration value="solid"/>
			<xsd:enumeration value="spacing"/>
			<xsd:enumeration value="spatialize"/>
			<xsd:enumeration value="spine"/>
			<xsd:enumeration value="startAngle"/>
			<xsd:enumeration value="style"/>
			<xsd:enumeration value="title"/>
			<xsd:enumeration value="top"/>
			<xsd:enumeration value="topToBottom"/>
			<xsd:enumeration value="xDimension"/>
			<xsd:enumeration value="xSpacing"/>
			<xsd:enumeration value="zDimension"/>
			<xsd:enumeration value="zSpacing"/>
			<xsd:enumeration value="uDimension"/>
			<xsd:enumeration value="vDimension"/>
			<xsd:enumeration value="wDimension"/>
			<xsd:enumeration value="uKnot"/>
			<xsd:enumeration value="vKnot"/>
			<xsd:enumeration value="wKnot"/>
			<xsd:enumeration value="uOrder"/>
			<xsd:enumeration value="vOrder"/>
			<xsd:enumeration value="wOrder"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="inputOnlyAccessTypes">
		<xsd:annotation>
			<xsd:appinfo> Table of fields having accessType inputOnly.</xsd:appinfo>
			<xsd:documentation/>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="set_articulationParameterValue0"/>
			<xsd:enumeration value="set_articulationParameterValue1"/>
			<xsd:enumeration value="set_articulationParameterValue2"/>
			<xsd:enumeration value="set_articulationParameterValue3"/>
			<xsd:enumeration value="set_articulationParameterValue4"/>
			<xsd:enumeration value="set_articulationParameterValue5"/>
			<xsd:enumeration value="set_articulationParameterValue6"/>
			<xsd:enumeration value="set_articulationParameterValue7"/>
			<xsd:enumeration value="set_boolean"/>
			<xsd:enumeration value="set_bind"/>
			<xsd:enumeration value="set_colorIndex"/>
			<xsd:enumeration value="set_coordIndex"/>
			<xsd:enumeration value="set_crossSection"/>
			<xsd:enumeration value="set_fraction"/>
			<xsd:enumeration value="set_height"/>
			<xsd:enumeration value="set_normalIndex"/>
			<xsd:enumeration value="set_orientation"/>
			<xsd:enumeration value="set_position"/>
			<xsd:enumeration value="set_scale"/>
			<xsd:enumeration value="set_spine"/>
			<xsd:enumeration value="set_texCoordIndex"/>
			<xsd:enumeration value="set_triggerTime"/>
			<xsd:enumeration value="set_yScale"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="outputOnlyAccessTypes">
		<xsd:annotation>
			<xsd:appinfo> Table of fields having accessType outputOnly.</xsd:appinfo>
			<xsd:documentation/>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="actionKeyPress"/>
			<xsd:enumeration value="actionKeyRelease"/>
			<xsd:enumeration value="altKey"/>
			<xsd:enumeration value="articulationParameterValue0_changed"/>
			<xsd:enumeration value="articulationParameterValue1_changed"/>
			<xsd:enumeration value="articulationParameterValue2_changed"/>
			<xsd:enumeration value="articulationParameterValue3_changed"/>
			<xsd:enumeration value="articulationParameterValue4_changed"/>
			<xsd:enumeration value="articulationParameterValue5_changed"/>
			<xsd:enumeration value="articulationParameterValue6_changed"/>
			<xsd:enumeration value="articulationParameterValue7_changed"/>
			<xsd:enumeration value="bindTime"/>
			<xsd:enumeration value="centerOfRotation_changed"/>
			<xsd:enumeration value="collideTime"/>
			<xsd:enumeration value="controlKey"/>
			<xsd:enumeration value="cycleTime"/>
			<xsd:enumeration value="detonateTime"/>
			<xsd:enumeration value="duration_changed"/>
			<xsd:enumeration value="elapsedTime"/>
			<xsd:enumeration value="enteredText"/>
			<xsd:enumeration value="enterTime"/>
			<xsd:enumeration value="exitTime"/>
			<xsd:enumeration value="finalText"/>
			<xsd:enumeration value="firedTime"/>
			<xsd:enumeration value="fraction_changed"/>
			<xsd:enumeration value="geovalue_changed"/>
			<xsd:enumeration value="hitGeoCoord_changed"/>
			<xsd:enumeration value="hitNormal_changed"/>
			<xsd:enumeration value="hitPoint_changed"/>
			<xsd:enumeration value="hitTexCoord_changed"/>
			<xsd:enumeration value="inputFalse"/>
			<xsd:enumeration value="inputNegate"/>
			<xsd:enumeration value="inputTrue"/>
			<xsd:enumeration value="isActive"/>
			<xsd:enumeration value="isBound"/>
			<xsd:enumeration value="isCollided"/>
			<xsd:enumeration value="isDetonated"/>
			<xsd:enumeration value="isLoaded"/>
			<xsd:enumeration value="isOver"/>
			<xsd:enumeration value="isPaused"/>
			<xsd:enumeration value="isNetworkReader"/>
			<xsd:enumeration value="isNetworkWriter"/>
			<xsd:enumeration value="isRtpHeaderHeard"/>
			<xsd:enumeration value="isStandAlone"/>
			<xsd:enumeration value="keyPress"/>
			<xsd:enumeration value="keyRelease"/>
			<xsd:enumeration value="loadTime"/>
			<xsd:enumeration value="next"/>
			<xsd:enumeration value="orientation_changed"/>
			<xsd:enumeration value="position_changed"/>
			<xsd:enumeration value="previous"/>
			<xsd:enumeration value="progress"/>
			<xsd:enumeration value="rotation_changed"/>
			<xsd:enumeration value="rtpHeaderHeard"/>
			<xsd:enumeration value="shiftKey"/>
			<xsd:enumeration value="time"/>
			<xsd:enumeration value="timestamp"/>
			<xsd:enumeration value="touchTime"/>
			<xsd:enumeration value="trackPoint_changed"/>
			<xsd:enumeration value="translation_changed"/>
			<xsd:enumeration value="triggerTime"/>
			<xsd:enumeration value="triggerTrue"/>
			<xsd:enumeration value="triggerValue"/>
			<xsd:enumeration value="value_changed"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="inputOutputAccessTypes">
		<xsd:annotation>
			<xsd:appinfo> Table of fields having accessType inputOutput.</xsd:appinfo>
			<xsd:documentation/>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="address"/>
			<xsd:enumeration value="alpha"/>
			<xsd:enumeration value="ambientIntensity"/>
			<xsd:enumeration value="antennaLocation"/>
			<xsd:enumeration value="applicationID"/>
			<xsd:enumeration value="relativeAntennaLocation"/>
			<xsd:enumeration value="antennaPatternType"/>
			<xsd:enumeration value="antennaPatternLength"/>
			<xsd:enumeration value="articulationParameterArray"/>
			<xsd:enumeration value="articulationParameterChangeIndicatorArray"/>
			<xsd:enumeration value="articulationParameterCount"/>
			<xsd:enumeration value="articulationParameterDesignatorArray"/>
			<xsd:enumeration value="articulationParameterIdPartAttachedArray"/>
			<xsd:enumeration value="articulationParameterTypeArray"/>
			<xsd:enumeration value="attenuation"/>
			<xsd:enumeration value="autoOffset"/>
			<xsd:enumeration value="avatarSize"/>
			<xsd:enumeration value="axisOfRotation"/>
			<xsd:enumeration value="backUrl"/>
			<xsd:enumeration value="bottomUrl"/>
			<xsd:enumeration value="beamWidth"/>
			<xsd:enumeration value="bottomUrl"/>
			<xsd:enumeration value="center"/>
			<xsd:enumeration value="centerOfMass"/>
			<xsd:enumeration value="centerOfRotation"/>
			<xsd:enumeration value="color"/>
			<xsd:enumeration value="controlPoint"/>
			<xsd:enumeration value="coord"/>
			<xsd:enumeration value="cryptoSystem"/>
			<xsd:enumeration value="cryptoKeyID"/>
			<xsd:enumeration value="cutOffAngle"/>
			<xsd:enumeration value="cycleInterval"/>
			<xsd:enumeration value="data"/>
			<xsd:enumeration value="dataLength"/>
			<xsd:enumeration value="deadReckoning"/>
			<xsd:enumeration value="deletionAllowed"/>
			<xsd:enumeration value="description"/>
			<xsd:enumeration value="detonationLocation"/>
			<xsd:enumeration value="detonationRelativeLocation"/>
			<xsd:enumeration value="detonationResult"/>
			<xsd:enumeration value="dimension"/>
			<xsd:enumeration value="diffuseColor"/>
			<xsd:enumeration value="direction"/>
			<xsd:enumeration value="diskAngle"/>
			<xsd:enumeration value="displacers"/>
			<xsd:enumeration value="displacements"/>
			<xsd:enumeration value="emissiveColor"/>
			<xsd:enumeration value="enabled"/>
			<xsd:enumeration value="encodingScheme"/>
			<xsd:enumeration value="entityID"/>
			<xsd:enumeration value="entityKind"/>
			<xsd:enumeration value="entityDomain"/>
			<xsd:enumeration value="entityCountry"/>
			<xsd:enumeration value="entityCategory"/>
			<xsd:enumeration value="entitySubCategory"/>
			<xsd:enumeration value="entitySpecific"/>
			<xsd:enumeration value="entityExtra"/>
			<xsd:enumeration value="eventApplicationID"/>
			<xsd:enumeration value="eventEntityID"/>
			<xsd:enumeration value="eventSiteID"/>
			<xsd:enumeration value="eventNumber"/>
			<xsd:enumeration value="family"/>
			<xsd:enumeration value="fanCount"/>
			<xsd:enumeration value="fieldOfView"/>
			<xsd:enumeration value="fillStyle"/>
			<xsd:enumeration value="fired1"/>
			<xsd:enumeration value="fired2"/>
			<xsd:enumeration value="fireMissionIndex"/>
			<xsd:enumeration value="firingRange"/>
			<xsd:enumeration value="firingRate"/>
			<xsd:enumeration value="fogType"/>
			<xsd:enumeration value="forceID"/>
			<xsd:enumeration value="fractionAbsolute"/>
			<xsd:enumeration value="frequency"/>
			<xsd:enumeration value="frontUrl"/>
			<xsd:enumeration value="function"/>
			<xsd:enumeration value="fuse"/>
			<xsd:enumeration value="geoCoords"/>
			<xsd:enumeration value="groundColor"/>
			<xsd:enumeration value="groundAngle"/>
			<xsd:enumeration value="hatchColor"/>
			<xsd:enumeration value="hatchStyle"/>
			<xsd:enumeration value="headlight"/>
			<xsd:enumeration value="image"/>
			<xsd:enumeration value="info"/>
			<xsd:enumeration value="inputSource"/>
			<xsd:enumeration value="intensity"/>
			<xsd:enumeration value="isFilled"/>
			<xsd:enumeration value="key"/>
			<xsd:enumeration value="jump"/>
			<xsd:enumeration value="keyValue"/>
			<xsd:enumeration value="keyWeight"/>
			<xsd:enumeration value="leftUrl"/>
			<xsd:enumeration value="length"/>
			<xsd:enumeration value="lengthOfModulationParameters"/>
			<xsd:enumeration value="limitOrientation"/>
			<xsd:enumeration value="llimit"/>
			<xsd:enumeration value="linearAcceleration"/>
			<xsd:enumeration value="linearVelocity"/>
			<xsd:enumeration value="lineStyle"/>
			<xsd:enumeration value="lineWidthScaleFactor"/>
			<xsd:enumeration value="load"/>
			<xsd:enumeration value="location"/>
			<xsd:enumeration value="loop"/>
			<xsd:enumeration value="marking"/>
			<xsd:enumeration value="mass"/>
			<xsd:enumeration value="maxAngle"/>
			<xsd:enumeration value="maxBack"/>
			<xsd:enumeration value="maxExtent"/>
			<xsd:enumeration value="maxFront"/>
			<xsd:enumeration value="maxPosition"/>
			<xsd:enumeration value="minAngle"/>
			<xsd:enumeration value="minBack"/>
			<xsd:enumeration value="minFront"/>
			<xsd:enumeration value="minPosition"/>
			<xsd:enumeration value="mode"/>
			<xsd:enumeration value="modulationTypeSpreadSpectrum"/>
			<xsd:enumeration value="modulationTypeMajor"/>
			<xsd:enumeration value="modulationTypeDetail"/>
			<xsd:enumeration value="modulationTypeSystem"/>
			<xsd:enumeration value="momentsOfInertia"/>
			<xsd:enumeration value="multicastRelayHost"/>
			<xsd:enumeration value="multicastRelayPort"/>
			<xsd:enumeration value="munitionEndPoint"/>
			<xsd:enumeration value="munitionStartPoint"/>
			<xsd:enumeration value="munitionApplicationID"/>
			<xsd:enumeration value="munitionEntityID"/>
			<xsd:enumeration value="munitionSiteID"/>
			<xsd:enumeration value="munitionQuantity"/>
			<xsd:enumeration value="name"/>
			<xsd:enumeration value="navType"/>
			<xsd:enumeration value="networkMode"/>
			<xsd:enumeration value="normal"/>
			<xsd:enumeration value="offset"/>
			<xsd:enumeration value="on"/>
			<xsd:enumeration value="pauseTime"/>
			<xsd:enumeration value="parameter"/>
			<xsd:enumeration value="pitch"/>
			<xsd:enumeration value="point"/>
			<xsd:enumeration value="port"/>
			<xsd:enumeration value="position"/>
			<xsd:enumeration value="power"/>
			<xsd:enumeration value="priority"/>
			<xsd:enumeration value="radioID"/>
			<xsd:enumeration value="radioEntityTypeKind"/>
			<xsd:enumeration value="radioEntityTypeDomain"/>
			<xsd:enumeration value="radioEntityTypeCountry"/>
			<xsd:enumeration value="radioEntityTypeCategory"/>
			<xsd:enumeration value="radioEntityTypeNomenclature"/>
			<xsd:enumeration value="radioEntityTypeNomenclatureVersion"/>
			<xsd:enumeration value="readInterval"/>
			<xsd:enumeration value="receivedPower"/>
			<xsd:enumeration value="receiverState"/>
			<xsd:enumeration value="resumeTime"/>
			<xsd:enumeration value="rightUrl"/>
			<xsd:enumeration value="rotation"/>
			<xsd:enumeration value="rtpHeaderExpected"/>
			<xsd:enumeration value="sampleRate"/>
			<xsd:enumeration value="samples"/>
			<xsd:enumeration value="scale"/>
			<xsd:enumeration value="scaleOrientation"/>
			<xsd:enumeration value="shininess"/>
			<xsd:enumeration value="siteID"/>
			<xsd:enumeration value="skinCoordIndex"/>
			<xsd:enumeration value="skinCoordWeight"/>
			<xsd:enumeration value="skyColor"/>
			<xsd:enumeration value="skyAngle"/>
			<xsd:enumeration value="source"/>
			<xsd:enumeration value="specularColor"/>
			<xsd:enumeration value="speed"/>
			<xsd:enumeration value="startTime"/>
			<xsd:enumeration value="stiffness"/>
			<xsd:enumeration value="stopTime"/>
			<xsd:enumeration value="string"/>
			<xsd:enumeration value="stripCount"/>
			<xsd:enumeration value="summary"/>
			<xsd:enumeration value="tdlType"/>
			<xsd:enumeration value="tessellation"/>
			<xsd:enumeration value="tessellationScale"/>
			<xsd:enumeration value="texCoord"/>
			<xsd:enumeration value="timeout"/>
			<xsd:enumeration value="toggle"/>
			<xsd:enumeration value="topUrl"/>
			<xsd:enumeration value="translation"/>
			<xsd:enumeration value="transmitFrequencyBandwidth"/>
			<xsd:enumeration value="transmitState"/>
			<xsd:enumeration value="transmitterApplicationID"/>
			<xsd:enumeration value="transmitterEntityID"/>
			<xsd:enumeration value="transmitterRadioID"/>
			<xsd:enumeration value="transmitterSiteID"/>
			<xsd:enumeration value="transparent"/>
			<xsd:enumeration value="transparency"/>
			<xsd:enumeration value="type"/>
			<xsd:enumeration value="ulimit"/>
			<xsd:enumeration value="url"/>
			<xsd:enumeration value="uTessellation"/>
			<xsd:enumeration value="version"/>
			<xsd:enumeration value="vector"/>
			<xsd:enumeration value="vertices"/>
			<xsd:enumeration value="visibilityLimit"/>
			<xsd:enumeration value="visibilityRange"/>
			<xsd:enumeration value="vTessellation"/>
			<xsd:enumeration value="warhead"/>
			<xsd:enumeration value="weight"/>
			<xsd:enumeration value="whichChoice"/>
			<xsd:enumeration value="whichGeometry"/>
			<xsd:enumeration value="writeInterval"/>
		</xsd:restriction>
	</xsd:simpleType>
	<!--Wrapper tags: these already appear to be handled implicitly by element names and ContainedNodeLabel in content model.
	enumeration vrmlNodeFieldNames is perhaps useful as a convenience enumeration showing what element tags are ignorable.
	Probably won't be needed, commented out:
  <xsd:simpleType name="vrmlNodeFieldNames">
    <xsd:annotation>
      <xsd:appinfo></xsd:appinfo>
      <xsd:documentation source="http://www.web3D.org/TaskGroups/x3d/translation/ComposingSceneGraphAlternatives.html"/>
    </xsd:annotation>
    <xsd:restriction base="xsd:string">
     <xsd:enumeration value="appearance"/>
     <xsd:enumeration value="children"/>
     <xsd:enumeration value="choice"/>
     <xsd:enumeration value="color"/>
     <xsd:enumeration value="coord"/>
     <xsd:enumeration value="fontStyle"/>
     <xsd:enumeration value="geometry"/>
     <xsd:enumeration value="level"/>
     <xsd:enumeration value="material"/>
     <xsd:enumeration value="normal"/>
     <xsd:enumeration value="proxy"/>
     <xsd:enumeration value="source"/>
     <xsd:enumeration value="texCoord"/>
     <xsd:enumeration value="texture"/>
     <xsd:enumeration value="textureTransform"/>
   </xsd:restriction>
  </xsd:simpleType>
  -->
	<!--======================================================================-->
	<!--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.-->
	<xsd:attributeGroup name="DEF_USE">
		<xsd:attribute name="DEF" type="xsd:ID">
			<xsd:annotation>
				<xsd:appinfo/>
				<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/concepts.html#4.6.2"/>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="USE" type="xsd:IDREF">
			<xsd:annotation>
				<xsd:appinfo/>
				<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/concepts.html#4.6.2"/>
			</xsd:annotation>
		</xsd:attribute>
	</xsd:attributeGroup>
	<xsd:attributeGroup name="globalAttributes">
		<!--
		<xsd:attribute name="class" type="xsd:NMTOKEN">
			<xsd:annotation>
				<xsd:appinfo/>
				<xsd:documentation/>
			</xsd:annotation>
		</xsd:attribute>
	-->
		<!--
		<xsd:attribute name="containerField" type="xsd:NMTOKEN">
			<xsd:annotation>
				<xsd:appinfo/>
				<xsd:documentation/>
			</xsd:annotation>
		</xsd:attribute>
		-->
	</xsd:attributeGroup>
	<!--======================================================================-->
	<!--Complex types-->
	<!--Should all abstract node types be made final? This issue pertains to run-time extensibility modifications to the SAI API...-->
	<xsd:complexType name="X3DAppearanceNode" abstract="false" mixed="false">
		<xsd:annotation>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/concepts.html#4.6.3.3"/>
		</xsd:annotation>
		<xsd:complexContent mixed="false">
			<xsd:extension base="X3DNode">
				<xsd:group ref="AppearanceChildContentModel" minOccurs="0"/>
				<xsd:attribute name="containerField" type="xsd:NMTOKEN" default="appearance"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="X3DAppearanceChildNode" abstract="true" mixed="false">
		<xsd:annotation>
			<xsd:appinfo> Nodes of this type can be used as child nodes for Appearance.</xsd:appinfo>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/concepts.html#4.6.3.3"/>
		</xsd:annotation>
		<xsd:complexContent mixed="false">
			<xsd:extension base="X3DNode"/>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="X3DArrayField" abstract="true" mixed="false">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/fieldsRef.html#5.1.2">X3DArrayField is equivalent to MF (Multiple Field) simple non-Node types in the VRML 97 Specification.</xsd:documentation>
		</xsd:annotation>
		<xsd:complexContent mixed="false">
			<xsd:extension base="X3DField"/>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="X3DBackgroundNode" abstract="true" mixed="false">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation/>
		</xsd:annotation>
		<xsd:complexContent mixed="false">
			<xsd:extension base="X3DBindableNode">
				<xsd:attribute name="groundAngle" type="MFFloat"/>
				<xsd:attribute name="groundColor" type="MFColor"/>
				<xsd:attribute name="skyAngle" type="MFFloat"/>
				<xsd:attribute name="skyColor" type="MFColor"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="X3DBindableNode" abstract="true" mixed="false">
		<xsd:annotation>
			<xsd:appinfo> Bindable nodes implement the binding stack, so that only one of each node type is active at a given time.</xsd:appinfo>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/concepts.html#4.6.10"/>
		</xsd:annotation>
		<xsd:complexContent mixed="false">
			<xsd:extension base="X3DChildNode">
				<xsd:attribute name="set_bind" type="SFBool"/>
				<xsd:attribute name="bindTime" type="SFTime"/>
				<xsd:attribute name="isBound" type="SFBool"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="X3DBoundedObject" abstract="true" mixed="false">
		<xsd:annotation>
			<xsd: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.</xsd:appinfo>
			<xsd:documentation source="http://www.web3d.org/TaskGroups/x3d/X3DSpec_FCD/Part01/components/group.html#X3DBoundedObject"/>
		</xsd:annotation>
		<xsd:attribute name="bboxCenter" type="SFVec3f" default="0 0 0"/>
		<xsd:attribute name="bboxSize" type="BoundingBoxSize" default="-1 -1 -1"/>
	</xsd:complexType>
	<xsd:complexType name="X3DChildNode" abstract="true" mixed="false">
		<xsd:annotation>
			<xsd:appinfo> A node that implements X3DChildNode is one of the legal children for a X3DGroupingNode parent.</xsd:appinfo>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/concepts.html#4.6.5"/>
		</xsd:annotation>
		<xsd:complexContent mixed="false">
			<xsd:extension base="X3DNode">
				<xsd:attribute name="containerField" type="xsd:NMTOKEN" default="children"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="X3DColorNode" abstract="true" mixed="false">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation/>
		</xsd:annotation>
		<xsd:complexContent mixed="false">
			<xsd:extension base="X3DGeometricPropertyNode">
				<xsd:attribute name="containerField" type="xsd:NMTOKEN" default="color"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="X3DCoordinateNode" abstract="true" mixed="false">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation/>
		</xsd:annotation>
		<xsd:complexContent mixed="false">
			<xsd:extension base="X3DGeometricPropertyNode">
				<xsd:attribute name="containerField" type="xsd:NMTOKEN" default="coord"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="X3DDragSensorNode" abstract="true" mixed="false">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/concepts.html#4.6.7.4"/>
		</xsd:annotation>
		<xsd:complexContent mixed="false">
			<xsd:extension base="X3DPointingDeviceSensorNode">
				<xsd:attribute name="autoOffset" type="SFBool"/>
				<xsd:attribute name="trackPoint_changed" type="SFVec3f"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="X3DEnvironmentalSensorNode" abstract="true" mixed="false">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/concepts.html#4.6.7.2"/>
		</xsd:annotation>
		<xsd:complexContent mixed="false">
			<xsd:extension base="X3DSensorNode"/>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="X3DField" abstract="true" mixed="false">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/fieldsRef.html#5.1.2">X3DField is equivalent to SF (Single Field) simple non-Node types in the VRML 97 Specification.</xsd:documentation>
		</xsd:annotation>
	</xsd:complexType>
	<xsd:complexType name="X3DFontStyleNode" abstract="true" mixed="false">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation/>
		</xsd:annotation>
		<xsd:complexContent mixed="false">
			<xsd:extension base="X3DNode">
				<xsd:attribute name="containerField" type="xsd:NMTOKEN" default="fontStyle"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="X3DComposedGeometryNode" abstract="true" mixed="false">
		<xsd:annotation>
			<xsd:appinfo> Composed geometry nodes produce renderable geometry, can contain Color Coordinate Normal TextureCoordinate, and are contained by a Shape node.</xsd:appinfo>
			<xsd:documentation/>
		</xsd:annotation>
		<xsd:complexContent mixed="false">
			<xsd:extension base="X3DGeometryNode">
				<xsd:group ref="ColorCoordinateNormalTexCoordContentModel" minOccurs="0"/>
				<xsd:attribute name="ccw" type="SFBool" default="true"/>
				<xsd:attribute name="colorPerVertex" type="SFBool" default="true"/>
				<xsd:attribute name="normalPerVertex" type="SFBool" default="true"/>
				<xsd:attribute name="solid" type="SFBool" default="true"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="X3DGeometryNode" abstract="true" mixed="false">
		<xsd:annotation>
			<xsd:appinfo> Geometry nodes produce renderable geometry and are contained by a Shape node.</xsd:appinfo>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/concepts.html#4.6.3.2"/>
		</xsd:annotation>
		<xsd:complexContent mixed="false">
			<xsd:extension base="X3DNode">
				<xsd:attribute name="containerField" type="xsd:NMTOKEN" default="geometry"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="X3DGeometricPropertyNode" abstract="true" mixed="false">
		<xsd:complexContent mixed="false">
			<xsd:extension base="X3DNode"/>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="X3DGroupingNode" abstract="true" mixed="false">
		<xsd:annotation>
			<xsd:appinfo> Grouping nodes can contain other nodes as children, thus making up the backbone of a scene graph.</xsd:appinfo>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/concepts.html#4.6.5"/>
		</xsd:annotation>
		<xsd:complexContent mixed="false">
			<xsd:extension base="X3DChildNode">
				<xsd:group ref="GroupingNodeChildContentModel" minOccurs="0"/>
				<xsd:attribute name="otherInterfaces" type="xsd:string" fixed="X3DBoundedObject"/>
				<xsd:attribute name="bboxCenter" type="SFVec3f" default="0 0 0"/>
				<xsd:attribute name="bboxSize" type="BoundingBoxSize" default="-1 -1 -1"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="X3DInfoNode" abstract="true" mixed="true">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation/>
		</xsd:annotation>
		<xsd:complexContent mixed="true">
			<xsd:extension base="X3DChildNode"/>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="X3DInterpolatorNode" abstract="true" mixed="false">
		<xsd:annotation>
			<xsd: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.</xsd:appinfo>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/concepts.html#4.6.8"/>
		</xsd:annotation>
		<xsd:complexContent mixed="false">
			<xsd:extension base="X3DChildNode">
				<xsd:attribute name="set_fraction" type="SFFloat"/>
				<xsd:attribute name="key" type="MFFloat"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="X3DKeyDeviceSensorNode" abstract="true" mixed="false">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation/>
		</xsd:annotation>
		<xsd:complexContent mixed="false">
			<xsd:extension base="X3DSensorNode"/>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="X3DLightNode" abstract="true" mixed="false">
		<xsd:annotation>
			<xsd:appinfo> Light nodes provide illumination for rendering geometry in the scene.</xsd:appinfo>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/concepts.html#4.6.6"/>
		</xsd:annotation>
		<xsd:complexContent mixed="false">
			<xsd:extension base="X3DChildNode">
				<xsd:attribute name="ambientIntensity" type="SFFloat"/>
				<xsd:attribute name="color" type="SFColor"/>
				<xsd:attribute name="intensity" type="SFFloat"/>
				<xsd:attribute name="on" type="SFBool"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="X3DMaterialNode" abstract="true" mixed="false">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation/>
		</xsd:annotation>
		<xsd:complexContent mixed="false">
			<xsd:extension base="X3DAppearanceChildNode">
				<xsd:attribute name="containerField" type="xsd:NMTOKEN" default="material"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="X3DNetworkSensorNode" abstract="true" mixed="false">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/concepts.html#4.6.7.2"/>
		</xsd:annotation>
		<xsd:complexContent mixed="false">
			<xsd:extension base="X3DSensorNode"/>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="X3DNode" abstract="true" mixed="false">
		<xsd:annotation>
			<xsd:appinfo>All instantiable nodes implement X3DNode, which corresponds to SFNode in the VRML 97 specification.</xsd:appinfo>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/java.html#SFNodeClass"/>
		</xsd:annotation>
		<xsd:attributeGroup ref="DEF_USE"/>
		<xsd:attributeGroup ref="globalAttributes"/>
		<xsd:attribute name="class" type="xsd:string"/>
		<!-- complexContent, extension/restriction not used since X3DNode is a top-level node type -->
	</xsd:complexType>
	<xsd:complexType name="X3DNodeArray" abstract="true" mixed="false">
		<xsd:annotation>
			<xsd:appinfo> X3DNodeArray corresponds to MFNode in the VRML 97 specification.</xsd:appinfo>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/java.html#MFNodeClass"/>
		</xsd:annotation>
		<xsd:complexContent mixed="false">
			<xsd:extension base="X3DArrayField"/>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="X3DNormalNode" abstract="true" mixed="false">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation/>
		</xsd:annotation>
		<xsd:complexContent mixed="false">
			<xsd:extension base="X3DGeometricPropertyNode">
				<xsd:attribute name="containerField" type="xsd:NMTOKEN" default="normal"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="X3DParametricGeometryNode" abstract="true" mixed="false">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation/>
		</xsd:annotation>
		<xsd:complexContent mixed="false">
			<xsd:extension base="X3DGeometryNode"/>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="X3DPointingDeviceSensorNode" abstract="true" mixed="false">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/concepts.html#4.6.7.3"/>
		</xsd:annotation>
		<xsd:complexContent mixed="false">
			<xsd:extension base="X3DSensorNode"/>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="X3DPrototypeInstanceNode" abstract="true" mixed="false">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation/>
		</xsd:annotation>
		<xsd:complexContent mixed="false">
			<xsd:extension base="X3DNode"/>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="X3DScriptNode" abstract="true" mixed="true">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/concepts.html#4.12"/>
		</xsd:annotation>
		<xsd:complexContent mixed="true">
			<xsd:extension base="X3DChildNode">
				<xsd:sequence minOccurs="0" maxOccurs="unbounded">
					<xsd:element ref="field"/>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="X3DSensorNode" abstract="true" mixed="false">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/concepts.html#4.6.7"/>
		</xsd:annotation>
		<xsd:complexContent mixed="false">
			<xsd:extension base="X3DChildNode">
				<xsd:attribute name="enabled" type="SFBool" default="true"/>
				<xsd:attribute name="isActive" type="SFBool"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="X3DSequencerNode" abstract="true" mixed="false">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3d.org/TaskGroups/x3d/X3DSpec_FCD/Part01/components/utils.html#X3DSequencerNode"/>
		</xsd:annotation>
		<xsd:complexContent mixed="false">
			<xsd:extension base="X3DChildNode">
				<xsd:attribute name="set_fraction" type="SFFloat"/>
				<xsd:attribute name="key" type="MFFloat"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="X3DShapeNode" abstract="true" mixed="false">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation/>
		</xsd:annotation>
		<xsd:complexContent mixed="false">
			<xsd:extension base="X3DChildNode">
				<xsd:group ref="ShapeChildContentModel" minOccurs="0"/>
				<xsd:attribute name="otherInterfaces" type="xsd:string" fixed="X3DBoundedObject"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="X3DSoundNode" abstract="true" mixed="false">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation/>
		</xsd:annotation>
		<xsd:complexContent mixed="false">
			<xsd:extension base="X3DChildNode">
				<xsd:group ref="SoundChildContentModel" minOccurs="0"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="X3DSoundSourceNode" abstract="true" mixed="false">
		<xsd:annotation>
			<xsd:appinfo>Nodes implementing X3DSoundSourceNode are allowed children of Sound node</xsd:appinfo>
			<xsd:documentation source="http://www.web3d.org/TaskGroups/x3d/X3DSpec_FCD/Part01/components/sound.html#X3DSoundSourceNode"/>
		</xsd:annotation>
		<xsd:complexContent mixed="false">
			<xsd:extension base="X3DTimeDependentNode">
				<xsd:attribute name="description" type="SFString"/>
				<xsd:attribute name="pitch" type="SFFloat"/>
				<xsd:attribute name="url" type="MFString"/>
				<xsd:attribute name="duration_changed" type="SFFloat"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="X3DTextureNode" abstract="true" mixed="false">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation/>
		</xsd:annotation>
		<xsd:complexContent mixed="false">
			<xsd:extension base="X3DAppearanceChildNode">
				<xsd:attribute name="containerField" type="xsd:NMTOKEN" default="texture"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="X3DTexture2DNode" abstract="true" mixed="false">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3d.org/TaskGroups/x3d/X3DSpec_FCD/Part01/components/texturing.html#X3DTextureNode"/>
		</xsd:annotation>
		<xsd:complexContent mixed="false">
			<xsd:extension base="X3DTextureNode">
				<xsd:attribute name="repeatS" type="SFBool"/>
				<xsd:attribute name="repeatT" type="SFBool"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="X3DTextureCoordinateNode" abstract="true" mixed="false">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation/>
		</xsd:annotation>
		<xsd:complexContent mixed="false">
			<xsd:extension base="X3DGeometricPropertyNode">
				<xsd:attribute name="containerField" type="xsd:NMTOKEN" default="texcoord"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="X3DTextureTransformNode" abstract="true" mixed="false">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation/>
		</xsd:annotation>
		<xsd:complexContent mixed="false">
			<xsd:extension base="X3DAppearanceChildNode">
				<xsd:attribute name="containerField" type="xsd:NMTOKEN" default="textureTransform"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="X3DTextureTransform2DNode" abstract="true" mixed="false">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation/>
		</xsd:annotation>
		<xsd:complexContent mixed="false">
			<xsd:extension base="X3DTextureTransformNode">
				<xsd:attribute name="center" type="SFVec2f"/>
				<xsd:attribute name="rotation" type="SFFloat"/>
				<xsd:attribute name="scale" type="SFVec2f"/>
				<xsd:attribute name="translation" type="SFVec2f"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="X3DTimeDependentNode" abstract="true" mixed="false">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation/>
		</xsd:annotation>
		<xsd:complexContent mixed="false">
			<xsd:extension base="X3DChildNode">
				<xsd:attribute name="elapsedTime" type="SFTime"/>
				<xsd:attribute name="isActive" type="SFBool"/>
				<xsd:attribute name="isPaused" type="SFBool"/>
				<xsd:attribute name="loop" type="SFBool" default="false"/>
				<xsd:attribute name="pauseTime" type="SFTime" default="0"/>
				<xsd:attribute name="resumeTime" type="SFTime" default="0"/>
				<xsd:attribute name="startTime" type="SFTime" default="0"/>
				<xsd:attribute name="stopTime" type="SFTime" default="0"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="X3DTouchSensorNode" abstract="true" mixed="false">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation/>
		</xsd:annotation>
		<xsd:complexContent mixed="false">
			<xsd:extension base="X3DPointingDeviceSensorNode">
				<xsd:attribute name="isOver" type="SFBool"/>
				<xsd:attribute name="touchTime" type="SFTime"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="X3DTriggerNode" abstract="true" mixed="false">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3d.org/TaskGroups/x3d/X3DSpec_FCD/Part01/components/utils.html#X3DTriggerNode"/>
		</xsd:annotation>
		<xsd:complexContent mixed="false">
			<xsd:extension base="X3DChildNode"/>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="X3DUrlObject" abstract="true" mixed="false">
		<xsd:annotation>
			<xsd:appinfo> X3DUrlObject indicates that a node has content loaded from a URL and can be tracked via a LoadSensor.
			</xsd:appinfo>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/concepts.html#4.6.4"/>
		</xsd:annotation>
		<xsd:attribute name="url" type="MFString"/>
	</xsd:complexType>
	<!-- still needed? -->
	<xsd:complexType name="ContainedNodeLabel" abstract="true" mixed="false">
		<xsd:annotation>
			<xsd:appinfo>ContainedNodeLabel tags help distinguish between the different uses of node siblings that might otherwise share the same node type.
These tags are labels in the scene graph, not instantiable nodes.
Because these tags do not need to be instantiated as scene graph nodes, they do not have DEF or USE values like X3DNodes.
ContainedNodeLabel tags are sometimes referred to as &quot;wrapper tags.&quot;</xsd:appinfo>
			<xsd:documentation>Note that ContainedNodeLabel tags are not needed when node siblings have different types.  Thus &quot;wrapper tags&quot; are not needed for most child nodes in the VRML 97 node set.</xsd:documentation>
		</xsd:annotation>
		<xsd:complexContent mixed="false">
			<xsd:extension base="X3DNode">
				<xsd:attribute name="otherInterfaces" type="xsd:string" fixed="org.w3c.dom.Element"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<!-- don't these need to be in abstract spec? -->
	<xsd:complexType name="Event" abstract="true" mixed="false">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/java.html#B.4.2">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.</xsd:documentation>
		</xsd:annotation>
	</xsd:complexType>
	<xsd:complexType name="X3DPrototype" abstract="true" mixed="false">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/concepts.html#4.8"/>
		</xsd:annotation>
		<xsd:complexContent mixed="false">
			<xsd:extension base="SceneGraphStructureNodeType">
				<xsd:attribute name="name"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="SceneGraphStructureNodeType" abstract="false" mixed="false">
		<xsd:annotation>
			<xsd:appinfo> SceneGraphStructureNodeType is a marker interface that identifies nonrenderable nodes relating to scene graph structure.</xsd:appinfo>
			<xsd:documentation>SceneGraphStructureNodeType extends from Base rather than X3DNode since DEF/USE not appropriate for declarations.</xsd:documentation>
		</xsd:annotation>
	</xsd:complexType>
	<xsd:complexType name="WildcardNodeType" abstract="true" mixed="false">
		<xsd:annotation>
			<xsd:appinfo> This complexType will likely not be needed, since integrating ProtoInstance into the content models solves the wildcard and extensibility problems.</xsd:appinfo>
		</xsd:annotation>
		<xsd:complexContent mixed="false">
			<xsd:extension base="X3DNode"/>
		</xsd:complexContent>
	</xsd:complexType>
	<!--======================================================================-->
	<!-- Most child-node content models are provided by these xsd:group element definitions.  These are necessary since complexType definitions can't be used to define contained content elements.-->
	<xsd:group name="AppearanceChildContentModel">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation>Child-node content model corresponding to X3DAppearanceChildNode.  First can contain optional FillProperties and/or LineProperties, then any-order Material, ImageTexture, MovieTexture, MultiTexture, PixelTexture, TextureTransform, MultiTextureTransform.  No more than one instance of any single node type.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:choice minOccurs="0">
				<xsd:sequence>
					<xsd:element ref="FillProperties"/>
					<xsd:choice minOccurs="0">
						<xsd:element ref="LineProperties"/>
						<xsd:element ref="ProtoInstance"/>
					</xsd:choice>
				</xsd:sequence>
				<xsd:sequence>
					<xsd:element ref="LineProperties"/>
					<xsd:choice minOccurs="0">
						<xsd:element ref="FillProperties"/>
						<xsd:element ref="ProtoInstance"/>
					</xsd:choice>
				</xsd:sequence>
				<xsd:sequence>
					<xsd:element ref="ProtoInstance"/>
					<xsd:choice minOccurs="0">
						<xsd:element ref="FillProperties"/>
						<xsd:element ref="LineProperties"/>
						<xsd:element ref="ProtoInstance"/>
					</xsd:choice>
				</xsd:sequence>
			</xsd:choice>
			<xsd:choice>
				<xsd:sequence>
					<xsd:element ref="Material"/>
					<xsd:choice minOccurs="0">
						<xsd:sequence>
							<xsd:choice>
								<xsd:element ref="ImageTexture"/>
								<xsd:element ref="MovieTexture"/>
								<xsd:element ref="MultiTexture"/>
								<xsd:element ref="PixelTexture"/>
							</xsd:choice>
							<xsd:choice minOccurs="0">
								<xsd:element ref="TextureTransform"/>
								<xsd:element ref="ProtoInstance"/>
							</xsd:choice>
						</xsd:sequence>
						<xsd:sequence>
							<xsd:element ref="TextureTransform"/>
							<xsd:choice minOccurs="0">
								<xsd:choice>
									<xsd:element ref="ImageTexture"/>
									<xsd:element ref="MovieTexture"/>
									<xsd:element ref="MultiTexture"/>
									<xsd:element ref="PixelTexture"/>
								</xsd:choice>
								<xsd:element ref="ProtoInstance"/>
							</xsd:choice>
						</xsd:sequence>
						<xsd:sequence>
							<xsd:element ref="ProtoInstance"/>
							<xsd:choice minOccurs="0">
								<xsd:choice>
									<xsd:element ref="ImageTexture"/>
									<xsd:element ref="MovieTexture"/>
									<xsd:element ref="MultiTexture"/>
									<xsd:element ref="PixelTexture"/>
								</xsd:choice>
								<xsd:element ref="TextureTransform"/>
								<xsd:element ref="ProtoInstance"/>
							</xsd:choice>
						</xsd:sequence>
					</xsd:choice>
				</xsd:sequence>
				<xsd:sequence>
					<xsd:choice>
						<xsd:element ref="ImageTexture"/>
						<xsd:element ref="MovieTexture"/>
						<xsd:element ref="MultiTexture"/>
						<xsd:element ref="PixelTexture"/>
					</xsd:choice>
					<xsd:choice minOccurs="0">
						<xsd:sequence>
							<xsd:element ref="Material"/>
							<xsd:choice minOccurs="0">
								<xsd:element ref="TextureTransform"/>
								<xsd:element ref="ProtoInstance"/>
							</xsd:choice>
						</xsd:sequence>
						<xsd:sequence>
							<xsd:element ref="TextureTransform"/>
							<xsd:choice minOccurs="0">
								<xsd:element ref="Material"/>
								<xsd:element ref="ProtoInstance"/>
							</xsd:choice>
						</xsd:sequence>
						<xsd:sequence>
							<xsd:element ref="ProtoInstance"/>
							<xsd:choice minOccurs="0">
								<xsd:element ref="Material"/>
								<xsd:element ref="TextureTransform"/>
								<xsd:element ref="ProtoInstance"/>
							</xsd:choice>
						</xsd:sequence>
					</xsd:choice>
				</xsd:sequence>
				<xsd:sequence>
					<xsd:element ref="TextureTransform"/>
					<xsd:choice minOccurs="0">
						<xsd:sequence>
							<xsd:element ref="Material"/>
							<xsd:choice minOccurs="0">
								<xsd:choice>
									<xsd:element ref="ImageTexture"/>
									<xsd:element ref="MovieTexture"/>
									<xsd:element ref="MultiTexture"/>
									<xsd:element ref="PixelTexture"/>
								</xsd:choice>
								<xsd:element ref="ProtoInstance"/>
							</xsd:choice>
						</xsd:sequence>
						<xsd:sequence>
							<xsd:choice>
								<xsd:element ref="ImageTexture"/>
								<xsd:element ref="MovieTexture"/>
								<xsd:element ref="MultiTexture"/>
								<xsd:element ref="PixelTexture"/>
							</xsd:choice>
							<xsd:choice minOccurs="0">
								<xsd:element ref="Material"/>
								<xsd:element ref="ProtoInstance"/>
							</xsd:choice>
						</xsd:sequence>
						<xsd:sequence>
							<xsd:element ref="ProtoInstance"/>
							<xsd:choice minOccurs="0">
								<xsd:element ref="Material"/>
								<xsd:choice>
									<xsd:element ref="ImageTexture"/>
									<xsd:element ref="MovieTexture"/>
									<xsd:element ref="MultiTexture"/>
									<xsd:element ref="PixelTexture"/>
								</xsd:choice>
								<xsd:element ref="ProtoInstance"/>
							</xsd:choice>
						</xsd:sequence>
					</xsd:choice>
				</xsd:sequence>
				<xsd:sequence>
					<xsd:element ref="ProtoInstance"/>
					<xsd:choice minOccurs="0">
						<xsd:sequence>
							<xsd:element ref="Material"/>
							<xsd:choice minOccurs="0">
								<xsd:choice>
									<xsd:element ref="ImageTexture"/>
									<xsd:element ref="MovieTexture"/>
									<xsd:element ref="MultiTexture"/>
									<xsd:element ref="PixelTexture"/>
								</xsd:choice>
								<xsd:element ref="TextureTransform"/>
								<xsd:element ref="ProtoInstance"/>
							</xsd:choice>
						</xsd:sequence>
						<xsd:sequence>
							<xsd:choice>
								<xsd:element ref="ImageTexture"/>
								<xsd:element ref="MovieTexture"/>
								<xsd:element ref="MultiTexture"/>
								<xsd:element ref="PixelTexture"/>
							</xsd:choice>
							<xsd:choice minOccurs="0">
								<xsd:element ref="Material"/>
								<xsd:element ref="TextureTransform"/>
								<xsd:element ref="ProtoInstance"/>
							</xsd:choice>
						</xsd:sequence>
						<xsd:sequence>
							<xsd:element ref="ProtoInstance"/>
							<xsd:choice minOccurs="0">
								<xsd:element ref="Material"/>
								<xsd:choice>
									<xsd:element ref="ImageTexture"/>
									<xsd:element ref="MovieTexture"/>
									<xsd:element ref="MultiTexture"/>
									<xsd:element ref="PixelTexture"/>
								</xsd:choice>
								<xsd:element ref="TextureTransform"/>
								<xsd:element ref="ProtoInstance"/>
							</xsd:choice>
						</xsd:sequence>
					</xsd:choice>
				</xsd:sequence>
			</xsd:choice>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="ChildContentModel">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation>Child-node content model corresponding to X3DChildNode, combining all profiles.</xsd:documentation>
		</xsd:annotation>
		<xsd:choice>
			<xsd:group ref="ChildContentModelInterchange" minOccurs="0"/>
			<xsd:group ref="ChildContentModelInteractive" minOccurs="0"/>
			<xsd:group ref="ChildContentModelImmersive" minOccurs="0"/>
			<xsd:group ref="ChildContentModelDIS" minOccurs="0"/>
			<xsd:group ref="ChildContentModelGeoSpatial" minOccurs="0"/>
			<xsd:group ref="ChildContentModelHumanoidAnimation" minOccurs="0"/>
			<xsd:group ref="ChildContentModelNurbs" minOccurs="0"/>
		</xsd:choice>
	</xsd:group>
	<xsd:group name="ChildContentModelInterchange">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation>Child-node content model corresponding to X3DChildNode for Interchange profile.</xsd:documentation>
		</xsd:annotation>
		<xsd:choice>
			<xsd:element ref="Anchor"/>
			<xsd:element ref="Background"/>
			<xsd:element ref="DirectionalLight"/>
			<xsd:element ref="Group"/>
			<xsd:element ref="OrientationInterpolator"/>
			<xsd:element ref="PositionInterpolator"/>
			<xsd:element ref="ScalarInterpolator"/>
			<xsd:element ref="Shape"/>
			<xsd:element ref="Switch"/>
			<xsd:element ref="TimeSensor"/>
			<xsd:element ref="Transform"/>
			<xsd:element ref="Viewpoint"/>
			<xsd:element ref="WorldInfo"/>
			<xsd:element ref="ROUTE"/>
			<xsd:element ref="IMPORT"/>
			<xsd:element ref="EXPORT"/>
		</xsd:choice>
	</xsd:group>
	<xsd:group name="ChildContentModelInteractive">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation>Child-node content model corresponding to X3DChildNode for Interactive profile.</xsd:documentation>
		</xsd:annotation>
		<xsd:choice>
			<xsd:element ref="Inline"/>
			<xsd:element ref="KeySensor"/>
			<xsd:element ref="NavigationInfo"/>
		</xsd:choice>
	</xsd:group>
	<xsd:group name="ChildContentModelImmersive">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation>Child-node content model corresponding to X3DChildNode for Immersive profile.</xsd:documentation>
		</xsd:annotation>
		<xsd:choice>
			<xsd:element ref="AudioClip"/>
			<xsd:element ref="Billboard"/>
			<xsd:element ref="Collision"/>
			<xsd:element ref="ColorInterpolator"/>
			<xsd:element ref="CoordinateInterpolator"/>
			<xsd:element ref="CoordinateInterpolator2D"/>
			<xsd:element ref="CylinderSensor"/>
			<xsd:element ref="Fog"/>
			<xsd:element ref="LOD"/>
			<xsd:element ref="NormalInterpolator"/>
			<xsd:element ref="PlaneSensor"/>
			<xsd:element ref="PointLight"/>
			<xsd:element ref="ProximitySensor"/>
			<xsd:element ref="Script"/>
			<xsd:element ref="Sound"/>
			<xsd:element ref="SphereSensor"/>
			<xsd:element ref="SpotLight"/>
			<xsd:element ref="TouchSensor"/>
			<xsd:element ref="StringSensor"/>
			<xsd:element ref="VisibilitySensor"/>
		</xsd:choice>
	</xsd:group>
	<xsd:group name="ChildContentModelDIS">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation>Child-node content model corresponding to X3DChildNode for DIS component.</xsd:documentation>
		</xsd:annotation>
		<xsd:choice>
			<xsd:element ref="EspduTransform"/>
			<xsd:element ref="ReceiverPdu"/>
			<xsd:element ref="SignalPdu"/>
			<xsd:element ref="TransmitterPdu"/>
		</xsd:choice>
	</xsd:group>
	<xsd:group name="ChildContentModelGeoSpatial">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation>Child-node content model corresponding to X3DChildNode for GeoSpatial component.</xsd:documentation>
		</xsd:annotation>
		<xsd:choice>
			<xsd:element ref="GeoLocation"/>
			<xsd:element ref="GeoLOD"/>
			<xsd:element ref="GeoMetadata"/>
			<xsd:element ref="GeoOrigin"/>
			<xsd:element ref="GeoPositionInterpolator"/>
			<xsd:element ref="GeoTouchSensor"/>
			<xsd:element ref="GeoViewpoint"/>
		</xsd:choice>
	</xsd:group>
	<xsd:group name="ChildContentModelHumanoidAnimation">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation>Child-node content model corresponding to X3DChildNode for HumanoidAnimation component.</xsd:documentation>
		</xsd:annotation>
		<xsd:choice>
			<xsd:element ref="HAnimHumanoid"/>
			<xsd:element ref="HAnimJoint"/>
			<xsd:element ref="HAnimSegment"/>
			<xsd:element ref="HAnimSite"/>
		</xsd:choice>
	</xsd:group>
	<xsd:group name="ChildContentModelNurbs">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation>Child-node content model corresponding to X3DChildNode for Nurbs component.</xsd:documentation>
		</xsd:annotation>
		<xsd:choice>
			<xsd:element ref="Contour2D"/>
			<xsd:element ref="CoordinateDeformer"/>
			<xsd:element ref="NurbsGroup"/>
			<xsd:element ref="NurbsPositionInterpolator"/>
			<xsd:element ref="NurbsTextureSurface"/>
		</xsd:choice>
	</xsd:group>
	<xsd:group name="ColorCoordinateContentModel">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation>Child-node content model corresponding to IndexedLineSet and PointSet.  Can contain any-order Coordinate node with Color (or ColorRGBA) node.  No more than one instance of any single node type.</xsd:documentation>
		</xsd:annotation>
		<xsd:choice>
			<xsd:sequence>
				<xsd:element ref="Color"/>
				<xsd:choice minOccurs="0">
					<xsd:element ref="Coordinate"/>
					<xsd:element ref="GeoCoordinate"/>
					<xsd:element ref="ProtoInstance"/>
				</xsd:choice>
			</xsd:sequence>
			<xsd:sequence>
				<xsd:choice>
					<xsd:element ref="Coordinate"/>
					<xsd:element ref="GeoCoordinate"/>
				</xsd:choice>
				<xsd:choice minOccurs="0">
					<xsd:element ref="Color"/>
					<xsd:element ref="ProtoInstance"/>
				</xsd:choice>
			</xsd:sequence>
			<xsd:sequence>
				<xsd:element ref="ProtoInstance"/>
				<xsd:choice minOccurs="0">
					<xsd:element ref="Color"/>
					<xsd:choice>
						<xsd:element ref="Coordinate"/>
						<xsd:element ref="GeoCoordinate"/>
					</xsd:choice>
					<xsd:element ref="ProtoInstance"/>
				</xsd:choice>
			</xsd:sequence>
		</xsd:choice>
	</xsd:group>
	<xsd:group name="ColorNormalTexCoordContentModel">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation>Child-node content model corresponding to ElevationGrid and GeoElevationGrid.  Can contain Color (or ColorRGBA), Normal and TextureCoordinate, in any order.  No more than one instance of any single node type.</xsd:documentation>
		</xsd:annotation>
		<xsd:choice>
			<xsd:sequence>
				<xsd:element ref="Color"/>
				<xsd:choice minOccurs="0">
					<xsd:sequence>
						<xsd:element ref="Normal"/>
						<xsd:choice minOccurs="0">
							<xsd:element ref="TextureCoordinate"/>
							<xsd:element ref="ProtoInstance"/>
						</xsd:choice>
					</xsd:sequence>
					<xsd:sequence>
						<xsd:element ref="TextureCoordinate"/>
						<xsd:choice minOccurs="0">
							<xsd:element ref="Normal"/>
							<xsd:element ref="ProtoInstance"/>
						</xsd:choice>
					</xsd:sequence>
					<xsd:sequence>
						<xsd:element ref="ProtoInstance"/>
						<xsd:choice minOccurs="0">
							<xsd:element ref="Normal"/>
							<xsd:element ref="TextureCoordinate"/>
							<xsd:element ref="ProtoInstance"/>
						</xsd:choice>
					</xsd:sequence>
				</xsd:choice>
			</xsd:sequence>
			<xsd:sequence>
				<xsd:element ref="Normal"/>
				<xsd:choice minOccurs="0">
					<xsd:sequence>
						<xsd:element ref="Color"/>
						<xsd:choice minOccurs="0">
							<xsd:element ref="TextureCoordinate"/>
							<xsd:element ref="ProtoInstance"/>
						</xsd:choice>
					</xsd:sequence>
					<xsd:sequence>
						<xsd:element ref="TextureCoordinate"/>
						<xsd:choice minOccurs="0">
							<xsd:element ref="Color"/>
							<xsd:element ref="ProtoInstance"/>
						</xsd:choice>
					</xsd:sequence>
					<xsd:sequence>
						<xsd:element ref="ProtoInstance"/>
						<xsd:choice minOccurs="0">
							<xsd:element ref="Color"/>
							<xsd:element ref="TextureCoordinate"/>
							<xsd:element ref="ProtoInstance"/>
						</xsd:choice>
					</xsd:sequence>
				</xsd:choice>
			</xsd:sequence>
			<xsd:sequence>
				<xsd:element ref="TextureCoordinate"/>
				<xsd:choice minOccurs="0">
					<xsd:sequence>
						<xsd:element ref="Color"/>
						<xsd:choice minOccurs="0">
							<xsd:element ref="Normal"/>
							<xsd:element ref="ProtoInstance"/>
						</xsd:choice>
					</xsd:sequence>
					<xsd:sequence>
						<xsd:element ref="Normal"/>
						<xsd:choice minOccurs="0">
							<xsd:element ref="Color"/>
							<xsd:element ref="ProtoInstance"/>
						</xsd:choice>
					</xsd:sequence>
					<xsd:sequence>
						<xsd:element ref="ProtoInstance"/>
						<xsd:choice minOccurs="0">
							<xsd:element ref="Color"/>
							<xsd:element ref="Normal"/>
							<xsd:element ref="ProtoInstance"/>
						</xsd:choice>
					</xsd:sequence>
				</xsd:choice>
			</xsd:sequence>
			<xsd:sequence>
				<xsd:element ref="ProtoInstance"/>
				<xsd:choice minOccurs="0">
					<xsd:sequence>
						<xsd:element ref="Color"/>
						<xsd:choice minOccurs="0">
							<xsd:element ref="Normal"/>
							<xsd:element ref="TextureCoordinate"/>
							<xsd:element ref="ProtoInstance"/>
						</xsd:choice>
					</xsd:sequence>
					<xsd:sequence>
						<xsd:element ref="Normal"/>
						<xsd:choice minOccurs="0">
							<xsd:element ref="Color"/>
							<xsd:element ref="TextureCoordinate"/>
							<xsd:element ref="ProtoInstance"/>
						</xsd:choice>
					</xsd:sequence>
					<xsd:sequence>
						<xsd:element ref="ProtoInstance"/>
						<xsd:choice minOccurs="0">
							<xsd:element ref="Color"/>
							<xsd:element ref="Normal"/>
							<xsd:element ref="TextureCoordinate"/>
							<xsd:element ref="ProtoInstance"/>
						</xsd:choice>
					</xsd:sequence>
				</xsd:choice>
			</xsd:sequence>
		</xsd:choice>
	</xsd:group>
	<xsd:group name="ColorCoordinateNormalTexCoordContentModel">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation>Child-node content model corresponding to IndexedFaceSet:  Color (or ColorRGBA), Coordinate, Normal and TextureCoordinate, in any order.  No more than one instance of any single node type.</xsd:documentation>
		</xsd:annotation>
		<xsd:choice>
			<xsd:sequence>
				<xsd:element ref="Color"/>
				<xsd:choice minOccurs="0">
					<xsd:sequence>
						<xsd:choice>
							<xsd:element ref="Coordinate"/>
							<xsd:element ref="GeoCoordinate"/>
						</xsd:choice>
						<xsd:choice minOccurs="0">
							<xsd:sequence>
								<xsd:element ref="Normal"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="TextureCoordinate"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="TextureCoordinate"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Normal"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="ProtoInstance"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
									<xsd:element ref="Normal"/>
									<xsd:element ref="TextureCoordinate"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
						</xsd:choice>
					</xsd:sequence>
					<xsd:sequence>
						<xsd:element ref="Normal"/>
						<xsd:choice minOccurs="0">
							<xsd:sequence>
								<xsd:choice>
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
								</xsd:choice>
								<xsd:choice minOccurs="0">
									<xsd:element ref="TextureCoordinate"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="TextureCoordinate"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="ProtoInstance"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
									<xsd:element ref="TextureCoordinate"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
						</xsd:choice>
					</xsd:sequence>
					<xsd:sequence>
						<xsd:element ref="TextureCoordinate"/>
						<xsd:choice minOccurs="0">
							<xsd:sequence>
								<xsd:choice>
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
								</xsd:choice>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Normal"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="Normal"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="ProtoInstance"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
									<xsd:element ref="Normal"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
						</xsd:choice>
					</xsd:sequence>
					<xsd:sequence>
						<xsd:element ref="ProtoInstance"/>
						<xsd:choice minOccurs="0">
							<xsd:sequence>
								<xsd:choice>
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
								</xsd:choice>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Normal"/>
									<xsd:element ref="TextureCoordinate"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="Normal"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
									<xsd:element ref="TextureCoordinate"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="TextureCoordinate"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
									<xsd:element ref="Normal"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="ProtoInstance"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
									<xsd:element ref="Normal"/>
									<xsd:element ref="TextureCoordinate"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
						</xsd:choice>
					</xsd:sequence>
				</xsd:choice>
			</xsd:sequence>
			<xsd:sequence>
				<xsd:choice>
					<xsd:element ref="Coordinate"/>
					<xsd:element ref="GeoCoordinate"/>
				</xsd:choice>
				<xsd:choice minOccurs="0">
					<xsd:sequence>
						<xsd:element ref="Color"/>
						<xsd:choice minOccurs="0">
							<xsd:sequence>
								<xsd:element ref="Normal"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="TextureCoordinate"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="TextureCoordinate"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Normal"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="ProtoInstance"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Color"/>
									<xsd:element ref="Normal"/>
									<xsd:element ref="TextureCoordinate"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
						</xsd:choice>
					</xsd:sequence>
					<xsd:sequence>
						<xsd:element ref="Normal"/>
						<xsd:choice minOccurs="0">
							<xsd:sequence>
								<xsd:element ref="Color"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="TextureCoordinate"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="TextureCoordinate"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Color"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="ProtoInstance"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Color"/>
									<xsd:element ref="TextureCoordinate"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
						</xsd:choice>
					</xsd:sequence>
					<xsd:sequence>
						<xsd:element ref="TextureCoordinate"/>
						<xsd:choice minOccurs="0">
							<xsd:sequence>
								<xsd:element ref="Color"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Normal"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="Normal"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Color"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="ProtoInstance"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Color"/>
									<xsd:element ref="Normal"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
						</xsd:choice>
					</xsd:sequence>
					<xsd:sequence>
						<xsd:element ref="ProtoInstance"/>
						<xsd:choice minOccurs="0">
							<xsd:sequence>
								<xsd:element ref="Color"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Normal"/>
									<xsd:element ref="TextureCoordinate"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="Normal"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Color"/>
									<xsd:element ref="TextureCoordinate"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="TextureCoordinate"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Color"/>
									<xsd:element ref="Normal"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="ProtoInstance"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Color"/>
									<xsd:element ref="Normal"/>
									<xsd:element ref="TextureCoordinate"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
						</xsd:choice>
					</xsd:sequence>
				</xsd:choice>
			</xsd:sequence>
			<xsd:sequence>
				<xsd:element ref="Normal"/>
				<xsd:choice minOccurs="0">
					<xsd:sequence>
						<xsd:choice>
							<xsd:element ref="Coordinate"/>
							<xsd:element ref="GeoCoordinate"/>
						</xsd:choice>
						<xsd:choice minOccurs="0">
							<xsd:sequence>
								<xsd:element ref="Color"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="TextureCoordinate"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="TextureCoordinate"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Color"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="ProtoInstance"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
									<xsd:element ref="Color"/>
									<xsd:element ref="TextureCoordinate"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
						</xsd:choice>
					</xsd:sequence>
					<xsd:sequence>
						<xsd:element ref="Color"/>
						<xsd:choice minOccurs="0">
							<xsd:sequence>
								<xsd:choice>
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
								</xsd:choice>
								<xsd:choice minOccurs="0">
									<xsd:element ref="TextureCoordinate"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="TextureCoordinate"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="ProtoInstance"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
									<xsd:element ref="TextureCoordinate"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
						</xsd:choice>
					</xsd:sequence>
					<xsd:sequence>
						<xsd:element ref="TextureCoordinate"/>
						<xsd:choice minOccurs="0">
							<xsd:sequence>
								<xsd:choice>
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
								</xsd:choice>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Color"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="Color"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="ProtoInstance"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
									<xsd:element ref="Color"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
						</xsd:choice>
					</xsd:sequence>
					<xsd:sequence>
						<xsd:element ref="ProtoInstance"/>
						<xsd:choice minOccurs="0">
							<xsd:sequence>
								<xsd:choice>
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
								</xsd:choice>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Color"/>
									<xsd:element ref="TextureCoordinate"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="Color"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
									<xsd:element ref="TextureCoordinate"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="TextureCoordinate"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
									<xsd:element ref="Color"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="ProtoInstance"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
									<xsd:element ref="Color"/>
									<xsd:element ref="TextureCoordinate"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
						</xsd:choice>
					</xsd:sequence>
				</xsd:choice>
			</xsd:sequence>
			<xsd:sequence>
				<xsd:element ref="TextureCoordinate"/>
				<xsd:choice minOccurs="0">
					<xsd:sequence>
						<xsd:element ref="Color"/>
						<xsd:choice minOccurs="0">
							<xsd:sequence>
								<xsd:choice>
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
								</xsd:choice>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Normal"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="Normal"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="ProtoInstance"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
									<xsd:element ref="Normal"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
						</xsd:choice>
					</xsd:sequence>
					<xsd:sequence>
						<xsd:choice>
							<xsd:element ref="Coordinate"/>
							<xsd:element ref="GeoCoordinate"/>
						</xsd:choice>
						<xsd:choice minOccurs="0">
							<xsd:sequence>
								<xsd:element ref="Color"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Normal"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="Normal"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Color"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="ProtoInstance"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
									<xsd:element ref="Color"/>
									<xsd:element ref="Normal"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
						</xsd:choice>
					</xsd:sequence>
					<xsd:sequence>
						<xsd:element ref="Normal"/>
						<xsd:choice minOccurs="0">
							<xsd:sequence>
								<xsd:choice>
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
								</xsd:choice>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Color"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="Color"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="ProtoInstance"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
									<xsd:element ref="Color"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
						</xsd:choice>
					</xsd:sequence>
					<xsd:sequence>
						<xsd:element ref="ProtoInstance"/>
						<xsd:choice minOccurs="0">
							<xsd:sequence>
								<xsd:element ref="Color"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
									<xsd:element ref="Normal"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:choice>
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
								</xsd:choice>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Color"/>
									<xsd:element ref="Normal"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="Normal"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Color"/>
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="ProtoInstance"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Color"/>
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
									<xsd:element ref="Normal"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
						</xsd:choice>
					</xsd:sequence>
				</xsd:choice>
			</xsd:sequence>
			<xsd:sequence>
				<xsd:element ref="ProtoInstance"/>
				<xsd:choice minOccurs="0">
					<xsd:sequence>
						<xsd:element ref="Color"/>
						<xsd:choice minOccurs="0">
							<xsd:choice>
								<xsd:choice>
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
								</xsd:choice>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Normal"/>
									<xsd:element ref="TextureCoordinate"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:choice>
							<xsd:sequence>
								<xsd:element ref="Normal"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
									<xsd:element ref="TextureCoordinate"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="TextureCoordinate"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
									<xsd:element ref="Normal"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="ProtoInstance"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
									<xsd:element ref="Normal"/>
									<xsd:element ref="TextureCoordinate"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
						</xsd:choice>
					</xsd:sequence>
					<xsd:sequence>
						<xsd:choice>
							<xsd:element ref="Coordinate"/>
							<xsd:element ref="GeoCoordinate"/>
						</xsd:choice>
						<xsd:choice minOccurs="0">
							<xsd:sequence>
								<xsd:element ref="Color"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Normal"/>
									<xsd:element ref="TextureCoordinate"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="Normal"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Color"/>
									<xsd:element ref="TextureCoordinate"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="TextureCoordinate"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Color"/>
									<xsd:element ref="Normal"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="ProtoInstance"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Color"/>
									<xsd:element ref="Normal"/>
									<xsd:element ref="TextureCoordinate"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
						</xsd:choice>
					</xsd:sequence>
					<xsd:sequence>
						<xsd:element ref="Normal"/>
						<xsd:choice minOccurs="0">
							<xsd:sequence>
								<xsd:element ref="Color"/>
								<xsd:choice/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
									<xsd:element ref="TextureCoordinate"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:choice>
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
								</xsd:choice>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Color"/>
									<xsd:element ref="TextureCoordinate"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="TextureCoordinate"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Color"/>
									<xsd:element ref="Color"/>
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="ProtoInstance"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Color"/>
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
									<xsd:element ref="TextureCoordinate"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
						</xsd:choice>
					</xsd:sequence>
					<xsd:sequence>
						<xsd:element ref="TextureCoordinate"/>
						<xsd:choice minOccurs="0">
							<xsd:sequence>
								<xsd:element ref="Color"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
									<xsd:element ref="Normal"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:choice>
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
								</xsd:choice>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Color"/>
									<xsd:element ref="Normal"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="Normal"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Color"/>
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="ProtoInstance"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Color"/>
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
									<xsd:element ref="Normal"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
						</xsd:choice>
					</xsd:sequence>
					<xsd:sequence>
						<xsd:element ref="ProtoInstance"/>
						<xsd:choice minOccurs="0">
							<xsd:sequence>
								<xsd:element ref="Color"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
									<xsd:element ref="Normal"/>
									<xsd:element ref="TextureCoordinate"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:choice>
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
								</xsd:choice>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Color"/>
									<xsd:element ref="Normal"/>
									<xsd:element ref="TextureCoordinate"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="Normal"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Color"/>
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
									<xsd:element ref="TextureCoordinate"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="TextureCoordinate"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Color"/>
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
									<xsd:element ref="Normal"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
							<xsd:sequence>
								<xsd:element ref="ProtoInstance"/>
								<xsd:choice minOccurs="0">
									<xsd:element ref="Color"/>
									<xsd:element ref="Coordinate"/>
									<xsd:element ref="GeoCoordinate"/>
									<xsd:element ref="Normal"/>
									<xsd:element ref="TextureCoordinate"/>
									<xsd:element ref="ProtoInstance"/>
								</xsd:choice>
							</xsd:sequence>
						</xsd:choice>
					</xsd:sequence>
				</xsd:choice>
			</xsd:sequence>
		</xsd:choice>
	</xsd:group>
	<xsd:group name="GeometryContentModel">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation>Child-node content model corresponding to X3DGeometryNode, combining all components - select only one total.  Includes ProtoInstance, USE options.</xsd:documentation>
		</xsd:annotation>
		<xsd:choice>
			<xsd:group ref="GeometryContentModelInterchange" minOccurs="0"/>
			<xsd:group ref="GeometryContentModelImmersive" minOccurs="0"/>
			<xsd:group ref="GeometryContentModelGeoSpatial" minOccurs="0"/>
			<xsd:group ref="GeometryContentModelNurbs" minOccurs="0"/>
		</xsd:choice>
	</xsd:group>
	<xsd:group name="GeometryContentModelInterchange">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation>Child-node content model corresponding to X3DGeometryNode for Interchange profile.</xsd:documentation>
		</xsd:annotation>
		<xsd:choice>
			<xsd:element ref="IndexedFaceSet"/>
			<xsd:element ref="IndexedLineSet"/>
			<xsd:element ref="PointSet"/>
			<xsd:element ref="TriangleFanSet"/>
			<xsd:element ref="TriangleSet"/>
			<xsd:element ref="TriangleStripSet"/>
		</xsd:choice>
	</xsd:group>
	<xsd:group name="GeometryContentModelImmersive">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation>Child-node content model corresponding to X3DGeometryNode for Immersive profile.</xsd:documentation>
		</xsd:annotation>
		<xsd:choice>
			<xsd:group ref="GeometryContentModel2D"/>
			<xsd:element ref="Box"/>
			<xsd:element ref="Cone"/>
			<xsd:element ref="Cylinder"/>
			<xsd:element ref="ElevationGrid"/>
			<xsd:element ref="Extrusion"/>
			<xsd:element ref="Sphere"/>
			<xsd:element ref="Text"/>
			<xsd:element ref="TriangleFanSet"/>
			<xsd:element ref="TriangleSet"/>
			<xsd:element ref="TriangleStripSet"/>
		</xsd:choice>
	</xsd:group>
	<xsd:group name="GeometryContentModel2D">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation>Child-node content model corresponding to Geometry2D component.</xsd:documentation>
		</xsd:annotation>
		<xsd:choice>
			<xsd:element ref="Arc2D"/>
			<xsd:element ref="ArcClose2D"/>
			<xsd:element ref="Circle2D"/>
			<xsd:element ref="Disk2D"/>
			<xsd:element ref="Polyline2D"/>
			<xsd:element ref="Polypoint2D"/>
			<xsd:element ref="Rectangle2D"/>
			<xsd:element ref="TriangleSet2D"/>
		</xsd:choice>
	</xsd:group>
	<xsd:group name="GeometryContentModelGeoSpatial">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation>Child-node content model corresponding to X3DGeometryNode for GeoSpatial component.</xsd:documentation>
		</xsd:annotation>
		<xsd:choice>
			<xsd:element ref="GeoElevationGrid"/>
		</xsd:choice>
	</xsd:group>
	<xsd:group name="GeometryContentModelNurbs">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation>Child-node content model corresponding to X3DGeometryNode for Nurbs component.</xsd:documentation>
		</xsd:annotation>
		<xsd:choice>
			<xsd:element ref="NurbsCurve"/>
			<xsd:element ref="NurbsCurve2D"/>
			<xsd:element ref="NurbsSurface"/>
			<xsd:element ref="ContourPolyline2D"/>
			<xsd:element ref="TrimmedSurface"/>
		</xsd:choice>
	</xsd:group>
	<xsd:group name="GroupingNodeChildContentModel">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation>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.</xsd:documentation>
		</xsd:annotation>
		<xsd:choice>
			<xsd:group ref="ChildContentModel" minOccurs="0"/>
			<xsd:element ref="ProtoDeclare" minOccurs="0"/>
			<xsd:element ref="ProtoInstance" minOccurs="0"/>
		</xsd:choice>
	</xsd:group>
	<xsd:group name="SceneGraphFragmentContentModel">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation>Child-node content model corresponding to a valid scene-graph fragment.  Can provide field or fieldValue initialization, so no ROUTEs or prototype declarations allowed.</xsd:documentation>
		</xsd:annotation>
		<xsd:choice>
			<xsd:group ref="AppearanceChildContentModel"/>
			<xsd:group ref="ChildContentModel"/>
			<xsd:group ref="GeometryContentModel"/>
			<xsd:group ref="ShapeChildContentModel"/>
			<xsd:group ref="SoundChildContentModel"/>
		</xsd:choice>
	</xsd:group>
	<xsd:group name="SceneGraphFragmentWithPrototypeDeclarationsContentModel">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation>Child-node content model corresponding to a valid scene-graph fragment.  Also includes ROUTE(s) and prototype declaration(s).</xsd:documentation>
		</xsd:annotation>
		<xsd:choice>
			<xsd:group ref="SceneGraphFragmentContentModel"/>
			<xsd:element ref="ExternProtoDeclare"/>
			<xsd:element ref="ProtoDeclare"/>
			<xsd:element ref="ROUTE"/>
			<xsd:element ref="IMPORT"/>
			<xsd:element ref="EXPORT"/>
		</xsd:choice>
	</xsd:group>
	<xsd:group name="ShapeChildContentModel">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation>Child-node content model corresponding to X3DShapeNode. Can contain single Appearance node and single geometry node, in any order.</xsd:documentation>
		</xsd:annotation>
		<xsd:choice>
			<xsd:sequence>
				<xsd:element ref="Appearance"/>
				<xsd:choice minOccurs="0">
					<xsd:group ref="GeometryContentModel"/>
					<xsd:element ref="ProtoInstance"/>
				</xsd:choice>
			</xsd:sequence>
			<xsd:sequence>
				<xsd:group ref="GeometryContentModel"/>
				<xsd:choice minOccurs="0">
					<xsd:element ref="Appearance"/>
					<xsd:element ref="ProtoInstance"/>
				</xsd:choice>
			</xsd:sequence>
			<xsd:sequence>
				<xsd:element ref="ProtoInstance"/>
				<xsd:choice minOccurs="0">
					<xsd:group ref="GeometryContentModel"/>
					<xsd:element ref="Appearance"/>
					<xsd:element ref="ProtoInstance"/>
				</xsd:choice>
			</xsd:sequence>
		</xsd:choice>
	</xsd:group>
	<xsd:group name="SoundChildContentModel">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation>Child-node content model corresponding to X3DSoundNode.  Can contain single AudioClip or MovieTexture as sound source.</xsd:documentation>
		</xsd:annotation>
		<xsd:choice>
			<xsd:sequence>
				<xsd:element ref="AudioClip"/>
				<xsd:choice minOccurs="0">
					<xsd:element ref="MovieTexture"/>
					<xsd:element ref="ProtoInstance"/>
				</xsd:choice>
			</xsd:sequence>
			<xsd:sequence>
				<xsd:element ref="MovieTexture"/>
				<xsd:choice minOccurs="0">
					<xsd:element ref="AudioClip"/>
					<xsd:element ref="ProtoInstance"/>
				</xsd:choice>
			</xsd:sequence>
			<xsd:sequence>
				<xsd:element ref="ProtoInstance"/>
				<xsd:choice minOccurs="0">
					<xsd:element ref="AudioClip"/>
					<xsd:element ref="MovieTexture"/>
					<xsd:element ref="ProtoInstance"/>
				</xsd:choice>
			</xsd:sequence>
		</xsd:choice>
	</xsd:group>
	<xsd:group name="TextChildContentModel">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation>Child-node content model corresponding to X3DTextNode.  Can contain single FontStyle node.</xsd:documentation>
		</xsd:annotation>
		<xsd:choice>
			<xsd:element ref="FontStyle"/>
			<xsd:element ref="ProtoInstance"/>
		</xsd:choice>
	</xsd:group>
	<xsd:group name="TextureBackgroundChildContentModel">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation>Child-node content model corresponding to TextureBackground.  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.</xsd:documentation>
		</xsd:annotation>
		<xsd:choice minOccurs="0" maxOccurs="6">
			<xsd:element ref="ImageTexture"/>
			<xsd:element ref="MovieTexture"/>
			<xsd:element ref="MultiTexture"/>
			<xsd:element ref="PixelTexture"/>
		</xsd:choice>
	</xsd:group>
	<!--======================================================================-->
	<!--Interchange, Interactive, Immersive and Full Profile X3D Nodes-->
	<xsd:element name="Anchor">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#Anchor"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DGroupingNode">
					<xsd:attribute name="description" type="SFString"/>
					<xsd:attribute name="parameter" type="MFString"/>
					<xsd:attribute name="url" type="MFString"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="Appearance">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#Appearance"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DAppearanceNode"/>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="Arc2D">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3d.org/TaskGroups/x3d/X3DSpec_FCD/Part01/components/geometry2D.html#Arc2D"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DGeometryNode">
					<xsd:attribute name="endAngle" type="SFFloat" default="1.570796"/>
					<xsd:attribute name="radius" type="SFFloat" default="1"/>
					<xsd:attribute name="startAngle" type="SFFloat" default="0"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="ArcClose2D">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3d.org/TaskGroups/x3d/X3DSpec_FCD/Part01/components/geometry2D.html#ArcClose2D"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DGeometryNode">
					<xsd:attribute name="closureType" type="SFString" default="PIE"/>
					<xsd:attribute name="endAngle" type="SFFloat" default="1.570796"/>
					<xsd:attribute name="radius" type="SFFloat" default="1"/>
					<xsd:attribute name="startAngle" type="SFFloat" default="0"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="AudioClip">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#AudioClip"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DSoundSourceNode">
					<xsd:attribute name="otherInterfaces" type="xsd:string" fixed="X3DUrlObject"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="Background">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#Background"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DBackgroundNode">
					<xsd:attribute name="bottomUrl" type="MFString"/>
					<xsd:attribute name="frontUrl" type="MFString"/>
					<xsd:attribute name="leftUrl" type="MFString"/>
					<xsd:attribute name="rightUrl" type="MFString"/>
					<xsd:attribute name="topUrl" type="MFString"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="Billboard">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#Billboard"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DGroupingNode">
					<xsd:attribute name="axisOfRotation" type="SFVec3f" default="0 1 0"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="BooleanFilter">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DChildNode">
					<xsd:attribute name="set_boolean" type="SFBool"/>
					<xsd:attribute name="inputTrue" type="SFBool"/>
					<xsd:attribute name="inputFalse" type="SFBool"/>
					<xsd:attribute name="inputNegate" type="SFBool"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="BooleanSequencer">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DSequencerNode">
					<xsd:attribute name="keyValue" type="MFBool"/>
					<xsd:attribute name="value_changed" type="SFBool"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="BooleanToggle">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DChildNode">
					<xsd:attribute name="set_boolean" type="SFBool"/>
					<xsd:attribute name="toggle" type="SFBool" default="false"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="BooleanTrigger">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DChildNode">
					<xsd:attribute name="set_triggerTime" type="SFBool"/>
					<xsd:attribute name="triggerTrue" type="SFBool"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="Box">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#Box"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DGeometryNode">
					<xsd:attribute name="size" type="SFVec3f" default="2 2 2"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="Circle2D">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3d.org/TaskGroups/x3d/X3DSpec_FCD/Part01/components/geometry2D.html#Circle2D"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DGeometryNode">
					<xsd:attribute name="radius" type="SFFloat" default="1"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="Collision">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#Collision"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DGroupingNode">
					<xsd:attribute name="otherInterfaces2" type="xsd:string" fixed="X3DEnvironmentalSensorNode"/>
					<xsd:attribute name="enabled" type="SFBool"/>
					<xsd:attribute name="isActive" type="SFBool"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="ColorInterpolator">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#ColorInterpolator"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DInterpolatorNode">
					<xsd:attribute name="keyValue" type="MFColor"/>
					<xsd:attribute name="value_changed" type="SFColor"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="Color">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#Color"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DColorNode">
					<xsd:attribute name="color" type="MFColor"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="Cone">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#Cone"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DGeometryNode">
					<xsd:attribute name="bottomRadius" type="SFFloat" default="1"/>
					<xsd:attribute name="height" type="SFFloat" default="2"/>
					<xsd:attribute name="side" type="SFBool" default="true"/>
					<xsd:attribute name="bottom" type="SFBool" default="true"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="Coordinate">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#Coordinate"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DCoordinateNode">
					<xsd:attribute name="point" type="MFVec3f"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="CoordinateInterpolator">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#CoordinateInterpolator"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DInterpolatorNode">
					<xsd:attribute name="keyValue" type="MFVec3f"/>
					<xsd:attribute name="value_changed" type="MFVec3f"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="CoordinateInterpolator2D">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DInterpolatorNode">
					<xsd:attribute name="keyValue" type="MFVec2f"/>
					<xsd:attribute name="value_changed" type="MFVec2f"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="Cylinder">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#Cylinder"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DGeometryNode">
					<xsd:attribute name="bottom" type="SFBool" default="true"/>
					<xsd:attribute name="height" type="SFFloat" default="1"/>
					<xsd:attribute name="radius" type="SFFloat" default="2"/>
					<xsd:attribute name="side" type="SFBool" default="true"/>
					<xsd:attribute name="top" type="SFBool" default="true"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="CylinderSensor">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#CylinderSensor"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DDragSensorNode">
					<xsd:attribute name="diskAngle" type="SFFloat" default="0.26179167"/>
					<xsd:attribute name="maxAngle" type="SFFloat" default="-1"/>
					<xsd:attribute name="minAngle" type="SFFloat" default="0"/>
					<xsd:attribute name="offset" type="SFFloat" default="0"/>
					<xsd:attribute name="rotation_changed" type="SFVec3f"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="DirectionalLight">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#DirectionalLight"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DLightNode">
					<xsd:attribute name="direction" type="MFVec3f" default="0 0 -1"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="Disk2D">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3d.org/TaskGroups/x3d/X3DSpec_FCD/Part01/components/geometry2D.html#Disk2D"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DGeometryNode">
					<xsd:attribute name="innerRadius" type="SFFloat" default="0"/>
					<xsd:attribute name="outerRadius" type="SFFloat" default="1"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="ElevationGrid">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#ElevationGrid"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DGeometryNode">
					<xsd:group ref="ColorNormalTexCoordContentModel"/>
					<xsd:attribute name="height" type="MFFloat"/>
					<xsd:attribute name="ccw" type="SFBool"/>
					<xsd:attribute name="colorPerVertex" type="SFBool"/>
					<xsd:attribute name="creaseAngle" type="SFFloat"/>
					<xsd:attribute name="normalPerVertex" type="SFBool"/>
					<xsd:attribute name="solid" type="SFBool"/>
					<xsd:attribute name="xDimension" type="SFInt32"/>
					<xsd:attribute name="xSpacing" type="SFFloat"/>
					<xsd:attribute name="zDimension" type="SFInt32"/>
					<xsd:attribute name="zSpacing" type="SFFloat"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="Extrusion">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#Extrusion"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DGeometryNode">
					<xsd:attribute name="beginCap" type="SFBool"/>
					<xsd:attribute name="ccw" type="SFBool"/>
					<xsd:attribute name="convex" type="SFBool"/>
					<xsd:attribute name="creaseAngle" type="SFFloat"/>
					<xsd:attribute name="crossSection" type="MFVec2f"/>
					<xsd:attribute name="endCap" type="SFBool"/>
					<xsd:attribute name="orientation" type="MFRotation"/>
					<xsd:attribute name="scale" type="MFVec2f"/>
					<xsd:attribute name="solid" type="SFBool"/>
					<xsd:attribute name="spine" type="MFVec3f"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="FillProperties">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3d.org/TaskGroups/x3d/X3DSpec_FCD/Part01/components/shape.html#FillProperties"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DAppearanceChildNode">
					<xsd:attribute name="fillStyle" type="SFString" default="NONE"/>
					<xsd:attribute name="hatchColor" type="SFColor" default="1 1 1"/>
					<xsd:attribute name="hatchStyle" type="SFInt32" default="1"/>
					<xsd:attribute name="containerField" type="xsd:NMTOKEN" default="fillProperties"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="Fog">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#Fog"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DBindableNode">
					<xsd:attribute name="color" type="SFColor" default="1 1 1"/>
					<xsd:attribute name="fogType" type="SFString" default="LINEAR"/>
					<xsd:attribute name="visibilityRange" type="SFFloat" default="0"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="FontStyle">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#FontStyle"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DFontStyleNode">
					<xsd:attribute name="family" type="MFString" default="SERIF"/>
					<xsd:attribute name="horizontal" type="SFBool" default="true"/>
					<xsd:attribute name="justify" type="MFString" default="BEGIN"/>
					<xsd:attribute name="language" type="SFString"/>
					<xsd:attribute name="leftToRight" type="SFBool" default="true"/>
					<xsd:attribute name="size" type="SFFloat" default="1"/>
					<xsd:attribute name="spacing" type="SFFloat" default="1"/>
					<xsd:attribute name="style" type="SFString" default="PLAIN"/>
					<xsd:attribute name="topToBottom" type="SFBool" default="true"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="Group">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#Group"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DGroupingNode"/>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="ImageTexture">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#ImageTexture"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DTexture2DNode">
					<xsd:attribute name="otherInterfaces" type="xsd:string" fixed="X3DUrlObject"/>
					<xsd:attribute name="url" type="MFString"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="IndexedFaceSet">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#IndexedFaceSet"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DComposedGeometryNode">
					<xsd:group ref="ColorCoordinateNormalTexCoordContentModel" minOccurs="0"/>
					<xsd:attribute name="convex" type="SFBool"/>
					<xsd:attribute name="creaseAngle" type="SFFloat"/>
					<xsd:attribute name="colorIndex" type="MFInt32"/>
					<xsd:attribute name="coordIndex" type="MFInt32"/>
					<xsd:attribute name="normalIndex" type="MFInt32"/>
					<xsd:attribute name="texCoordIndex" type="MFInt32"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="IndexedLineSet">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#IndexedLineSet"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DGeometryNode">
					<xsd:group ref="ColorCoordinateContentModel" minOccurs="0"/>
					<xsd:attribute name="colorIndex" type="MFInt32"/>
					<xsd:attribute name="colorPerVertex" type="SFBool" default="true"/>
					<xsd:attribute name="coordIndex" type="MFInt32"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="Inline">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#Inline"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DChildNode">
					<xsd:attribute name="load" type="SFBool" default="true"/>
					<xsd:attribute name="otherInterfaces" type="xsd:string" fixed="X3DUrlObject"/>
					<xsd:attribute name="url" type="MFString"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="IntegerSequencer">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DSequencerNode">
					<xsd:attribute name="keyValue" type="MFInt32"/>
					<xsd:attribute name="value_changed" type="SFInt32"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="IntegerTrigger">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DChildNode">
					<xsd:attribute name="set_boolean" type="SFBool"/>
					<xsd:attribute name="trigger" type="SFInt32"/>
					<xsd:attribute name="triggerTrue" type="SFBool"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="KeySensor">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3d.org/TaskGroups/x3d/specification/part1/nodesDef.html#KeySensor"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DKeyDeviceSensorNode">
					<xsd:attribute name="keyPress" type="SFString"/>
					<xsd:attribute name="keyRelease" type="SFString"/>
					<xsd:attribute name="actionKeyPress" type="SFInt32"/>
					<xsd:attribute name="actionKeyRelease" type="SFInt32"/>
					<xsd:attribute name="shiftKey" type="SFBool"/>
					<xsd:attribute name="controlKey" type="SFBool"/>
					<xsd:attribute name="altKey" type="SFBool"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="LineProperties">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3d.org/TaskGroups/x3d/X3DSpec_FCD/Part01/components/shape.html#LineProperties"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DAppearanceChildNode">
					<xsd:attribute name="lineStyle" type="SFInt32" default="0"/>
					<xsd:attribute name="lineWidthScaleFactor" type="SFFloat" default="1"/>
					<xsd:attribute name="containerField" type="xsd:NMTOKEN" default="lineProperties"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="LoadSensor">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3d.org/TaskGroups/x3d/specification/part1/nodesDef.html#KeySensor"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DNetworkSensorNode">
					<xsd:attribute name="timeout" type="SFTime" default="0"/>
					<xsd:attribute name="loadTime" type="SFTime"/>
					<xsd:attribute name="isLoaded" type="SFBool"/>
					<xsd:attribute name="progress" type="SFFloat"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="LOD">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#LOD"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DGroupingNode">
					<xsd:attribute name="center" type="MFVec3f" default="0 0 0"/>
					<xsd:attribute name="range" type="MFFloat"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="Material">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#Material"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DMaterialNode">
					<xsd:attribute name="ambientIntensity" type="SFFloat" default="0.2"/>
					<xsd:attribute name="diffuseColor" type="SFColor" default="0.8 0.8 0.8"/>
					<xsd:attribute name="emissiveColor" type="SFColor" default="0 0 0"/>
					<xsd:attribute name="shininess" type="SFFloat" default="0.2"/>
					<xsd:attribute name="specularColor" type="SFColor" default="0 0 0"/>
					<xsd:attribute name="transparency" type="SFFloat" default="0"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="MovieTexture">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#MovieTexture"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DSoundSourceNode">
					<xsd:attribute name="repeatS" type="SFBool"/>
					<xsd:attribute name="repeatT" type="SFBool"/>
					<xsd:attribute name="otherInterfaces" type="xsd:string" fixed="X3DTexture2DNode"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="MultiTexture">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3d.org/TaskGroups/x3d/X3DSpec_FCD/Part01/components/texturing.html#MultiTexture"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DTextureNode">
					<xsd:choice minOccurs="0" maxOccurs="unbounded">
						<xsd:element ref="ImageTexture"/>
						<xsd:element ref="MovieTexture"/>
						<xsd:element ref="MultiTexture"/>
						<xsd:element ref="PixelTexture"/>
					</xsd:choice>
					<xsd:attribute name="alpha" type="SFFloat" default="1"/>
					<xsd:attribute name="color" type="SFColor" default="1 1 1"/>
					<xsd:attribute name="function" type="MFString"/>
					<xsd:attribute name="mode" type="MFString"/>
					<xsd:attribute name="source" type="MFString"/>
					<xsd:attribute name="transparent" type="SFBool" default="false"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="MultiTextureCoordinate">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DTextureCoordinateNode"/>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="MultiTextureTransform">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DTextureTransformNode"/>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="NavigationInfo">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#NavigationInfo"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DBindableNode">
					<xsd:attribute name="avatarSize" type="MFFloat" default="0.25 1.6 0.75"/>
					<xsd:attribute name="headlight" type="SFBool" default="true"/>
					<xsd:attribute name="speed" type="SFFloat" default="1"/>
					<xsd:attribute name="type" type="MFString" default="WALK ANY"/>
					<xsd:attribute name="visibilityLimit" type="SFFloat" default="0"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="Normal">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#Normal"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DNormalNode">
					<xsd:attribute name="vector" type="MFVec3f"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="NormalInterpolator">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#NormalInterpolator"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DInterpolatorNode">
					<xsd:attribute name="keyValue" type="MFVec3f"/>
					<xsd:attribute name="value_changed" type="MFVec3f"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="OrientationInterpolator">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#OrientationInterpolator"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DInterpolatorNode">
					<xsd:attribute name="keyValue" type="MFRotation"/>
					<xsd:attribute name="value_changed" type="SFRotation"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="PixelTexture">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#PixelTexture"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DTexture2DNode">
					<xsd:attribute name="image" type="SFImage" default="0 0 0"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="PlaneSensor">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#PlaneSensor"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DDragSensorNode">
					<xsd:attribute name="maxPosition" type="SFVec2f" default="-1 -1"/>
					<xsd:attribute name="minPosition" type="SFVec2f" default="0 0"/>
					<xsd:attribute name="offset" type="SFVec3f" default="0 0 0"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="PointLight">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#PointLight"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DLightNode">
					<xsd:attribute name="attenuation" type="SFVec3f" default="1 0 0"/>
					<xsd:attribute name="location" type="MFVec3f" default="0 0 0"/>
					<xsd:attribute name="radius" type="SFFloat" default="100"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="PointSet">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#PointSet"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DGeometryNode">
					<xsd:group ref="ColorCoordinateContentModel" minOccurs="0"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="Polyline2D">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3d.org/TaskGroups/x3d/X3DSpec_FCD/Part01/components/geometry2D.html#Polyline2D"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DGeometryNode">
					<xsd:attribute name="lineSegments" type="MFVec2f"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="Polypoint2D">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3d.org/TaskGroups/x3d/X3DSpec_FCD/Part01/components/geometry2D.html#Polypoint2D"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DGeometryNode">
					<xsd:attribute name="points" type="MFVec2f"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="PositionInterpolator">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#PositionInterpolator"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DInterpolatorNode">
					<xsd:attribute name="keyValue" type="MFVec3f"/>
					<xsd:attribute name="value_changed" type="SFVec3f"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="PositionInterpolator2D">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#PositionInterpolator"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DInterpolatorNode">
					<xsd:attribute name="keyValue" type="MFVec2f"/>
					<xsd:attribute name="value_changed" type="SFVec2f"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="ProximitySensor">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#ProximitySensor"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DEnvironmentalSensorNode">
					<xsd:attribute name="center" type="SFVec3f" default="0 0 0"/>
					<xsd:attribute name="size" type="SFVec3f" default="0 0 0"/>
					<xsd:attribute name="position_changed" type="SFVec3f"/>
					<xsd:attribute name="centerOfRotation_changed" type="SFVec3f"/>
					<xsd:attribute name="orientation_changed" type="SFRotation"/>
					<xsd:attribute name="enterTime" type="SFTime"/>
					<xsd:attribute name="exitTime" type="SFTime"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="Rectangle2D">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3d.org/TaskGroups/x3d/X3DSpec_FCD/Part01/components/geometry2D.html#Rectangle2D"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DGeometryNode">
					<xsd:attribute name="isFilled" type="SFBool" default="true"/>
					<xsd:attribute name="size" type="MFVec2f" default="2 2"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="ScalarInterpolator">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#ScalarInterpolator"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DInterpolatorNode">
					<xsd:attribute name="keyValue" type="MFFloat"/>
					<xsd:attribute name="value_changed" type="SFFloat"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="Script">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#Script"/>
		</xsd:annotation>
		<xsd:complexType mixed="true">
			<xsd:complexContent mixed="true">
				<xsd:extension base="X3DScriptNode">
					<xsd:attribute name="directOutput" type="SFBool"/>
					<xsd:attribute name="mustEvaluate" type="SFBool"/>
					<xsd:attribute name="otherInterfaces" type="xsd:string" fixed="X3DUrlObject"/>
					<xsd:attribute name="url" type="MFString"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="Shape">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#Shape"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DShapeNode"/>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="Sound">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#Sound"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DSoundNode">
					<xsd:attribute name="direction" type="SFVec3f" default="0 0 1"/>
					<xsd:attribute name="intensity" type="SFFloat" default="1"/>
					<xsd:attribute name="location" type="SFVec3f" default="0 0 0"/>
					<xsd:attribute name="maxBack" type="SFFloat" default="10"/>
					<xsd:attribute name="maxFront" type="SFFloat" default="10"/>
					<xsd:attribute name="minBack" type="SFFloat" default="1"/>
					<xsd:attribute name="minFront" type="SFFloat" default="1"/>
					<xsd:attribute name="priority" type="SFFloat" default="0"/>
					<xsd:attribute name="spatialize" type="SFBool" default="true"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="Sphere">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#Sphere"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DGeometryNode">
					<xsd:attribute name="radius" type="SFFloat" default="1"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="SphereSensor">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#SphereSensor"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DDragSensorNode">
					<xsd:attribute name="offset" type="SFRotation" default="0 1 0 0"/>
					<xsd:attribute name="rotation_changed" type="SFVec3f"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="SpotLight">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#SpotLight"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DLightNode">
					<xsd:attribute name="attenuation" type="SFVec3f" default="1 0 0"/>
					<xsd:attribute name="beamWidth" type="SFFloat" default="1.57"/>
					<xsd:attribute name="cutOffAngle" type="SFFloat" default="0.785"/>
					<xsd:attribute name="direction" type="MFVec3f" default="0 0 -1"/>
					<xsd:attribute name="location" type="MFVec3f" default="0 0 0"/>
					<xsd:attribute name="radius" type="SFFloat" default="100"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="StaticGroup">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DGroupingNode"/>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="StringSensor">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3d.org/TaskGroups/x3d/specification/part2/nodesDef.html#StringSensor"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DKeyDeviceSensorNode">
					<xsd:attribute name="enteredText" type="SFString"/>
					<xsd:attribute name="finalText" type="SFString"/>
					<xsd:attribute name="deletionAllowed" type="SFBool" default="true"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="Switch">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#Switch"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DGroupingNode">
					<xsd:attribute name="whichChoice" type="SFInt32" default="-1"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="Text">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#Text"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DGeometryNode">
					<xsd:sequence minOccurs="0">
						<xsd:group ref="TextChildContentModel"/>
					</xsd:sequence>
					<xsd:attribute name="string" type="SFString"/>
					<xsd:attribute name="length" type="MFFloat"/>
					<xsd:attribute name="maxExtent" type="SFFloat" default="0"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="TextureBackground">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#Background"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DBackgroundNode">
					<xsd:group ref="TextureBackgroundChildContentModel"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="TextureCoordinate">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#TextureCoordinate"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DTextureCoordinateNode">
					<xsd:attribute name="point" type="MFVec2f"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="TextureCoordinateGenerator">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="e"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DTextureCoordinateNode">
					<xsd:attribute name="mode" type="SFString" default="SPHERE"/>
					<xsd:attribute name="parameter" type="MFFloat"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="TextureTransform">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#TextureTransform"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DTextureTransform2DNode"/>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="TimeSensor">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#TimeSensor"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DTimeDependentNode">
					<xsd:attribute name="cycleInterval" type="SFTime" default="1"/>
					<xsd:attribute name="cycleTime" type="SFTime"/>
					<xsd:attribute name="fraction_changed" type="SFFloat"/>
					<xsd:attribute name="time" type="SFTime"/>
					<xsd:attribute name="otherInterfaces" type="xsd:string" fixed="X3DSensorNode"/>
					<xsd:attribute name="enabled" type="SFBool" default="true"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="TimeTrigger">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DChildNode">
					<xsd:attribute name="set_boolean" type="SFBool"/>
					<xsd:attribute name="triggerTime" type="SFBool"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="TouchSensor">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#TouchSensor"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DTouchSensorNode">
					<xsd:attribute name="hitNormal_changed" type="SFVec3f"/>
					<xsd:attribute name="hitPoint_changed" type="SFVec3f"/>
					<xsd:attribute name="hitTexCoord_changed" type="SFVec2f"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="Transform">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#Transform"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DGroupingNode">
					<xsd:attribute name="center" type="SFVec3f" default="0 0 0"/>
					<xsd:attribute name="rotation" type="SFRotation" default="0 0 1 0"/>
					<xsd:attribute name="scale" type="SFVec3f" default="1 1 1"/>
					<xsd:attribute name="scaleOrientation" type="SFRotation" default="0 0 1 0"/>
					<xsd:attribute name="translation" type="SFVec3f" default="0 0 0"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="TriangleFanSet">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3d.org/TaskGroups/x3d/X3DSpec_FCD/Part01/components/rendering.html#TriangleFanSet"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DComposedGeometryNode">
					<xsd:attribute name="creaseAngle" type="SFFloat" default="0"/>
					<xsd:attribute name="fanCount" type="MFInt32"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="TriangleSet">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3d.org/TaskGroups/x3d/X3DSpec_FCD/Part01/components/rendering.html#TriangleFanSet"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DComposedGeometryNode">
					<xsd:attribute name="creaseAngle" type="SFFloat" default="0"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="TriangleSet2D">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3d.org/TaskGroups/x3d/X3DSpec_FCD/Part01/components/geometry2D.html#TriangleSet2D"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DGeometryNode">
					<xsd:attribute name="vertices" type="MFVec2f"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="TriangleStripSet">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3d.org/TaskGroups/x3d/X3DSpec_FCD/Part01/components/rendering.html#TriangleFanSet"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DComposedGeometryNode">
					<xsd:attribute name="creaseAngle" type="SFFloat" default="0"/>
					<xsd:attribute name="stripCount" type="MFInt32"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="Viewpoint">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#Viewpoint"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DBindableNode">
					<xsd:attribute name="fieldOfView" type="SFFloat" default="0.7853"/>
					<xsd:attribute name="jump" type="SFBool" default="true"/>
					<xsd:attribute name="orientation" type="SFRotation" default="0 0 1 0"/>
					<xsd:attribute name="position" type="SFVec3f" default="0 0 10"/>
					<xsd:attribute name="description" type="SFString"/>
					<xsd:attribute name="centerOfRotation" type="SFVec3f" default="0 0 0"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="VisibilitySensor">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#VisibilitySensor"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DEnvironmentalSensorNode">
					<xsd:attribute name="center" type="SFVec3f" default="0 0 0"/>
					<xsd:attribute name="size" type="SFVec3f" default="0 0 0"/>
					<xsd:attribute name="enterTime" type="SFTime"/>
					<xsd:attribute name="exitTime" type="SFTime"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="WorldInfo">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#WorldInfo"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DInfoNode">
					<xsd:attribute name="info" type="MFString"/>
					<xsd:attribute name="title" type="SFString"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<!--======================================================================-->
	<!--Scene graph structural nodes now available as elements and via SAI: X3D, header, component, meta, Scene, ROUTE, USE, field, fieldValue, ProtoDeclare, ExternProtoDeclare, ProtoInstance-->
	<!--======================================================================-->
	<xsd:element name="component">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="www.web3D.org/TaskGroups/x3d/specification/part01/concepts.html#HeaderStatement"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="SceneGraphStructureNodeType">
					<xsd:attribute name="name" type="SFString" use="required"/>
					<xsd:attribute name="level" type="SFInt32" default="1"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="ExternProtoDeclare">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/concepts.html#4.9"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DPrototype">
					<xsd:sequence minOccurs="0" maxOccurs="unbounded">
						<xsd:element ref="field"/>
					</xsd:sequence>
					<xsd:attribute name="url" type="MFString" use="required"/>
					<xsd:attribute name="appinfo" type="SFString"/>
					<xsd:attribute name="description" type="SFString"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="field">
		<xsd:annotation>
			<xsd:appinfo> field can contain either attribute-value or node content.  field is used by ExternProtoDeclare, ProtoDeclare and Script nodes.</xsd:appinfo>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/concepts.html#4.7"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="SceneGraphStructureNodeType">
					<xsd:group ref="SceneGraphFragmentContentModel"/>
					<xsd:attribute name="name" type="SFString" use="required"/>
					<xsd:attribute name="accessType" type="accessTypeNames" use="required"/>
					<xsd:attribute name="type" type="fieldTypeName" use="required"/>
					<xsd:attribute name="value" type="SFString"/>
					<xsd:attribute name="appinfo" type="SFString"/>
					<xsd:attribute name="description" type="SFString"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="fieldValue">
		<xsd:annotation>
			<xsd:appinfo> fieldValue can contain either attribute-value or node content.  fieldValue is used by ProtoInstance nodes, reinitializing default values specified in ProtoDeclare field tags.</xsd:appinfo>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/concepts.html#4.7"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="SceneGraphStructureNodeType">
					<xsd:sequence minOccurs="0">
						<xsd:group ref="SceneGraphFragmentContentModel"/>
					</xsd:sequence>
					<xsd:attribute name="name" type="SFString" use="required"/>
					<xsd:attribute name="value" type="SFString"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="head">
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="SceneGraphStructureNodeType">
					<xsd:sequence>
						<xsd:element ref="component" minOccurs="0" maxOccurs="unbounded"/>
						<xsd:element ref="meta" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="meta">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="SceneGraphStructureNodeType">
					<xsd:attribute name="name" type="SFString" use="required"/>
					<xsd:attribute name="content" type="SFString" use="required"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="ProtoDeclare">
		<xsd:annotation>
			<xsd:appinfo> Nested ProtoDeclares, ProtoInstances are allowed by specification. </xsd:appinfo>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/concepts.html#4.8"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DPrototype">
					<xsd:sequence>
						<xsd:element ref="field" minOccurs="0" maxOccurs="unbounded"/>
						<xsd:group ref="SceneGraphFragmentWithPrototypeDeclarationsContentModel" minOccurs="0" maxOccurs="unbounded"/>
						<!-- nested ProtoDeclares, ProtoInstances are allowed by specification. -->
					</xsd:sequence>
					<xsd:attribute name="appinfo" type="SFString"/>
					<xsd:attribute name="description" type="SFString"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="ProtoInstance">
		<xsd:annotation>
			<xsd:appinfo> Nested ProtoDeclares, ProtoInstances are allowed by specification. ProtoInstance contained content normally captured via fieldValue initializations.</xsd:appinfo>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DPrototype">
					<xsd:sequence>
						<xsd:element ref="fieldValue" minOccurs="0" maxOccurs="unbounded"/>
						<xsd:group ref="SceneGraphFragmentContentModel" minOccurs="0" maxOccurs="unbounded"/>
						<!-- need IS/connect -->
						<!-- questionable addition:  allow direct children, or let fieldValue name="children" handle them -->
					</xsd:sequence>
					<xsd:attribute name="otherInterfaces" type="xsd:string" fixed="X3DNode"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="ROUTE">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/technicalinfo/specifications/vrml97/part1/concepts.html#4.10.2">ROUTEs can also be added or removed via the Scene node, or via a ProtoDeclare node.</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="SceneGraphStructureNodeType">
					<xsd:attribute name="fromNode" type="xsd:IDREF"/>
					<xsd:attribute name="fromField" type="SFString"/>
					<xsd:attribute name="toNode" type="xsd:IDREF"/>
					<xsd:attribute name="toField" type="SFString"/>
					<xsd:attribute name="otherInterfaces" type="xsd:string" fixed="X3DChildNode"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="EXPORT">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="SceneGraphStructureNodeType">
					<xsd:attribute name="localDEF" type="xsd:IDREF" use="required"/>
					<xsd:attribute name="exportedDEF" type="xsd:NMTOKEN"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="IMPORT">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="SceneGraphStructureNodeType">
					<xsd:attribute name="inlineDEF" type="xsd:IDREF" use="required"/>
					<xsd:attribute name="importedDEF" type="xsd:NMTOKEN" use="required"/>
					<xsd:attribute name="AS" type="xsd:ID"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="Scene">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="SceneGraphStructureNodeType">
					<xsd:choice minOccurs="0" maxOccurs="unbounded">
						<xsd:group ref="GroupingNodeChildContentModel"/>
					</xsd:choice>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="X3D">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="SceneGraphStructureNodeType">
					<xsd:sequence>
						<xsd:element ref="head" minOccurs="0"/>
						<xsd:element ref="Scene"/>
					</xsd:sequence>
					<xsd:attribute name="version" type="SFString" use="optional" default="3.0"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd: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-->
	<xsd:element name="EspduTransform">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/WorkingGroups/vrtp/dis-java-vrml/SoftwareReference.html#dis"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DGroupingNode">
					<xsd:attribute name="marking" type="SFString"/>
					<xsd:attribute name="siteID" type="SFInt32"/>
					<xsd:attribute name="applicationID" type="SFInt32"/>
					<xsd:attribute name="entityID" type="SFInt32"/>
					<xsd:attribute name="forceID" type="SFInt32"/>
					<xsd:attribute name="entityKind" type="SFInt32"/>
					<xsd:attribute name="entityDomain" type="SFInt32"/>
					<xsd:attribute name="entityCountry" type="SFInt32"/>
					<xsd:attribute name="entityCategory" type="SFInt32"/>
					<xsd:attribute name="entitySubCategory" type="SFInt32"/>
					<xsd:attribute name="entitySpecific" type="SFInt32"/>
					<xsd:attribute name="entityExtra" type="SFInt32"/>
					<xsd:attribute name="readInterval" type="SFTime"/>
					<xsd:attribute name="writeInterval" type="SFTime"/>
					<xsd:attribute name="networkMode" type="networkModeValues" default="standAlone"/>
					<xsd:attribute name="translation" type="SFVec3f" default="0 0 0"/>
					<xsd:attribute name="rotation" type="SFRotation" default="0 0 1 0"/>
					<xsd:attribute name="scale" type="SFVec3f" default="1 1 1"/>
					<xsd:attribute name="scaleOrientation" type="SFRotation" default="0 0 1 0"/>
					<xsd:attribute name="center" type="SFVec3f" default="0 0 0"/>
					<xsd:attribute name="address" type="SFString"/>
					<xsd:attribute name="port" type="SFInt32"/>
					<xsd:attribute name="multicastRelayHost" type="SFString"/>
					<xsd:attribute name="multicastRelayPort" type="SFInt32"/>
					<xsd:attribute name="rtpHeaderExpected" type="SFBool"/>
					<xsd:attribute name="rtpHeaderHeard" type="SFBool"/>
					<xsd:attribute name="isStandAlone" type="SFBool"/>
					<xsd:attribute name="isNetworkReader" type="SFBool"/>
					<xsd:attribute name="isNetworkWriter" type="SFBool"/>
					<xsd:attribute name="isActive" type="SFBool"/>
					<xsd:attribute name="timestamp" type="SFTime"/>
					<xsd:attribute name="deadReckoning" type="SFBool"/>
					<xsd:attribute name="linearVelocity" type="SFVec3f"/>
					<xsd:attribute name="linearAcceleration" type="SFVec3f"/>
					<xsd:attribute name="isCollided" type="SFBool"/>
					<xsd:attribute name="collideTime" type="SFTime"/>
					<xsd:attribute name="isDetonated" type="SFBool"/>
					<xsd:attribute name="detonateTime" type="SFTime"/>
					<xsd:attribute name="fired1" type="SFBool"/>
					<xsd:attribute name="fired2" type="SFBool"/>
					<xsd:attribute name="firedTime" type="SFTime"/>
					<xsd:attribute name="munitionStartPoint" type="SFVec3f"/>
					<xsd:attribute name="munitionEndPoint" type="SFVec3f"/>
					<xsd:attribute name="munitionSiteID" type="SFInt32"/>
					<xsd:attribute name="munitionApplicationID" type="SFInt32"/>
					<xsd:attribute name="munitionEntityID" type="SFInt32"/>
					<xsd:attribute name="fireMissionIndex" type="SFInt32"/>
					<xsd:attribute name="warhead" type="SFInt32"/>
					<xsd:attribute name="fuse" type="SFInt32"/>
					<xsd:attribute name="munitionQuantity" type="SFInt32"/>
					<xsd:attribute name="firingRate" type="SFInt32"/>
					<xsd:attribute name="firingRange" type="SFInt32"/>
					<xsd:attribute name="articulationParameterCount" type="SFInt32"/>
					<xsd:attribute name="articulationParameterDesignatorArray" type="MFInt32"/>
					<xsd:attribute name="articulationParameterChangeIndicatorArray" type="MFInt32"/>
					<xsd:attribute name="articulationParameterIdPartAttachedArray" type="MFInt32"/>
					<xsd:attribute name="articulationParameterTypeArray" type="MFInt32"/>
					<xsd:attribute name="articulationParameterArray" type="MFFloat"/>
					<xsd:attribute name="set_articulationParameterValue0" type="SFFloat"/>
					<xsd:attribute name="set_articulationParameterValue1" type="SFFloat"/>
					<xsd:attribute name="set_articulationParameterValue2" type="SFFloat"/>
					<xsd:attribute name="set_articulationParameterValue3" type="SFFloat"/>
					<xsd:attribute name="set_articulationParameterValue4" type="SFFloat"/>
					<xsd:attribute name="set_articulationParameterValue5" type="SFFloat"/>
					<xsd:attribute name="set_articulationParameterValue6" type="SFFloat"/>
					<xsd:attribute name="set_articulationParameterValue7" type="SFFloat"/>
					<xsd:attribute name="articulationParameterValue0_changed" type="SFFloat"/>
					<xsd:attribute name="articulationParameterValue1_changed" type="SFFloat"/>
					<xsd:attribute name="articulationParameterValue2_changed" type="SFFloat"/>
					<xsd:attribute name="articulationParameterValue3_changed" type="SFFloat"/>
					<xsd:attribute name="articulationParameterValue4_changed" type="SFFloat"/>
					<xsd:attribute name="articulationParameterValue5_changed" type="SFFloat"/>
					<xsd:attribute name="articulationParameterValue6_changed" type="SFFloat"/>
					<xsd:attribute name="articulationParameterValue7_changed" type="SFFloat"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="ReceiverPdu">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/WorkingGroups/vrtp/dis-java-vrml/SoftwareReference.html#dis"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DGroupingNode">
					<xsd:attribute name="whichGeometry" type="SFInt32"/>
					<xsd:attribute name="readInterval" type="SFTime"/>
					<xsd:attribute name="writeInterval" type="SFTime"/>
					<xsd:attribute name="networkMode" type="networkModeValues" default="standAlone"/>
					<xsd:attribute name="isStandAlone" type="SFBool"/>
					<xsd:attribute name="isNetworkReader" type="SFBool"/>
					<xsd:attribute name="isNetworkWriter" type="SFBool"/>
					<xsd:attribute name="siteID" type="SFInt32"/>
					<xsd:attribute name="applicationID" type="SFInt32"/>
					<xsd:attribute name="entityID" type="SFInt32"/>
					<xsd:attribute name="address" type="SFString"/>
					<xsd:attribute name="port" type="SFInt32"/>
					<xsd:attribute name="multicastRelayHost" type="SFString"/>
					<xsd:attribute name="multicastRelayPort" type="SFInt32"/>
					<xsd:attribute name="rtpHeaderExpected" type="SFBool"/>
					<xsd:attribute name="isActive" type="SFBool"/>
					<xsd:attribute name="timestamp" type="SFTime"/>
					<xsd:attribute name="rtpHeaderHeard" type="SFBool"/>
					<xsd:attribute name="radioID" type="SFInt32"/>
					<xsd:attribute name="receivedPower" type="SFInt32"/>
					<xsd:attribute name="receiverState" type="SFInt32"/>
					<xsd:attribute name="transmitterSiteID" type="SFInt32"/>
					<xsd:attribute name="transmitterApplicationID" type="SFInt32"/>
					<xsd:attribute name="transmitterEntityID" type="SFInt32"/>
					<xsd:attribute name="transmitterRadioID" type="SFInt32"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="SignalPdu">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/WorkingGroups/vrtp/dis-java-vrml/SoftwareReference.html#dis"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DGroupingNode">
					<xsd:attribute name="whichGeometry" type="SFInt32"/>
					<xsd:attribute name="readInterval" type="SFTime"/>
					<xsd:attribute name="writeInterval" type="SFTime"/>
					<xsd:attribute name="networkMode" type="networkModeValues" default="standAlone"/>
					<xsd:attribute name="isStandAlone" type="SFBool"/>
					<xsd:attribute name="isNetworkReader" type="SFBool"/>
					<xsd:attribute name="isNetworkWriter" type="SFBool"/>
					<xsd:attribute name="siteID" type="SFInt32"/>
					<xsd:attribute name="applicationID" type="SFInt32"/>
					<xsd:attribute name="entityID" type="SFInt32"/>
					<xsd:attribute name="address" type="SFString"/>
					<xsd:attribute name="port" type="SFInt32"/>
					<xsd:attribute name="multicastRelayHost" type="SFString"/>
					<xsd:attribute name="multicastRelayPort" type="SFInt32"/>
					<xsd:attribute name="rtpHeaderExpected" type="SFBool"/>
					<xsd:attribute name="isActive" type="SFBool"/>
					<xsd:attribute name="timestamp" type="SFTime"/>
					<xsd:attribute name="rtpHeaderHeard" type="SFBool"/>
					<xsd:attribute name="radioID" type="SFInt32"/>
					<xsd:attribute name="encodingScheme" type="SFInt32"/>
					<xsd:attribute name="tdlType" type="SFInt32"/>
					<xsd:attribute name="sampleRate" type="SFInt32"/>
					<xsd:attribute name="samples" type="SFInt32"/>
					<xsd:attribute name="dataLength" type="SFInt32"/>
					<xsd:attribute name="data" type="MFInt32"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="TransmitterPdu">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.web3D.org/WorkingGroups/vrtp/dis-java-vrml/SoftwareReference.html#dis"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DGroupingNode">
					<xsd:attribute name="whichGeometry" type="SFInt32"/>
					<xsd:attribute name="readInterval" type="SFTime"/>
					<xsd:attribute name="writeInterval" type="SFTime"/>
					<xsd:attribute name="networkMode" type="networkModeValues" default="standAlone"/>
					<xsd:attribute name="isStandAlone" type="SFBool"/>
					<xsd:attribute name="isNetworkReader" type="SFBool"/>
					<xsd:attribute name="isNetworkWriter" type="SFBool"/>
					<xsd:attribute name="siteID" type="SFInt32"/>
					<xsd:attribute name="applicationID" type="SFInt32"/>
					<xsd:attribute name="entityID" type="SFInt32"/>
					<xsd:attribute name="address" type="SFString"/>
					<xsd:attribute name="port" type="SFInt32"/>
					<xsd:attribute name="multicastRelayHost" type="SFString"/>
					<xsd:attribute name="multicastRelayPort" type="SFInt32"/>
					<xsd:attribute name="rtpHeaderExpected" type="SFBool"/>
					<xsd:attribute name="isActive" type="SFBool"/>
					<xsd:attribute name="timestamp" type="SFTime"/>
					<xsd:attribute name="rtpHeaderHeard" type="SFBool"/>
					<xsd:attribute name="radioID" type="SFInt32"/>
					<xsd:attribute name="antennaLocation" type="SFVec3f"/>
					<xsd:attribute name="antennaPatternLength" type="SFInt32"/>
					<xsd:attribute name="antennaPatternType" type="SFInt32"/>
					<xsd:attribute name="cryptoKeyID" type="SFInt32"/>
					<xsd:attribute name="cryptoSystem" type="SFInt32"/>
					<xsd:attribute name="frequency" type="SFInt32"/>
					<xsd:attribute name="inputSource" type="SFInt32"/>
					<xsd:attribute name="lengthOfModulationParameters" type="SFInt32"/>
					<xsd:attribute name="modulationTypeDetail" type="SFInt32"/>
					<xsd:attribute name="modulationTypeMajor" type="SFInt32"/>
					<xsd:attribute name="modulationTypeSpreadSpectrum" type="SFInt32"/>
					<xsd:attribute name="modulationTypeSystem" type="SFInt32"/>
					<xsd:attribute name="power" type="SFInt32"/>
					<xsd:attribute name="radioEntityTypeCategory" type="SFInt32"/>
					<xsd:attribute name="radioEntityTypeCountry" type="SFInt32"/>
					<xsd:attribute name="radioEntityTypeDomain" type="SFInt32"/>
					<xsd:attribute name="radioEntityTypeKind" type="SFInt32"/>
					<xsd:attribute name="radioEntityTypeNomenclature" type="SFInt32"/>
					<xsd:attribute name="radioEntityTypeNomenclatureVersion" type="SFInt32"/>
					<xsd:attribute name="relativeAntennaLocation" type="SFInt32"/>
					<xsd:attribute name="transmitFrequencyBandwidth" type="SFInt32"/>
					<xsd:attribute name="transmitState" type="SFInt32"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<!--======================================================================-->
	<!--GeoVrml 2.0 Nodes-->
	<!--needs to be split into two enumerations for validatability-->
	<xsd:simpleType name="geoSystemType">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.geovrml.org/2.0/doc/defs.html"/>
		</xsd:annotation>
		<xsd:restriction base="SFString">
			<xsd:enumeration value="GC">
				<xsd:annotation>
					<xsd:appinfo> Geocentric, Earth-centered, Earth-fixed</xsd:appinfo>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="GD">
				<xsd:annotation>
					<xsd:appinfo> Geodetic</xsd:appinfo>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="GEI">
				<xsd:annotation>
					<xsd:appinfo> Geocentric Equatorial Inertial (GeoMetadata node only)</xsd:appinfo>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="GSE">
				<xsd:annotation>
					<xsd:appinfo> Geocentric Solar Ecliptic (GeoMetadata node only)</xsd:appinfo>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="GSM">
				<xsd:annotation>
					<xsd:appinfo> Geocentric Solar Magnetospheric (GeoMetadata node only)</xsd:appinfo>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="LCC">
				<xsd:annotation>
					<xsd:appinfo> Lambert Conformal Conic PCS (GeoMetadata node only)</xsd:appinfo>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="LSR">
				<xsd:annotation>
					<xsd:appinfo> Local Space Rectangular (GeoMetadata node only)</xsd:appinfo>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="PS">
				<xsd:annotation>
					<xsd:appinfo> Polar Stereographic PCS (GeoMetadata node only)</xsd:appinfo>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="SM">
				<xsd:annotation>
					<xsd:appinfo> Solar Magnetic (GeoMetadata node only)</xsd:appinfo>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="TM">
				<xsd:annotation>
					<xsd:appinfo> Transverse Mercator (GeoMetadata node only)</xsd:appinfo>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="UTM">
				<xsd:annotation>
					<xsd:appinfo> Universal Transverse Mercator</xsd:appinfo>
				</xsd:annotation>
			</xsd:enumeration>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:element name="GeoCoordinate">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.geovrml.org/1.0/doc/nodes.html#GeoCoordinate"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DCoordinateNode">
					<xsd:sequence>
						<xsd:element name="GeoOrigin" minOccurs="0" maxOccurs="1"/>
					</xsd:sequence>
					<xsd:attribute name="geoSystem" type="geoSystemType" default="GD"/>
					<xsd:attribute name="point" type="MFVec3d"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="GeoElevationGrid">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.geovrml.org/1.0/doc/nodes.html#GeoElevationGrid"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DGeometryNode">
					<xsd:sequence>
						<xsd:element name="GeoOrigin" minOccurs="0" maxOccurs="1"/>
						<xsd:group ref="ColorNormalTexCoordContentModel"/>
					</xsd:sequence>
					<xsd:attribute name="geoSystem" type="geoSystemType" default="GD"/>
					<xsd:attribute name="geoGridOrigin" type="SFVec3d" default="0 0 0"/>
					<xsd:attribute name="height" type="MFDouble" default="0 0"/>
					<xsd:attribute name="ccw" type="SFBool" default=""/>
					<xsd:attribute name="colorPerVertex" type="SFBool" default="true"/>
					<xsd:attribute name="creaseAngle" type="SFFloat" default="true"/>
					<xsd:attribute name="normalPerVertex" type="SFBool" default="true"/>
					<xsd:attribute name="solid" type="SFBool" default="true"/>
					<xsd:attribute name="xDimension" type="SFInt32" default="0"/>
					<xsd:attribute name="xSpacing" type="SFFloat" default="1.0"/>
					<xsd:attribute name="yScale" type="SFFloat" default="1"/>
					<xsd:attribute name="zDimension" type="SFInt32" default="0"/>
					<xsd:attribute name="zSpacing" type="SFFloat" default="1.0"/>
					<xsd:attribute name="set_height" type="MFDouble"/>
					<xsd:attribute name="set_yScale" type="SFFloat"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="GeoLocation">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.geovrml.org/1.0/doc/nodes.html#GeoLocation"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DGroupingNode">
					<xsd:sequence>
						<xsd:element name="GeoOrigin" minOccurs="0" maxOccurs="1"/>
					</xsd:sequence>
					<xsd:attribute name="geoSystem" type="geoSystemType" default="GD"/>
					<xsd:attribute name="geoCoords" type="SFVec3d" default="0 0 0"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="GeoLOD">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.geovrml.org/1.0/doc/nodes.html#GeoLOD"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DGroupingNode">
					<xsd:sequence>
						<xsd:element name="GeoOrigin" minOccurs="0" maxOccurs="1"/>
					</xsd:sequence>
					<xsd:attribute name="geoSystem" type="geoSystemType" default="GD"/>
					<xsd:attribute name="rootUrl" type="MFString"/>
					<xsd:attribute name="child1Url" type="MFString"/>
					<xsd:attribute name="child2Url" type="MFString"/>
					<xsd:attribute name="child3Url" type="MFString"/>
					<xsd:attribute name="child4Url" type="MFString"/>
					<xsd:attribute name="center" type="MFVec3f" default="0 0 0"/>
					<xsd:attribute name="range" type="MFFloat" default="10"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="GeoMetadata">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.geovrml.org/1.0/doc/nodes.html#GeoMetadata"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DInfoNode">
					<xsd:sequence>
						<xsd:element name="data" type="X3DNode" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
					<xsd:attribute name="url" type="MFString"/>
					<xsd:attribute name="data" type="xsd:IDREFS"/>
					<xsd:attribute name="summary" type="MFString"/>
					<xsd:attribute name="title" type="SFString"/>
					<xsd:attribute name="description" type="SFString"/>
					<xsd:attribute name="coordinateSystem" type="SFString"/>
					<xsd:attribute name="horizontalDatum" type="SFString"/>
					<xsd:attribute name="verticalDatum" type="SFString"/>
					<xsd:attribute name="ellipsoid" type="SFString"/>
					<xsd:attribute name="extent" type="SFString"/>
					<xsd:attribute name="resolution" type="SFString"/>
					<xsd:attribute name="originator" type="SFString"/>
					<xsd:attribute name="copyright" type="SFString"/>
					<xsd:attribute name="date" type="SFString"/>
					<xsd:attribute name="metadataFormat" type="SFString"/>
					<xsd:attribute name="dataUrl" type="SFString"/>
					<xsd:attribute name="dataFormat" type="SFString"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="GeoOrigin">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.geovrml.org/1.0/doc/nodes.html#GeoOrigin"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DInfoNode">
					<xsd:attribute name="geoSystem" type="geoSystemType" default="GD"/>
					<xsd:attribute name="geoCoords" type="SFVec3d" default="0 0 0"/>
					<xsd:attribute name="rotateYUp" type="SFBool" default="false"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="GeoPositionInterpolator">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.geovrml.org/1.0/doc/nodes.html#GeoPositionInterpolator"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DInterpolatorNode">
					<xsd:sequence>
						<xsd:element name="GeoOrigin" minOccurs="0" maxOccurs="1"/>
					</xsd:sequence>
					<xsd:attribute name="geoSystem" type="geoSystemType" default="GD"/>
					<xsd:attribute name="keyValue" type="MFVec3d"/>
					<xsd:attribute name="value_changed" type="SFVec3d"/>
					<xsd:attribute name="geovalue_changed" type="SFVec3d"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="GeoTouchSensor">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.geovrml.org/1.0/doc/nodes.html#GeoTouchSensor"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DTouchSensorNode">
					<xsd:sequence>
						<xsd:element name="GeoOrigin" minOccurs="0" maxOccurs="1"/>
					</xsd:sequence>
					<xsd:attribute name="geoSystem" type="geoSystemType" default="GD"/>
					<xsd:attribute name="hitGeoCoord_changed" type="SFVec3d"/>
					<xsd:attribute name="hitNormal_changed" type="SFVec3f"/>
					<xsd:attribute name="hitPoint_changed" type="SFVec3f"/>
					<xsd:attribute name="hitTexCoord_changed" type="SFVec2f"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="GeoViewpoint">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.geovrml.org/1.0/doc/nodes.html#GeoViewpoint"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DBindableNode">
					<xsd:sequence>
						<xsd:element name="GeoOrigin" minOccurs="0" maxOccurs="1"/>
					</xsd:sequence>
					<xsd:attribute name="geoSystem" type="geoSystemType" default="GD"/>
					<xsd:attribute name="fieldOfView" type="SFFloat" default="0.785398"/>
					<xsd:attribute name="jump" type="SFBool" default="true"/>
					<xsd:attribute name="orientation" type="SFRotation" default="0 0 1 0"/>
					<xsd:attribute name="position" type="SFVec3d" default="0 0 100000"/>
					<xsd:attribute name="description" type="SFString"/>
					<xsd:attribute name="headlight" type="SFBool" default="true"/>
					<xsd:attribute name="navType" type="MFString" default="EXAMINE ANY"/>
					<xsd:attribute name="speedFactor" type="SFFloat" default="1"/>
					<xsd:attribute name="set_bind" type="SFBool"/>
					<xsd:attribute name="set_orientation" type="SFRotation"/>
					<xsd:attribute name="set_position" type="SFVec3d"/>
					<xsd:attribute name="bindTime" type="SFTime"/>
					<xsd:attribute name="isBound" type="SFBool"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<!--======================================================================-->
	<!--Humanoid Animation (H-Anim) 1.1 Nodes-->
	<xsd:simpleType name="jointName">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://ecetemp.uwaterloo.ca/~h-anim/spec1.1/#hierarchy"/>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="c1"/>
			<xsd:enumeration value="c2"/>
			<xsd:enumeration value="c3"/>
			<xsd:enumeration value="c4"/>
			<xsd:enumeration value="c5"/>
			<xsd:enumeration value="c6"/>
			<xsd:enumeration value="c7"/>
			<xsd:enumeration value="HumanoidRoot"/>
			<xsd:enumeration value="jaw"/>
			<xsd:enumeration value="l_acromioclavicular"/>
			<xsd:enumeration value="l_ankle"/>
			<xsd:enumeration value="l_calf"/>
			<xsd:enumeration value="l_clavicle"/>
			<xsd:enumeration value="l_elbow"/>
			<xsd:enumeration value="l_eyeball"/>
			<xsd:enumeration value="l_eyeball_joint"/>
			<xsd:enumeration value="l_eyebrow"/>
			<xsd:enumeration value="l_eyebrow_joint"/>
			<xsd:enumeration value="l_eyelid"/>
			<xsd:enumeration value="l_eyelid_joint"/>
			<xsd:enumeration value="l_forearm"/>
			<xsd:enumeration value="l_forefoot"/>
			<xsd:enumeration value="l_hand"/>
			<xsd:enumeration value="l_hindfoot"/>
			<xsd:enumeration value="l_hip"/>
			<xsd:enumeration value="l_index_distal"/>
			<xsd:enumeration value="l_index_metacarpal"/>
			<xsd:enumeration value="l_index_middle"/>
			<xsd:enumeration value="l_index_proximal"/>
			<xsd:enumeration value="l_index0"/>
			<xsd:enumeration value="l_index1"/>
			<xsd:enumeration value="l_index2"/>
			<xsd:enumeration value="l_index3"/>
			<xsd:enumeration value="l_knee"/>
			<xsd:enumeration value="l_metatarsal"/>
			<xsd:enumeration value="l_middistal"/>
			<xsd:enumeration value="l_middle_distal"/>
			<xsd:enumeration value="l_middle_metacarpal"/>
			<xsd:enumeration value="l_middle_middle"/>
			<xsd:enumeration value="l_middle_proximal"/>
			<xsd:enumeration value="l_middle0"/>
			<xsd:enumeration value="l_middle1"/>
			<xsd:enumeration value="l_middle2"/>
			<xsd:enumeration value="l_middle3"/>
			<xsd:enumeration value="l_midproximal"/>
			<xsd:enumeration value="l_midtarsal"/>
			<xsd:enumeration value="l_pinky_distal"/>
			<xsd:enumeration value="l_pinky_metacarpal"/>
			<xsd:enumeration value="l_pinky_middle"/>
			<xsd:enumeration value="l_pinky_proximal"/>
			<xsd:enumeration value="l_pinky0"/>
			<xsd:enumeration value="l_pinky1"/>
			<xsd:enumeration value="l_pinky2"/>
			<xsd:enumeration value="l_pinky3"/>
			<xsd:enumeration value="l_ring_distal"/>
			<xsd:enumeration value="l_ring_metacarpal"/>
			<xsd:enumeration value="l_ring_middle"/>
			<xsd:enumeration value="l_ring_proximal"/>
			<xsd:enumeration value="l_ring0"/>
			<xsd:enumeration value="l_ring1"/>
			<xsd:enumeration value="l_ring2"/>
			<xsd:enumeration value="l_ring3"/>
			<xsd:enumeration value="l_scapula"/>
			<xsd:enumeration value="l_shoulder"/>
			<xsd:enumeration value="l_sternoclavicular"/>
			<xsd:enumeration value="l_subtalar"/>
			<xsd:enumeration value="l_thigh"/>
			<xsd:enumeration value="l_thumb_distal"/>
			<xsd:enumeration value="l_thumb_metacarpal"/>
			<xsd:enumeration value="l_thumb_proximal"/>
			<xsd:enumeration value="l_thumb1"/>
			<xsd:enumeration value="l_thumb2"/>
			<xsd:enumeration value="l_thumb3"/>
			<xsd:enumeration value="l_upperarm"/>
			<xsd:enumeration value="l_wrist"/>
			<xsd:enumeration value="l1"/>
			<xsd:enumeration value="l2"/>
			<xsd:enumeration value="l3"/>
			<xsd:enumeration value="l4"/>
			<xsd:enumeration value="l5"/>
			<xsd:enumeration value="pelvis"/>
			<xsd:enumeration value="r_acromioclavicular"/>
			<xsd:enumeration value="r_ankle"/>
			<xsd:enumeration value="r_calf"/>
			<xsd:enumeration value="r_clavicle"/>
			<xsd:enumeration value="r_elbow"/>
			<xsd:enumeration value="r_eyeball"/>
			<xsd:enumeration value="r_eyeball_joint"/>
			<xsd:enumeration value="r_eyebrow"/>
			<xsd:enumeration value="r_eyebrow_joint"/>
			<xsd:enumeration value="r_eyelid"/>
			<xsd:enumeration value="r_eyelid_joint"/>
			<xsd:enumeration value="r_forearm"/>
			<xsd:enumeration value="r_forefoot"/>
			<xsd:enumeration value="r_hand"/>
			<xsd:enumeration value="r_hindfoot"/>
			<xsd:enumeration value="r_hip"/>
			<xsd:enumeration value="r_index_distal"/>
			<xsd:enumeration value="r_index_metacarpal"/>
			<xsd:enumeration value="r_index_middle"/>
			<xsd:enumeration value="r_index_proximal"/>
			<xsd:enumeration value="r_index0"/>
			<xsd:enumeration value="r_index1"/>
			<xsd:enumeration value="r_index2"/>
			<xsd:enumeration value="r_index3"/>
			<xsd:enumeration value="r_knee"/>
			<xsd:enumeration value="r_metatarsal"/>
			<xsd:enumeration value="r_middistal"/>
			<xsd:enumeration value="r_middle_distal"/>
			<xsd:enumeration value="r_middle_metacarpal"/>
			<xsd:enumeration value="r_middle_middle"/>
			<xsd:enumeration value="r_middle_proximal"/>
			<xsd:enumeration value="r_middle0"/>
			<xsd:enumeration value="r_middle1"/>
			<xsd:enumeration value="r_middle2"/>
			<xsd:enumeration value="r_middle3"/>
			<xsd:enumeration value="r_midproximal"/>
			<xsd:enumeration value="r_midtarsal"/>
			<xsd:enumeration value="r_pinky_distal"/>
			<xsd:enumeration value="r_pinky_metacarpal"/>
			<xsd:enumeration value="r_pinky_middle"/>
			<xsd:enumeration value="r_pinky_proximal"/>
			<xsd:enumeration value="r_pinky0"/>
			<xsd:enumeration value="r_pinky1"/>
			<xsd:enumeration value="r_pinky2"/>
			<xsd:enumeration value="r_pinky3"/>
			<xsd:enumeration value="r_ring_distal"/>
			<xsd:enumeration value="r_ring_metacarpal"/>
			<xsd:enumeration value="r_ring_middle"/>
			<xsd:enumeration value="r_ring_proximal"/>
			<xsd:enumeration value="r_ring0"/>
			<xsd:enumeration value="r_ring1"/>
			<xsd:enumeration value="r_ring2"/>
			<xsd:enumeration value="r_ring3"/>
			<xsd:enumeration value="r_scapula"/>
			<xsd:enumeration value="r_shoulder"/>
			<xsd:enumeration value="r_sternoclavicular"/>
			<xsd:enumeration value="r_subtalar"/>
			<xsd:enumeration value="r_thigh"/>
			<xsd:enumeration value="r_thumb_distal"/>
			<xsd:enumeration value="r_thumb_metacarpal"/>
			<xsd:enumeration value="r_thumb_proximal"/>
			<xsd:enumeration value="r_thumb1"/>
			<xsd:enumeration value="r_thumb2"/>
			<xsd:enumeration value="r_thumb3"/>
			<xsd:enumeration value="r_upperarm"/>
			<xsd:enumeration value="r_wrist"/>
			<xsd:enumeration value="sacroiliac"/>
			<xsd:enumeration value="sacrum"/>
			<xsd:enumeration value="skull"/>
			<xsd:enumeration value="skullbase"/>
			<xsd:enumeration value="t1"/>
			<xsd:enumeration value="t2"/>
			<xsd:enumeration value="t3"/>
			<xsd:enumeration value="t4"/>
			<xsd:enumeration value="t5"/>
			<xsd:enumeration value="t6"/>
			<xsd:enumeration value="t7"/>
			<xsd:enumeration value="t8"/>
			<xsd:enumeration value="t9"/>
			<xsd:enumeration value="t10"/>
			<xsd:enumeration value="t11"/>
			<xsd:enumeration value="t12"/>
			<xsd:enumeration value="temporomandibular"/>
			<xsd:enumeration value="vc1"/>
			<xsd:enumeration value="vc2"/>
			<xsd:enumeration value="vc3"/>
			<xsd:enumeration value="vc4"/>
			<xsd:enumeration value="vc5"/>
			<xsd:enumeration value="vc6"/>
			<xsd:enumeration value="vc7"/>
			<xsd:enumeration value="vl1"/>
			<xsd:enumeration value="vl2"/>
			<xsd:enumeration value="vl3"/>
			<xsd:enumeration value="vl4"/>
			<xsd:enumeration value="vl5"/>
			<xsd:enumeration value="vt1"/>
			<xsd:enumeration value="vt2"/>
			<xsd:enumeration value="vt3"/>
			<xsd:enumeration value="vt4"/>
			<xsd:enumeration value="vt5"/>
			<xsd:enumeration value="vt6"/>
			<xsd:enumeration value="vt7"/>
			<xsd:enumeration value="vt8"/>
			<xsd:enumeration value="vt9"/>
			<xsd:enumeration value="vt10"/>
			<xsd:enumeration value="vt11"/>
			<xsd:enumeration value="vt12"/>
		</xsd:restriction>
	</xsd:simpleType>
	<!-- needed? -->
	<xsd:complexType name="X3DHumanoidNode" abstract="true" mixed="false">
		<xsd:annotation>
			<xsd:appinfo> X3DHumanoidNode enables extensibility for the Humanoid node.</xsd:appinfo>
			<xsd:documentation source="http://ece.uwaterloo.ca/~h-anim/spec1.1/#humanoid"/>
		</xsd:annotation>
		<xsd:complexContent mixed="false">
			<xsd:extension base="X3DChildNode"/>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:element name="HAnimDisplacer">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://ece.uwaterloo.ca/~h-anim/spec1.1/#displacer"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DGeometricPropertyNode">
					<xsd:attribute name="name" type="SFString"/>
					<xsd:attribute name="coordIndex" type="MFInt32"/>
					<xsd:attribute name="displacements" type="MFVec3f"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="humanoidBodyType" abstract="true">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://ece.uwaterloo.ca/~h-anim/spec1.1/#humanoid"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="ContainedNodeLabel"/>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="HAnimHumanoid">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://ece.uwaterloo.ca/~h-anim/spec1.1/#humanoid"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DHumanoidNode">
					<xsd:attribute name="name" type="SFString"/>
					<xsd:attribute name="center" type="SFVec3f" default="0 0 0"/>
					<xsd:attribute name="rotation" type="SFRotation" default="0 0 1 0"/>
					<xsd:attribute name="scale" type="SFVec3f" default="1 1 1"/>
					<xsd:attribute name="scaleOrientation" type="SFRotation" default="0 0 1 0"/>
					<xsd:attribute name="translation" type="SFVec3f" default="0 0 0"/>
					<xsd:attribute name="info" type="MFString"/>
					<xsd:attribute name="authorName" type="SFString"/>
					<xsd:attribute name="authorEmail" type="SFString"/>
					<xsd:attribute name="copyright" type="SFString"/>
					<xsd:attribute name="creationDate" type="SFString"/>
					<xsd:attribute name="usageRestrictions" type="SFString"/>
					<xsd:attribute name="humanoidVersion" type="SFString"/>
					<xsd:attribute name="age" type="SFString"/>
					<xsd:attribute name="gender" type="SFString"/>
					<xsd:attribute name="height" type="SFString"/>
					<xsd:attribute name="weight" type="SFString"/>
					<xsd:attribute name="version" type="SFString" fixed="1.1"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="HAnimJoint">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://ece.uwaterloo.ca/~h-anim/spec1.1/#joint"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DGroupingNode">
					<xsd:attribute name="name" type="jointName"/>
					<xsd:attribute name="center" type="SFVec3f" default="0 0 0"/>
					<xsd:attribute name="rotation" type="SFRotation" default="0 0 1 0"/>
					<xsd:attribute name="scale" type="SFVec3f" default="1 1 1"/>
					<xsd:attribute name="scaleOrientation" type="SFRotation" default="0 0 1 0"/>
					<xsd:attribute name="translation" type="SFVec3f" default="0 0 0"/>
					<xsd:attribute name="skinCoordIndex" type="MFInt32"/>
					<xsd:attribute name="skinCoordWeight" type="MFFloat"/>
					<xsd:attribute name="llimit" type="MFFloat"/>
					<xsd:attribute name="ulimit" type="MFFloat"/>
					<xsd:attribute name="limitOrientation" type="SFRotation" default="0 0 1 0"/>
					<xsd:attribute name="stiffness" type="MFFloat" default="0 0 0"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="HAnimSegment">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://ece.uwaterloo.ca/~h-anim/spec1.1/#segment"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DGroupingNode">
					<xsd:attribute name="name" type="SFString"/>
					<xsd:attribute name="mass" type="SFFloat" default="0"/>
					<xsd:attribute name="centerOfMass" type="SFVec3f" default="0 0 0"/>
					<xsd:attribute name="momentsOfInertia" type="MFFloat" default="0 0 0 0 0 0 0 0 0"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="HAnimSite">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://ece.uwaterloo.ca/~h-anim/spec1.1/#site"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DGroupingNode">
					<!-- need to improve content model to allow any order -->
					<xsd:sequence>
						<xsd:element name="Coordinate" minOccurs="0" maxOccurs="1"/>
						<xsd:element name="HAnimDisplacer" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
					<xsd:attribute name="name" type="SFString"/>
					<xsd:attribute name="center" type="SFVec3f" default="0 0 0"/>
					<xsd:attribute name="rotation" type="SFRotation" default="0 0 1 0"/>
					<xsd:attribute name="scale" type="SFVec3f" default="1 1 1"/>
					<xsd:attribute name="scaleOrientation" type="SFRotation" default="0 0 1 0"/>
					<xsd:attribute name="translation" type="SFVec3f" default="0 0 0"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<!--======================================================================-->
	<!--Nurbs Nodes-->
	<xsd:element name="Contour2D">
		<xsd:annotation>
			<xsd:appinfo>http://www.blaxxun.com/support/developerguide/developer/contact/3d/nurbs/spec/nodes.htm#Contour2D</xsd:appinfo>
			<xsd:documentation source="http://www.web3d.org/TaskGroups/x3d/X3DSpec_FCD/Part01/components/nurbs.html#Contour2D"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DGroupingNode"/>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="ContourPolyline2D">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.blaxxun.com/support/developerguide/developer/contact/3d/nurbs/spec/nodes.htm#Polyline2D"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DParametricGeometryNode">
					<xsd:attribute name="point" type="MFVec2f"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="CoordinateDeformer">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.blaxxun.com/support/developerguide/developer/contact/3d/nurbs/spec/nodes.htm#CoordinateDeformer"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DGroupingNode">
					<xsd:attribute name="uDimension" type="SFInt32" default="0"/>
					<xsd:attribute name="vDimension" type="SFInt32" default="0"/>
					<xsd:attribute name="wDimension" type="SFInt32" default="0"/>
					<xsd:attribute name="uKnot" type="MFDouble"/>
					<xsd:attribute name="vKnot" type="MFDouble"/>
					<xsd:attribute name="wKnot" type="MFDouble"/>
					<xsd:attribute name="uOrder" type="SFInt32" default="2"/>
					<xsd:attribute name="vOrder" type="SFInt32" default="2"/>
					<xsd:attribute name="wOrder" type="SFInt32" default="2"/>
					<xsd:attribute name="controlPoint" type="MFVec3f"/>
					<xsd:attribute name="weight" type="MFFloat"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="NurbsCurve">
		<xsd:annotation>
			<xsd:appinfo>http://www.blaxxun.com/support/developerguide/developer/contact/3d/nurbs/spec/nodes.htm#NurbsCurve</xsd:appinfo>
			<xsd:documentation source="http://www.web3d.org/TaskGroups/x3d/X3DSpec_FCD/Part01/components/nurbs.html#NurbsCurve"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DParametricGeometryNode">
					<xsd:attribute name="knot" type="MFDouble"/>
					<xsd:attribute name="order" type="SFInt32" default="3"/>
					<xsd:attribute name="controlPoint" type="MFVec3f"/>
					<xsd:attribute name="weight" type="MFDouble"/>
					<xsd:attribute name="tessellation" type="SFInt32" default="0"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="NurbsCurve2D">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.blaxxun.com/support/developerguide/developer/contact/3d/nurbs/spec/nodes.htm#NurbsCurve2D"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DParametricGeometryNode">
					<xsd:attribute name="knot" type="MFDouble"/>
					<xsd:attribute name="order" type="SFInt32" default="3"/>
					<xsd:attribute name="controlPoint" type="MFVec3f"/>
					<xsd:attribute name="weight" type="MFDouble"/>
					<xsd:attribute name="tessellation" type="SFInt32" default="0"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="NurbsGroup">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.blaxxun.com/support/developerguide/developer/contact/3d/nurbs/spec/nodes.htm#NurbsGroup"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DGroupingNode">
					<xsd:attribute name="tessellationScale" type="SFFloat" default="1.0"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="NurbsPositionInterpolator">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.blaxxun.com/support/developerguide/developer/contact/3d/nurbs/spec/nodes.htm#NurbsPositionInterpolator"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DInterpolatorNode">
					<xsd:attribute name="keyValue" type="MFVec3f"/>
					<xsd:attribute name="value_changed" type="SFVec3f"/>
					<xsd:attribute name="fractionAbsolute" type="SFBool" default="true"/>
					<xsd:attribute name="knot" type="MFDouble"/>
					<xsd:attribute name="dimension" type="SFInt32" default="0"/>
					<xsd:attribute name="order" type="SFInt32" default="3"/>
					<xsd:attribute name="keyWeight" type="MFDouble"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="NurbsSurface">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.blaxxun.com/support/developerguide/developer/contact/3d/nurbs/spec/nodes.htm#NurbsSurface"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DParametricGeometryNode">
					<xsd:attribute name="uDimension" type="SFInt32" default="0"/>
					<xsd:attribute name="vDimension" type="SFInt32" default="0"/>
					<xsd:attribute name="uKnot" type="MFDouble"/>
					<xsd:attribute name="vKnot" type="MFDouble"/>
					<xsd:attribute name="uOrder" type="SFInt32" default="3"/>
					<xsd:attribute name="vOrder" type="SFInt32" default="3"/>
					<xsd:attribute name="controlPoint" type="MFVec3f"/>
					<xsd:attribute name="weight" type="MFDouble"/>
					<xsd:attribute name="uTessellation" type="SFInt32" default="0"/>
					<xsd:attribute name="vTessellation" type="SFInt32" default="0"/>
					<xsd:attribute name="ccw" type="SFBool" default="true"/>
					<xsd:attribute name="solid" type="SFBool" default="true"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="NurbsTextureSurface">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.blaxxun.com/support/developerguide/developer/contact/3d/nurbs/spec/nodes.htm#NurbsTextureSurface"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DParametricGeometryNode">
					<xsd:attribute name="uDimension" type="SFInt32" default="0"/>
					<xsd:attribute name="vDimension" type="SFInt32" default="0"/>
					<xsd:attribute name="uKnot" type="MFDouble"/>
					<xsd:attribute name="vKnot" type="MFDouble"/>
					<xsd:attribute name="uOrder" type="SFInt32" default="3"/>
					<xsd:attribute name="vOrder" type="SFInt32" default="3"/>
					<xsd:attribute name="controlPoint" type="MFVec2f"/>
					<xsd:attribute name="weight" type="MFFloat"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="TrimmedSurface">
		<xsd:annotation>
			<xsd:appinfo/>
			<xsd:documentation source="http://www.blaxxun.com/support/developerguide/developer/contact/3d/nurbs/spec/nodes.htm#TrimmedSurface"/>
		</xsd:annotation>
		<xsd:complexType mixed="false">
			<xsd:complexContent mixed="false">
				<xsd:extension base="X3DParametricGeometryNode"/>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<!--======================================================================-->
	<!--Other profiles to follow:  Lattice.-->
	<!--======================================================================-->
</xsd:schema>
