>
<!-- # Extensible 3D (X3D) Document Type Definition (DTD) x3d-3.0.dtd # # X3D Specification DTD: # # http://www.web3D.org/specifications/x3d-3.0.dtd # # current version: 3.0.11 # # revised: 31 December 2003 # # Author: Don Brutzman # # X3D Specification DTDs: # http://www.web3d.org/specifications/x3d-3.0.dtd # http://www.web3d.org/specifications/x3d-3.0-InputOutputFields.dtd # http://www.web3d.org/specifications/x3d-3.0-Web3dExtensions.dtd # # Final doctype: # <!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN" "http://www.web3d.org/specifications/x3d-3.0.dtd"> # # Transitional doctype: # <!DOCTYPE X3D PUBLIC "http://www.web3d.org/specifications/x3d-3.0.dtd" "file:///www.web3d.org/TaskGroups/x3d/translation/x3d-3.0.dtd"> # # Typical system location for this resource: # file://c:/www.web3d.org/TaskGroups/x3d/translation/x3d-3.0.dtd # file:///www.web3d.org/TaskGroups/x3d/translation/x3d-3.0.dtd # # Change log: # http://www.web3d.org/TaskGroups/x3d/translation/x3d-dtd-changelog.txt # # Further information on the Extensible 3D (X3D) specification is available at # http://www.web3D.org/x3d.html --> <!-- Profile: default is Full profile and all components. Authors can override these default IGNORE/INCLUDE values. If InterchangeProfile or InterchangeProfile is INCLUDEd, then IGNORE all others. --> <!ENTITY % ImmersiveProfile "INCLUDE"> <!ENTITY % InterchangeProfile "IGNORE"> <!ENTITY % InteractiveProfile "IGNORE"> <!ENTITY % DISComponent "INCLUDE"> <!ENTITY % GeoSpatialComponent "INCLUDE"> <!ENTITY % HAnimComponent "INCLUDE"> <!ENTITY % NurbsComponent "INCLUDE"> <!ENTITY % Web3dExtensionComponent "INCLUDE"> <!ENTITY % X3dInputOutputFields "INCLUDE"> <!ENTITY % X3dExtensions "IGNORE"> <!ENTITY % profileNames "(Full|Immersive|Interactive|Interchange|Core|MPEG4Interactive)"> <!ENTITY % componentNames "(Core|DIS|EnvironmentalEffects|EnvironmentalSensor|EventUtilities|Geometry2D|Geometry3D|Geospatial|Grouping|H-Anim|Interpolation|KeyDeviceSensor|Lighting|Navigation|Networking|NURBS|PointingDeviceSensor|Rendering|Scripting|Shape|Sound|Text|Texturing|Time)"> <!ENTITY % componentLevels "(1|2|3|4)"> <!ENTITY % X3dFieldTypes " SFBool | MFBool | SFColor | MFColor | SFColorRGBA | MFColorRGBA | SFDouble | MFDouble | SFFloat | MFFloat | SFImage | MFImage | SFInt32 | MFInt32 | SFNode | MFNode | SFRotation | MFRotation | SFString | MFString | SFTime | MFTime | SFVec2f | MFVec2f | SFVec3f | MFVec3f| SFVec3d | MFVec3d "> <!-- X3D type definitions as DTD types --> <!ENTITY % SFBool "(true|false)"> <!ENTITY % MFBool "CDATA"> <!ENTITY % SFColor "CDATA"> <!ENTITY % MFColor "CDATA"> <!ENTITY % SFColorRGBA "CDATA"> <!ENTITY % MFColorRGBA "CDATA"> <!ENTITY % SFFloat "CDATA"> <!ENTITY % MFFloat "CDATA"> <!ENTITY % SFDouble "CDATA"> <!ENTITY % MFDouble "CDATA"> <!ENTITY % SFImage "CDATA"> <!ENTITY % MFImage "CDATA"> <!ENTITY % SFInt32 "CDATA"> <!ENTITY % MFInt32 "CDATA"> <!ENTITY % SFRotation "CDATA"> <!ENTITY % MFRotation "CDATA"> <!ENTITY % SFString "CDATA"> <!ENTITY % MFString "CDATA"> <!ENTITY % SFTime "CDATA"> <!ENTITY % MFTime "CDATA"> <!ENTITY % SFVec2f "CDATA"> <!ENTITY % MFVec2f "CDATA"> <!ENTITY % SFVec3f "CDATA"> <!ENTITY % MFVec3f "CDATA"> <!ENTITY % SFVec3d "CDATA"> <!ENTITY % MFVec3d "CDATA"> <!ENTITY % TextureCoordinateGeneratorModes "(SPHERE|CAMERASPACENORMAL|CAMERASPACEPOSITION|CAMERASPACEREFLECTIONVECTOR|SPHERE-LOCAL|COORD|COORD-EYE|NOISE|NOISE-EYE|SPHERE-REFLECT|SPHERE-REFLECT-LOCAL)"> <!ENTITY % MultiTextureModes "CDATA"> <!-- MFString --> <!ENTITY % MultiTextureSourceValues "CDATA"> <!-- MFString --> <!ENTITY % MultiTextureFunctionValues "CDATA"> <!-- MFString --> <!-- User needs to append | after listing each new node in any of these extensions. For an example, see examples/ProtoTagDtdDeclarationExamples.xml --> <!ENTITY % AppearanceNodeExtensions ""> <!ENTITY % AudioClipNodeExtensions ""> <!ENTITY % BindableNodeExtensions ""> <!ENTITY % ColorNodeExtensions ""> <!ENTITY % CoordinateNodeExtensions ""> <!ENTITY % FontStyleNodeExtensions ""> <!ENTITY % EventUtilityNodeExtensions ""> <!ENTITY % GeometryNodeExtensions ""> <!ENTITY % GroupingNodeExtensions ""> <!ENTITY % InterpolatorNodeExtensions ""> <!ENTITY % LightNodeExtensions ""> <!ENTITY % MaterialNodeExtensions ""> <!ENTITY % MetadataNodeExtensions ""> <!ENTITY % NormalNodeExtensions ""> <!ENTITY % ScriptNodeExtensions ""> <!ENTITY % SensorNodeExtensions ""> <!ENTITY % ShapeNodeExtensions ""> <!ENTITY % SoundNodeExtensions ""> <!-- MovieTexture must be able to appear twice: --> <!ENTITY % MovieTextureNodeExtensions ""> <!ENTITY % TextureNodeExtensions ""> <!ENTITY % TextureCoordinateNodeExtensions ""> <!ENTITY % TextureTransformNodeExtensions ""> <!ENTITY % UrlNodeExtensions ""> <!ENTITY % WorldInfoNodeExtensions ""> <!-- Users defining PROTOs do not override any of the following parameter entity declarations. --> <![%ImmersiveProfile;[ <!ENTITY % WildcardNodes " (ProtoInstance) " > ]]> <![%InterchangeProfile;[ <!ENTITY % WildcardNodes " " > ]]> <![%DISComponent;[ <!ENTITY % DISGroupingNodes " EspduTransform | SignalPdu | ReceiverPdu | TransmitterPdu | " > ]]> <![%GeoSpatialComponent;[ <!ENTITY % GeoCoordinateNode " GeoCoordinate | " > <!ENTITY % GeoElevationGridNode " GeoElevationGrid | " > <!ENTITY % GeoGroupingNodes " GeoLocation | GeoLOD | " > <!ENTITY % GeoMetadataNode " GeoMetadata | " > <!ENTITY % GeoOriginNode " GeoOrigin | " > <!ENTITY % GeoBehaviorNodes " GeoPositionInterpolator | GeoTouchSensor | " > <!ENTITY % GeoViewpointNode " GeoViewpoint | " > ]]> <![%HAnimComponent;[ <!ENTITY % HAnimGroupingNodes " HAnimJoint | HAnimSegment | HAnimSite | HAnimHumanoid | " > <!ENTITY % DisplacerNode " HAnimDisplacer | " > ]]> <![%NurbsComponent;[ <!ENTITY % NurbsGroupingNodes " Contour2D | NurbsGroup | NurbsTextureSurface | " > <!ENTITY % NurbsGeometryNodes " ContourPolyline2D | NurbsCurve | NurbsCurve2D | NurbsPatchSurface | NurbsTrimmedSurface | NurbsSweptSurface | NurbsSwungSurface | " > <!ENTITY % NurbsInterpolators " NurbsPositionInterpolator | NurbsOrientationInterpolator | NurbsSurfaceInterpolator | " > <!ENTITY % NurbsControlCurveNodes " NurbsCurve | ContourPolyline2D " > ]]> <![%Web3dExtensionComponent;[ <!ENTITY % Web3dExtensionGeometryNodes " XvlShell | " > ]]> <!-- otherwise set tag lists to null strings if not previously defined by DIS, GeoSpatial, HAnim, Nurbs, Web3dExtension --> <!ENTITY % DISGroupingNodes ""> <!ENTITY % GeoCoordinateNode ""> <!ENTITY % GeoElevationGridNode ""> <!ENTITY % GeoGroupingNodes ""> <!ENTITY % GeoMetadataNode ""> <!ENTITY % GeoOriginNode ""> <!ENTITY % GeoBehaviorNodes ""> <!ENTITY % GeoViewpointNode ""> <!ENTITY % HAnimGroupingNodes ""> <!ENTITY % DisplacerNode ""> <!ENTITY % NurbsGroupingNodes ""> <!ENTITY % NurbsGeometryNodes ""> <!ENTITY % NurbsInterpolators ""> <!ENTITY % Web3dExtensionGroupingNodes ""> <!ENTITY % Web3dExtensionGeometryNodes ""> <!-- no further content-model extensions needed --> <![%InterchangeProfile;[ <!ENTITY % AudioClipNodes "" > <!ENTITY % FontStyleNodes "" > <!ENTITY % EventUtilityNodes "" > <!ENTITY % MovieTextureNodes "" > <!ENTITY % NormalNodes "" > <!ENTITY % ScriptNodes "" > <!ENTITY % SoundNodes "" > <!ENTITY % TextureCoordinateNodes "" > <!ENTITY % TextureTransformNodes "" > ]]> <!-- UrlNodes used by LoadSensor --> <!ENTITY % UrlNodes " %UrlNodeExtensions; Anchor | AudioClip | ImageTexture | Inline | MovieTexture | Script "> <!-- Declarations appearing only in ImmersiveProfile --> <![%ImmersiveProfile;[ <!ENTITY % AudioClipNodes " %AudioClipNodeExtensions; AudioClip " > <!ENTITY % FontStyleNodes " %FontStyleNodeExtensions; FontStyle " > <!ENTITY % EventUtilityNodes " %EventUtilityNodeExtensions; BooleanFilter | BooleanSequencer | BooleanToggle | BooleanTrigger | IntegerSequencer | IntegerTrigger | TimeTrigger " > <!ENTITY % MovieTextureNodes " %MovieTextureNodeExtensions; MovieTexture " > <!ENTITY % NormalNodes " %NormalNodeExtensions; Normal " > <!ENTITY % ScriptNodes " %ScriptNodeExtensions; Script " > <!ENTITY % SoundNodes " %SoundNodeExtensions; Sound " > <!ENTITY % TextureCoordinateNodes " %TextureCoordinateNodeExtensions; TextureCoordinate | TextureCoordinateGenerator | MultiTextureCoordinate | NurbsTextureCoordinate " > <!ENTITY % TextureTransformNodes " %TextureTransformNodeExtensions; TextureTransform | MultiTextureTransform " > ]]> <!-- Declarations appearing differently in X3dExtensions, ImmersiveProfile and InterchangeProfile --> <!-- X3D Extensions (superset overriding some ImmersiveProfile declarations) not yet defined. --> <![%X3dExtensions;[ <!ENTITY % AppearanceNodeX3dExtensions "" > <!ENTITY % GeometryNodesX3dExtensions "" > ]]> <!ENTITY % AppearanceNodeX3dExtensions ""> <!ENTITY % GeometryNodesX3dExtensions ""> <![%InterchangeProfile;[ <!ENTITY % AppearanceNodes " Appearance " > <!ENTITY % BehaviorLeafNodes " CoordinateInterpolator | KeySensor | OrientationInterpolator | PositionInterpolator | ScalarInterpolator | TimeSensor | TouchSensor " > <!ENTITY % BindableNodes " Background | NavigationInfo | Viewpoint " > <!ENTITY % ColorNodes " Color | ColorRGBA " > <!ENTITY % CoordinateNodes " Coordinate | CoordinateDouble " > <!ENTITY % GeometryNodes " IndexedFaceSet | IndexedLineSet | LineSet | PointSet " > <!ENTITY % GroupingNodes " Anchor | Group | Inline | Transform " > <!ENTITY % LightNodes " DirectionalLight " > <!ENTITY % MaterialNodes " Material " > <!ENTITY % ShapeNodes " Shape " > <!ENTITY % TextureNodes " ImageTexture " > <!ENTITY % WorldInfoNodes " WorldInfo " > ]]> <![%ImmersiveProfile;[ <!ENTITY % AppearanceNodes " %AppearanceNodeExtensions; %AppearanceNodeX3dExtensions; Appearance " > <!ENTITY % BehaviorLeafNodes " %InterpolatorNodeExtensions; %SensorNodeExtensions; %ScriptNodeExtensions; %GeoBehaviorNodes; %DisplacerNode; %NurbsInterpolators; %EventUtilityNodes; | ColorInterpolator | CoordinateInterpolator | CoordinateInterpolator2D | CylinderSensor | KeySensor | LoadSensor | NormalInterpolator | OrientationInterpolator | PlaneSensor | PositionInterpolator | PositionInterpolator2D | ProximitySensor | ScalarInterpolator | Script | SphereSensor | StringSensor | TimeSensor | TouchSensor | VisibilitySensor " > <!ENTITY % BindableNodes " %BindableNodeExtensions; %GeoViewpointNode; Background | Fog | NavigationInfo | TextureBackground | Viewpoint " > <!ENTITY % ColorNodes " %ColorNodeExtensions; Color | ColorRGBA " > <!ENTITY % CoordinateNodes " %CoordinateNodeExtensions; %GeoCoordinateNode; Coordinate | CoordinateDouble " > ]]> <![%ImmersiveProfile;[ <!ENTITY % Geometry2DNodes " Arc2D | ArcClose2D | Circle2D | Disk2D | Polyline2D | Polypoint2D | Rectangle2D | TriangleSet2D " > <!ENTITY % GeometryNodes " %GeometryNodeExtensions; %GeometryNodesX3dExtensions; %GeoElevationGridNode; %NurbsGeometryNodes; %Web3dExtensionGeometryNodes; %Geometry2DNodes; | Box | Cone | Cylinder | ElevationGrid | Extrusion | IndexedFaceSet | IndexedLineSet | LineSet | PointSet | Sphere | Text | IndexedTriangleFanSet | IndexedTriangleSet | IndexedTriangleStripSet | TriangleFanSet | TriangleSet | TriangleStripSet " > <!ENTITY % GroupingNodes " %GroupingNodeExtensions; %DISGroupingNodes; %GeoGroupingNodes; %HAnimGroupingNodes; %NurbsGroupingNodes; %Web3dExtensionGroupingNodes; Anchor | Billboard | Collision | Group | Inline | LOD | StaticGroup | Switch | Transform " > <!ENTITY % LightNodes " %LightNodeExtensions; DirectionalLight | SpotLight | PointLight " > <!ENTITY % MaterialNodes " %MaterialNodeExtensions; Material " > <!ENTITY % ShapeNodes " %ShapeNodeExtensions; Shape " > <!ENTITY % TextureNodes " %TextureNodeExtensions; ImageTexture | MovieTexture | MultiTexture | PixelTexture " > <!--| CompositeTexture3D --> <!ENTITY % MultiTextureChildTextures " %TextureNodeExtensions; ImageTexture | MovieTexture | PixelTexture " > <!ENTITY % WorldInfoNodes " %WorldInfoNodeExtensions; %GeoMetadataNode; WorldInfo " > ]]> <!ENTITY % MetadataNodes " %MetadataNodeExtensions; MetadataDouble | MetadataFloat | MetadataInteger | MetadataSet | MetadataString "> <![%InterchangeProfile;[ <!ENTITY % GeometricPropertyNodes " %ColorNodes; " > <!ENTITY % AppearanceChildNodes " %MaterialNodes; " > <!ENTITY % SceneLeafNodes " %LightNodes; | %ShapeNodes; | %WorldInfoNodes; " > <!ENTITY % ProtoNodes "" > ]]> <![%ImmersiveProfile;[ <!ENTITY % GeometricPropertyNodes " %CoordinateNodes; | %ColorNodes; | %NormalNodes; | %TextureCoordinateNodes; " > <!ENTITY % AppearanceChildNodes " %MaterialNodes; | %TextureNodes; | %TextureTransformNodes; " > <!ENTITY % SceneLeafNodes " %GeoOriginNode; %LightNodes; | %ShapeNodes; | %SoundNodes; | %WorldInfoNodes; " > <!ENTITY % OtherLeafNodes " AudioClip | LineProperties | FillProperties " > <!ENTITY % ProtoNodes " %OtherLeafNodes; | %AppearanceNodes; | %AppearanceChildNodes; | %BehaviorLeafNodes; | %BindableNodes; | %FontStyleNodes; | %GeometricPropertyNodes; | %GeometryNodes; | %GroupingNodes; | %SceneLeafNodes; | ProtoDeclare | ProtoInstance " > ]]> <![%InterchangeProfile;[ <!ENTITY % ChildrenNodes " %BehaviorLeafNodes; | %BindableNodes; | %GroupingNodes; | %SceneLeafNodes; | ROUTE | EXPORT | IMPORT " > <!ENTITY % SceneNodes " %ChildrenNodes; | %WildcardNodes; " > ]]> <![%ImmersiveProfile;[ <!ENTITY % ChildrenNodes " %BehaviorLeafNodes; | %BindableNodes; | %GroupingNodes; | %SceneLeafNodes; | ROUTE | EXPORT | IMPORT " > <!-- need any order for prototypes --> <!ENTITY % SceneNodes " ExternProtoDeclare | ProtoDeclare | %ChildrenNodes; | %WildcardNodes; " > ]]> <!ENTITY % AllVRML97Nodes " Anchor|Appearance|AudioClip|Background|BooleanFilter|BooleanSequencer|BooleanToggle|BooleanTrigger|Billboard|Box|Collision|Color|ColorInterpolator|Cone|Coordinate|CoordinateDouble|CoordinateInterpolator|Cylinder|CylinderSensor|DirectionalLight|ElevationGrid|Extrusion|FillProperties|Fog|FontStyle|Group|head|ImageTexture|IndexedFaceSet|IndexedLineSet|Inline|IntegerSequencer|IntegerTrigger|KeySensor|LineProperties|LineSet|LOD|Material|MovieTexture|MultiTextureCoordinate|NavigationInfo|Normal|NormalInterpolator|OrientationInterpolator|PixelTexture|PlaneSensor|PointLight|PointSet|PositionInterpolator|ProximitySensor|ScalarInterpolator|Scene|Script|Shape|Sound|Sphere|SphereSensor|SpotLight|StringSensor|StaticGroup|Switch|Text|TextureBackground|TextureCoordinate|TextureCoordinateGenerator|TextureTransform|TimeSensor|TimeTrigger|TouchSensor|Transform|TriangleFanSet|TriangleSet|TriangleStripSet|Viewpoint|VisibilitySensor|PositionInterpolator2D|CoordinateInterpolator2D|WorldInfo "> <!ENTITY % AllGeoSpatialTags " GeoCoordinate|GeoElevationGrid|GeoLocation|GeoLOD|GeoMetadata|GeoOrigin|GeoPositionInterpolator|GeoTouchSensor|GeoViewpoint "> <!ENTITY % AllHAnimTags " HAnimDisplacer|HAnimHumanoid|HAnimJoint|HAnimSegment|HAnimSite "> <!-- SensorNodes not used (yet, anyway) in tagset content-model definitions. --> <!ENTITY % SensorNodes " Anchor | Collision | CylinderSensor | KeySensor | PlaneSensor | ProximitySensor | SphereSensor | StringSensor | TimeSensor | TouchSensor | VisibilitySensor "> <!ENTITY % DragSensors " CylinderSensor | PlaneSensor | SphereSensor "> <!ENTITY % EnvironmentalSensorNodes " Collision | ProximitySensor | TimeSensor | VisibilitySensor "> <!ENTITY % PointingDeviceSensors " Anchor | CylinderSensor | PlaneSensor | SphereSensor | TouchSensor "> <!ENTITY % KeyDeviceSensors " "> <!ENTITY % InterpolatorNodes " ColorInterpolator | CoordinateInterpolator | CoordinateInterpolator2D | NormalInterpolator | OrientationInterpolator | PositionInterpolator | PositionInterpolator2D | ScalarInterpolator "> <!ENTITY % TimeDependentNodes " AudioClip | MovieTexture | TimeSensor "> <!-- ****************************** X3D DTD ****************************** --> <![%ImmersiveProfile;[ <!ELEMENT Anchor (IS?, (%MetadataNodes;)?, ( %ChildrenNodes; | %WildcardNodes; )* ) > <!ATTLIST Anchor description %SFString; #IMPLIED parameter %MFString; #IMPLIED url %MFString; #IMPLIED bboxCenter %SFVec3f; "0 0 0" bboxSize %SFVec3f; "-1 -1 -1" containerField NMTOKEN "children" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED > ]]> <![%InterchangeProfile;[ <!ELEMENT Anchor (%MetadataNodes;)?, ( %ChildrenNodes; | %WildcardNodes; )* > <!ATTLIST Anchor url %MFString; #IMPLIED bboxCenter %SFVec3f; "0 0 0" bboxSize %SFVec3f; "-1 -1 -1" containerField NMTOKEN "children" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED > ]]> <![%ImmersiveProfile;[ <!-- Complete, unordered, concisely enumerated version of Appearance by Heiko Grussbach. Prepended either-order FillProperties/LineProperties. --> <!ELEMENT Appearance (IS?, (%MetadataNodes;)?, ( (FillProperties, LineProperties?) | (LineProperties, FillProperties)? )?, ( ((%MaterialNodes;), (((%TextureNodes;),((%TextureTransformNodes;)|%WildcardNodes;)?) | ((%TextureTransformNodes;),((%TextureNodes;)|%WildcardNodes;)?) | (%WildcardNodes;,((%TextureNodes;)|(%TextureTransformNodes;)|%WildcardNodes;)?) )? ) | ((%TextureNodes;), ( ((%MaterialNodes;),((%TextureTransformNodes;)|%WildcardNodes;)?) | ((%TextureTransformNodes;),((%MaterialNodes;)|%WildcardNodes;)?) | (%WildcardNodes;,((%MaterialNodes;)|(%TextureTransformNodes;)|%WildcardNodes;)?) )? ) | ((%TextureTransformNodes;), (((%MaterialNodes;),((%TextureNodes;)|%WildcardNodes;)?) | ((%TextureNodes;),((%MaterialNodes;)|%WildcardNodes;)?) | (%WildcardNodes;,((%MaterialNodes;)|(%TextureNodes;)|%WildcardNodes;)?) )? ) | (%WildcardNodes;, ( ((%MaterialNodes;),((%TextureNodes;)|(%TextureTransformNodes;)|%WildcardNodes;)?) | ((%TextureNodes;),((%MaterialNodes;)|(%TextureTransformNodes;)|%WildcardNodes;)?) | ((%TextureTransformNodes;),((%MaterialNodes;)|(%TextureNodes;)|%WildcardNodes;)?) | (%WildcardNodes;,((%MaterialNodes;)|(%TextureNodes;)|(%TextureTransformNodes;)|%WildcardNodes;)?) )? ) )? ) > ]]> <![%InterchangeProfile;[ <!ELEMENT Appearance ( (%MetadataNodes;)?, ( ((%MaterialNodes;), (%TextureNodes;)? ) | ((%TextureNodes;), (%MaterialNodes;)? ) )? ) > ]]> <!ATTLIST Appearance containerField NMTOKEN "appearance" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED > <![%ImmersiveProfile;[ <!ELEMENT AudioClip ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST AudioClip description %SFString; #IMPLIED loop %SFBool; "false" pitch %SFFloat; "1.0" startTime %SFTime; "0" stopTime %SFTime; "0" pauseTime %SFTime; "0" resumeTime %SFTime; "0" url %MFString; #IMPLIED containerField NMTOKEN "source" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> ]]> <!ELEMENT Background ((IS?), (%MetadataNodes;)?)> <!ATTLIST Background groundAngle %MFFloat; #IMPLIED groundColor %MFColor; #IMPLIED backUrl %MFString; #IMPLIED bottomUrl %MFString; #IMPLIED frontUrl %MFString; #IMPLIED leftUrl %MFString; #IMPLIED rightUrl %MFString; #IMPLIED topUrl %MFString; #IMPLIED skyAngle %MFFloat; #IMPLIED skyColor %MFColor; "0 0 0" containerField NMTOKEN "children" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED > <![%ImmersiveProfile;[ <!ELEMENT Billboard (IS?, (%MetadataNodes;)?, ( %ChildrenNodes; | %WildcardNodes; )* ) > <!ATTLIST Billboard axisOfRotation %SFVec3f; "0 1 0" bboxCenter %SFVec3f; "0 0 0" bboxSize %SFVec3f; "-1 -1 -1" containerField NMTOKEN "children" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT BooleanFilter ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST BooleanFilter containerField NMTOKEN "children" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT BooleanSequencer ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST BooleanSequencer key %MFFloat; #IMPLIED keyValue %MFFloat; #IMPLIED containerField NMTOKEN "children" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT BooleanToggle ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST BooleanToggle toggle %SFBool; "false" containerField NMTOKEN "children" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT BooleanTrigger ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST BooleanTrigger containerField NMTOKEN "children" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> ]]> <![%ImmersiveProfile;[ <!-- Geometry2D nodes --> <!ELEMENT Arc2D ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST Arc2D radius %SFFloat; "1" startAngle %SFFloat; "0" endAngle %SFFloat; "1.570796" containerField NMTOKEN "geometry" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT ArcClose2D ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST ArcClose2D radius %SFFloat; "1" startAngle %SFFloat; "0" endAngle %SFFloat; "1.570796" closureType (PIE|CHORD) "PIE" containerField NMTOKEN "geometry" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT Circle2D ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST Circle2D radius %SFFloat; "1" containerField NMTOKEN "geometry" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT Disk2D ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST Disk2D innerRadius %SFFloat; "0" outerRadius %SFFloat; "1" containerField NMTOKEN "geometry" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT Polyline2D ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST Polyline2D lineSegments %MFVec2f; #IMPLIED containerField NMTOKEN "geometry" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT Polypoint2D ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST Polypoint2D points %MFVec2f; #IMPLIED containerField NMTOKEN "geometry" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT Rectangle2D ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST Rectangle2D size %SFVec2f; "2 2" containerField NMTOKEN "geometry" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT TriangleSet2D ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST TriangleSet2D vertices %MFVec2f; #IMPLIED containerField NMTOKEN "geometry" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> ]]> <![%ImmersiveProfile;[ <!ELEMENT Box ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST Box size %SFVec3f; "2 2 2" containerField NMTOKEN "geometry" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT Collision ( (IS?), (%MetadataNodes;)?, ( %ChildrenNodes; | %WildcardNodes; )* ) > <!ATTLIST Collision enabled %SFBool; "true" bboxCenter %SFVec3f; "0 0 0" bboxSize %SFVec3f; "-1 -1 -1" containerField NMTOKEN "children" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED > ]]> <!ELEMENT Color ((IS?), (%MetadataNodes;)?)> <!ATTLIST Color color %MFColor; #IMPLIED class CDATA #IMPLIED containerField NMTOKEN "color" DEF ID #IMPLIED USE IDREF #IMPLIED > <!ELEMENT ColorRGBA ((IS?), (%MetadataNodes;)?)> <!ATTLIST ColorRGBA color %MFColorRGBA; #IMPLIED containerField NMTOKEN "color" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED > <!ELEMENT component EMPTY> <!ATTLIST component name %componentNames; #REQUIRED level %componentLevels; #REQUIRED > <![%ImmersiveProfile;[ <!ELEMENT ColorInterpolator ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST ColorInterpolator key %MFFloat; #IMPLIED keyValue %MFColor; #IMPLIED containerField NMTOKEN "children" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT Cone ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST Cone bottomRadius %SFFloat; "1" height %SFFloat; "2" side %SFBool; "true" bottom %SFBool; "true" containerField NMTOKEN "geometry" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> ]]> <!ELEMENT Coordinate ((IS?), (%MetadataNodes;)?)> <!ATTLIST Coordinate point %MFVec3f; #IMPLIED containerField NMTOKEN "coord" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED > <!ELEMENT CoordinateDouble ((IS?), (%MetadataNodes;)?)> <!ATTLIST CoordinateDouble point %MFVec3d; #IMPLIED containerField NMTOKEN "coord" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED > <!ELEMENT CoordinateInterpolator ((IS?), (%MetadataNodes;)?)> <!ATTLIST CoordinateInterpolator key %MFFloat; #IMPLIED keyValue %MFVec3f; #IMPLIED containerField NMTOKEN "children" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED > <![%ImmersiveProfile;[ <!ELEMENT CoordinateInterpolator2D ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST CoordinateInterpolator2D key %MFFloat; #IMPLIED keyValue %MFVec2f; #IMPLIED containerField NMTOKEN "children" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT Cylinder ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST Cylinder bottom %SFBool; "true" height %SFFloat; "2" radius %SFFloat; "1" side %SFBool; "true" top %SFBool; "true" containerField NMTOKEN "geometry" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT CylinderSensor ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST CylinderSensor description %SFString; #IMPLIED autoOffset %SFBool; "true" diskAngle %SFFloat; "0.26179167" maxAngle %SFFloat; "-1" minAngle %SFFloat; "0" offset %SFFloat; "0" enabled %SFBool; "true" containerField NMTOKEN "children" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT DirectionalLight ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST DirectionalLight ambientIntensity %SFFloat; "0" color %SFColor; "1 1 1" direction %SFVec3f; "0 0 -1" intensity %SFFloat; "1" on %SFBool; "true" containerField NMTOKEN "children" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> ]]> <![%InterchangeProfile;[ <!ELEMENT DirectionalLight (%MetadataNodes;)? > <!ATTLIST DirectionalLight color %SFColor; "1 1 1" direction %SFVec3f; "0 0 -1" intensity %SFFloat; "1" on %SFBool; "true" containerField NMTOKEN "children" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> ]]> <![%ImmersiveProfile;[ <!-- Complete, concisely enumerated unordered version of ElevationGrid by Heiko Grussbach --> <!ELEMENT ElevationGrid (IS?, (%MetadataNodes;)?, ( ((%ColorNodes;), ( ((%NormalNodes;),((%TextureCoordinateNodes;)|%WildcardNodes;)?) | ((%TextureCoordinateNodes;),((%NormalNodes;)|%WildcardNodes;)?) | (%WildcardNodes;,((%NormalNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) )? ) | ((%NormalNodes;), ( ((%ColorNodes;),((%TextureCoordinateNodes;)|%WildcardNodes;)?) | ((%TextureCoordinateNodes;),((%ColorNodes;)|%WildcardNodes;)?) | (%WildcardNodes;,((%ColorNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) )? ) | ((%TextureCoordinateNodes;), (((%ColorNodes;),((%NormalNodes;)|%WildcardNodes;)?) | ((%NormalNodes;),((%ColorNodes;)|%WildcardNodes;)?) | (%WildcardNodes;,((%ColorNodes;)|(%NormalNodes;)|%WildcardNodes;)?) )? ) | (%WildcardNodes;, ( ((%ColorNodes;),((%NormalNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) | ((%NormalNodes;),((%ColorNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) | ((%TextureCoordinateNodes;),((%ColorNodes;)|(%NormalNodes;)|%WildcardNodes;)?) | (%WildcardNodes;,((%ColorNodes;)|(%NormalNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) )? ) )? ) > <!ATTLIST ElevationGrid height %MFFloat; #IMPLIED ccw %SFBool; "true" colorPerVertex %SFBool; "true" creaseAngle %SFFloat; "0" normalPerVertex %SFBool; "true" solid %SFBool; "true" xDimension %SFInt32; "0" xSpacing %SFFloat; "1.0" zDimension %SFInt32; "0" zSpacing %SFFloat; "1.0" containerField NMTOKEN "geometry" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT ExternProtoDeclare ( field* ) > <!ATTLIST ExternProtoDeclare name NMTOKEN #REQUIRED url %MFString; #REQUIRED appinfo %SFString; #IMPLIED documentation %SFString; #IMPLIED> <!ELEMENT Extrusion ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST Extrusion beginCap %SFBool; "true" ccw %SFBool; "true" convex %SFBool; "true" creaseAngle %SFFloat; "0.0" crossSection %MFVec2f; "1 1 1 -1 -1 -1 -1 1 1 1" endCap %SFBool; "true" orientation %MFRotation; "0 0 1 0" scale %MFVec2f; "1 1" solid %SFBool; "true" spine %MFVec3f; "0 0 0 0 1 0" containerField NMTOKEN "geometry" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> <!-- field is only used in a Script, ProtoDeclare or ExternProtoDeclare. Initialization values for simple types go in the value attribute. Contained content tags are only for initialization of Node or Nodes. --> <!ELEMENT field ( %ProtoNodes; )* > <!ATTLIST field name NMTOKEN #REQUIRED accessType (inputOnly | outputOnly | initializeOnly | inputOutput) #REQUIRED type ( %X3dFieldTypes; ) #REQUIRED value CDATA #IMPLIED xml:space (default | preserve) "default" appinfo %SFString; #IMPLIED documentation %SFString; #IMPLIED> <!-- fieldValue resets default field values inside a ProtoInstance. Initialization values for simple types go in the value attribute. Otherwise contained-content tags are used for initialization of SFNode or MFNode values. --> <!ELEMENT fieldValue ( %ProtoNodes; )* > <!ATTLIST fieldValue name NMTOKEN #REQUIRED value CDATA #IMPLIED> ]]> <![%ImmersiveProfile;[ <!ELEMENT FillProperties ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST FillProperties filled %SFBool; "true" hatched %SFBool; "true" hatchStyle %SFInt32; "1" hatchColor %SFColor; "1 1 1" containerField NMTOKEN "fillProperties" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT Fog ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST Fog color %SFColor; "1 1 1" fogType (LINEAR|EXPONENTIAL) "LINEAR" visibilityRange %SFFloat; "0" containerField NMTOKEN "children" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT FontStyle ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST FontStyle family %MFString; '"SERIF"' horizontal %SFBool; "true" justify %MFString; '"BEGIN"' language %SFString; #IMPLIED leftToRight %SFBool; "true" size %SFFloat; "1.0" spacing %SFFloat; "1.0" style (PLAIN|BOLD|ITALIC|BOLDITALIC) "PLAIN" topToBottom %SFBool; "true" containerField NMTOKEN "fontStyle" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> <!-- Minimum supported values mentioned in VRML 97 specification family ' "SERIF" "SANS" "TYPEWRITER" ' justify ' "FIRST" "BEGIN" "MIDDLE" "END" ' --> ]]> <!ELEMENT Group (IS?, (%MetadataNodes;)?, (%ChildrenNodes; | %WildcardNodes;)*)> <!ATTLIST Group bboxCenter %SFVec3f; "0 0 0" bboxSize %SFVec3f; "-1 -1 -1" containerField NMTOKEN "children" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED > <!ELEMENT ImageTexture ((IS?), (%MetadataNodes;)?)> <!ATTLIST ImageTexture url %MFString; #IMPLIED repeatS %SFBool; "true" repeatT %SFBool; "true" containerField NMTOKEN "texture" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED > <!-- Complete, unordered, concisely enumerated version of IndexedFaceSet content model by Heiko Grussbach --> <!ENTITY % ColorCoordinateNormalTextureCoordinateContentModel "(IS?, (%MetadataNodes;)?, ( ((%ColorNodes;), ( ((%CoordinateNodes;), ( ((%NormalNodes;),((%TextureCoordinateNodes;)|%WildcardNodes;)?) | ((%TextureCoordinateNodes;),((%NormalNodes;)|%WildcardNodes;)?) | (%WildcardNodes;,((%NormalNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) )? ) | ((%NormalNodes;), ( ((%CoordinateNodes;),((%TextureCoordinateNodes;)|%WildcardNodes;)?) | ((%TextureCoordinateNodes;),((%CoordinateNodes;)|%WildcardNodes;)?) | (%WildcardNodes;,((%CoordinateNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) )? ) | ((%TextureCoordinateNodes;), ( ((%CoordinateNodes;),((%NormalNodes;)|%WildcardNodes;)?) | ((%NormalNodes;),((%CoordinateNodes;)|%WildcardNodes;)?) | (%WildcardNodes;,((%CoordinateNodes;)|(%NormalNodes;)|%WildcardNodes;)?) )? ) | (%WildcardNodes;, ( ((%CoordinateNodes;),((%NormalNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) | ((%NormalNodes;),((%CoordinateNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) | ((%TextureCoordinateNodes;),((%NormalNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) | (%WildcardNodes;,((%CoordinateNodes;)|(%NormalNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) )? ) )? ) | ((%CoordinateNodes;), ( ((%ColorNodes;), ( ((%NormalNodes;),((%TextureCoordinateNodes;)|%WildcardNodes;)?) | ((%TextureCoordinateNodes;),((%NormalNodes;)|%WildcardNodes;)?) | (%WildcardNodes;,((%NormalNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) )? ) | ((%NormalNodes;), ( ((%ColorNodes;),((%TextureCoordinateNodes;)|%WildcardNodes;)?) | ((%TextureCoordinateNodes;),((%ColorNodes;)|%WildcardNodes;)?) | (%WildcardNodes;,((%ColorNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) )? ) | ((%TextureCoordinateNodes;), ( ((%ColorNodes;),((%NormalNodes;)|%WildcardNodes;)?) | ((%NormalNodes;),((%ColorNodes;)|%WildcardNodes;)?) | (%WildcardNodes;,((%ColorNodes;)|(%NormalNodes;)|%WildcardNodes;)?) )? ) | (%WildcardNodes;, ( ((%ColorNodes;),((%NormalNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) | ((%NormalNodes;),((%ColorNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) | ((%TextureCoordinateNodes;),((%NormalNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) | (%WildcardNodes;,((%ColorNodes;)|(%NormalNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) )? ) )? ) | ((%NormalNodes;), ( ((%ColorNodes;), ( ((%CoordinateNodes;),((%TextureCoordinateNodes;)|%WildcardNodes;)?) | ((%TextureCoordinateNodes;),((%CoordinateNodes;)|%WildcardNodes;)?) | (%WildcardNodes;,((%CoordinateNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) )? ) | ((%CoordinateNodes;),(((%ColorNodes;),((%TextureCoordinateNodes;)|%WildcardNodes;)?) | ((%TextureCoordinateNodes;),((%ColorNodes;)|%WildcardNodes;)?) | (%WildcardNodes;,((%ColorNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) )? ) | ((%TextureCoordinateNodes;), ( ((%ColorNodes;),((%CoordinateNodes;)|%WildcardNodes;)?) | ((%CoordinateNodes;),((%ColorNodes;)|%WildcardNodes;)?) | (%WildcardNodes;,((%ColorNodes;)|(%CoordinateNodes;)|%WildcardNodes;)?) )? ) | (%WildcardNodes;, ( ((%ColorNodes;),((%CoordinateNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) | ((%CoordinateNodes;),((%ColorNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) | ((%TextureCoordinateNodes;),((%ColorNodes;)|(%CoordinateNodes;)|%WildcardNodes;)?) | (%WildcardNodes;,((%ColorNodes;)|(%CoordinateNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) )? ) )? ) | ((%TextureCoordinateNodes;), ( ((%ColorNodes;), ( ((%CoordinateNodes;),((%NormalNodes;)|%WildcardNodes;)?) | ((%NormalNodes;),((%CoordinateNodes;)|%WildcardNodes;)?) | (%WildcardNodes;,((%CoordinateNodes;)|(%NormalNodes;)|%WildcardNodes;)?) )? ) | ((%CoordinateNodes;),(((%ColorNodes;),((%NormalNodes;)|%WildcardNodes;)?) | ((%NormalNodes;),((%ColorNodes;)|%WildcardNodes;)?) | (%WildcardNodes;,((%ColorNodes;)|(%NormalNodes;)|%WildcardNodes;)?) )? ) | ((%NormalNodes;), ( ((%ColorNodes;),((%CoordinateNodes;)|%WildcardNodes;)?) | ((%CoordinateNodes;),((%ColorNodes;)|%WildcardNodes;)?) | (%WildcardNodes;,((%ColorNodes;)|(%CoordinateNodes;)|%WildcardNodes;)?) )? ) | (%WildcardNodes;, ( ((%ColorNodes;),((%NormalNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) | ((%CoordinateNodes;),((%ColorNodes;)|(%NormalNodes;)|%WildcardNodes;)?) | ((%NormalNodes;),((%ColorNodes;)|(%CoordinateNodes;)|%WildcardNodes;)?) | (%WildcardNodes;,((%ColorNodes;)|(%CoordinateNodes;)|(%NormalNodes;)|%WildcardNodes;)?) )? ) )? ) | (%WildcardNodes;, ( ((%ColorNodes;), ( ((%CoordinateNodes;),((%NormalNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) | ((%NormalNodes;),((%CoordinateNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) | ((%TextureCoordinateNodes;),((%CoordinateNodes;)|(%NormalNodes;)|%WildcardNodes;)?) | (%WildcardNodes;,((%CoordinateNodes;)|(%NormalNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) )? ) | ((%CoordinateNodes;),(((%ColorNodes;),((%NormalNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) | ((%NormalNodes;),((%ColorNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) | ((%TextureCoordinateNodes;),((%ColorNodes;)|(%NormalNodes;)|%WildcardNodes;)?) | (%WildcardNodes;,((%ColorNodes;)|(%NormalNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) )? ) | ((%NormalNodes;), ( ((%ColorNodes;),((%CoordinateNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) | ((%CoordinateNodes;),((%ColorNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) | ((%TextureCoordinateNodes;),((%ColorNodes;)|(%CoordinateNodes;)|%WildcardNodes;)?) | (%WildcardNodes;,((%CoordinateNodes;)|(%ColorNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) )? ) | ((%TextureCoordinateNodes;), ( ((%ColorNodes;),((%CoordinateNodes;)|(%NormalNodes;)|%WildcardNodes;)?) | ((%CoordinateNodes;),((%ColorNodes;)|(%NormalNodes;)|%WildcardNodes;)?) | ((%NormalNodes;),((%ColorNodes;)|(%CoordinateNodes;)|%WildcardNodes;)?) | (%WildcardNodes;,((%ColorNodes;)|(%CoordinateNodes;)|(%NormalNodes;)|%WildcardNodes;)?) )? ) | (%WildcardNodes;, ( ((%ColorNodes;),((%CoordinateNodes;)|(%NormalNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) | ((%CoordinateNodes;),((%ColorNodes;)|(%NormalNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) | ((%NormalNodes;),((%ColorNodes;)|(%CoordinateNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) | ((%TextureCoordinateNodes;),((%ColorNodes;)|(%CoordinateNodes;)|(%NormalNodes;)|%WildcardNodes;)?) | (%WildcardNodes;,((%ColorNodes;)|(%CoordinateNodes;)|(%NormalNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) )? ) )? ) )? )"> <![%ImmersiveProfile;[ <!ELEMENT IndexedFaceSet ( %ColorCoordinateNormalTextureCoordinateContentModel; ) > <!ELEMENT IndexedLineSet (IS?, (%MetadataNodes;)?, ( ( (%ColorNodes;), ((%CoordinateNodes;) | %WildcardNodes;)? ) | ( (%CoordinateNodes;), ((%ColorNodes;) | %WildcardNodes;)? ) | ( %WildcardNodes;, ((%ColorNodes;) | (%CoordinateNodes;) | %WildcardNodes;)?) )? ) > <!ELEMENT LineSet (IS?, (%MetadataNodes;)?, ( ( (%ColorNodes;), ((%CoordinateNodes;) | %WildcardNodes;)? ) | ( (%CoordinateNodes;), ((%ColorNodes;) | %WildcardNodes;)? ) | ( %WildcardNodes;, ((%ColorNodes;) | (%CoordinateNodes;) | %WildcardNodes;)?) )? ) > ]]> <![%InterchangeProfile;[ <!ELEMENT IndexedFaceSet ( (%MetadataNodes;)?, ((%ColorNodes;), Coordinate?) | (Coordinate, (%ColorNodes;)?) )? > <!ELEMENT IndexedLineSet ( (%MetadataNodes;)?, ( Color, Coordinate? ) | ( Coordinate, Color?) )? > <!ELEMENT LineSet ( (%MetadataNodes;)?, ( Color, Coordinate? ) | ( Coordinate, Color?) )? > ]]> <!ATTLIST IndexedFaceSet ccw %SFBool; "true" colorIndex %MFInt32; #IMPLIED colorPerVertex %SFBool; "true" convex %SFBool; "true" coordIndex %MFInt32; #IMPLIED creaseAngle %SFFloat; "0" normalIndex %MFInt32; #IMPLIED normalPerVertex %SFBool; "true" solid %SFBool; "true" texCoordIndex %MFInt32; #IMPLIED containerField NMTOKEN "geometry" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED > <!ATTLIST IndexedLineSet colorIndex %MFInt32; #IMPLIED colorPerVertex %SFBool; "true" coordIndex %MFInt32; #IMPLIED containerField NMTOKEN "geometry" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED > <!ATTLIST LineSet lineCount %MFInt32; #IMPLIED containerField NMTOKEN "geometry" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED > <!ELEMENT Inline ((IS?), (%MetadataNodes;)?)> <!ATTLIST Inline load %SFBool; "true" url %MFString; #IMPLIED bboxCenter %SFVec3f; "0 0 0" bboxSize %SFVec3f; "-1 -1 -1" containerField NMTOKEN "children" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED > <!ELEMENT EXPORT EMPTY> <!ATTLIST EXPORT localDEF IDREF #REQUIRED AS NMTOKEN #IMPLIED > <!ELEMENT IMPORT EMPTY> <!ATTLIST IMPORT InlineDEF IDREF #REQUIRED importedDEF NMTOKEN #REQUIRED AS ID #IMPLIED > <![%ImmersiveProfile;[ <!ELEMENT IntegerSequencer ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST IntegerSequencer key %MFFloat; #IMPLIED keyValue %MFFloat; #IMPLIED containerField NMTOKEN "children" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT IntegerTrigger ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST IntegerTrigger integerKey %SFInt32; "-1" containerField NMTOKEN "children" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT IS (connect)+ > <!ELEMENT connect EMPTY > <!ATTLIST connect nodeField NMTOKEN #REQUIRED protoField NMTOKEN #REQUIRED> ]]> <!ELEMENT KeySensor ((IS?), (%MetadataNodes;)?)> <!ATTLIST KeySensor enabled %SFBool; "true" containerField NMTOKEN "children" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED > <![%ImmersiveProfile;[ <!ELEMENT LineProperties ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST LineProperties applied %SFBool; "true" linetype %SFInt32; "1" linewidthScaleFactor %SFFloat; "0" containerField NMTOKEN "lineProperties" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> ]]> <!ELEMENT LoadSensor (IS?, (%MetadataNodes;)?, (%UrlNodes; | %WildcardNodes;)*)> <!ATTLIST LoadSensor enabled %SFBool; "true" timeOut %SFTime; "0" containerField NMTOKEN "children" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED > <![%ImmersiveProfile;[ <!ELEMENT LOD (IS?, (%MetadataNodes;)?, ( %ChildrenNodes; | %WildcardNodes; )* ) > <!ATTLIST LOD center %SFVec3f; "0 0 0" range %MFFloat; #IMPLIED bboxCenter %SFVec3f; "0 0 0" bboxSize %SFVec3f; "-1 -1 -1" containerField NMTOKEN "children" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT Material ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST Material ambientIntensity %SFFloat; "0.2" diffuseColor %SFColor; "0.8 0.8 0.8" emissiveColor %SFColor; "0 0 0" shininess %SFFloat; "0.2" specularColor %SFColor; "0 0 0" transparency %SFFloat; "0" containerField NMTOKEN "material" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> ]]> <![%InterchangeProfile;[ <!ELEMENT Material ( (%MetadataNodes;)? ) > <!ATTLIST Material diffuseColor %SFColor; "0.8 0.8 0.8" emissiveColor %SFColor; "0 0 0" transparency %SFFloat; "0" containerField NMTOKEN "material" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> ]]> <!-- *** XHTML exerpts to define meta tag *** --> <!-- i18n, language, meta tag definitions from XHTML 1.0 http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd --> <!ENTITY % LanguageCode "NMTOKEN"> <!-- a language code, as per [IETF RFC3066/BCP47] ftp://ftp.isi.edu/in-notes/bcp/bcp47.txt --> <!-- internationalization attributes lang language code (backwards compatible) xml:lang language code (as per XML 1.0 spec) dir direction for weak/neutral text --> <!ENTITY % i18n "lang %LanguageCode; #IMPLIED xml:lang %LanguageCode; #IMPLIED dir (ltr|rtl) #IMPLIED"> <!ELEMENT head (component*, meta*)> <!-- generic metadata information, matches HTML usage, made attribute 'name' required --> <!ELEMENT meta EMPTY> <!ATTLIST meta http-equiv CDATA #IMPLIED name CDATA #REQUIRED content CDATA #REQUIRED scheme CDATA #IMPLIED %i18n; > <!-- formal X3D Metadata nodes --> <!ELEMENT MetadataDouble (IS?, (%MetadataNodes;)?)> <!ATTLIST MetadataDouble name %SFString; #IMPLIED value %MFDouble; #IMPLIED reference %SFString; #IMPLIED containerField NMTOKEN "metadata" DEF ID #IMPLIED USE IDREF #IMPLIED > <!ELEMENT MetadataFloat (IS?, (%MetadataNodes;)?)> <!ATTLIST MetadataFloat name %SFString; #IMPLIED value %MFFloat; #IMPLIED reference %SFString; #IMPLIED containerField NMTOKEN "metadata" DEF ID #IMPLIED USE IDREF #IMPLIED > <!ELEMENT MetadataInteger (IS?, (%MetadataNodes;)?)> <!ATTLIST MetadataInteger name %SFString; #IMPLIED value %MFInt32; #IMPLIED reference %SFString; #IMPLIED containerField NMTOKEN "metadata" DEF ID #IMPLIED USE IDREF #IMPLIED > <!ELEMENT MetadataString (IS?, (%MetadataNodes;)?)> <!ATTLIST MetadataString name %SFString; #IMPLIED value %MFString; #IMPLIED reference %SFString; #IMPLIED containerField NMTOKEN "metadata" DEF ID #IMPLIED USE IDREF #IMPLIED > <!-- containerField discriminates whether child Metadata node(s) are 'metadata' or 'value' fields. NMTOKEN vice enumeration, since containerField might have another value as field in a ProtoInstance. --> <!ELEMENT MetadataSet (IS?, (%MetadataNodes;)*)> <!ATTLIST MetadataSet reference %SFString; #IMPLIED name %SFString; #IMPLIED containerField NMTOKEN "metadata" DEF ID #IMPLIED USE IDREF #IMPLIED > <!-- FAQ: MovieTexture containerField='source' when used as a Sound source, containerField='texture' when used as a Appearance texture source--> <![%ImmersiveProfile;[ <!ELEMENT MovieTexture ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST MovieTexture loop %SFBool; "false" speed %SFFloat; "1.0" startTime %SFTime; "0" stopTime %SFTime; "0" url %MFString; #IMPLIED repeatS %SFBool; "true" repeatT %SFBool; "true" pauseTime %SFTime; "0" resumeTime %SFTime; "0" containerField NMTOKEN "texture" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT MultiTexture ( (IS?), (%MetadataNodes;)?, ( ((%MultiTextureChildTextures;)+, (%TextureTransformNodes;)* ) | ((%TextureTransformNodes;)+, (%MultiTextureChildTextures;)* ) )? ) > <!ATTLIST MultiTexture mode %MultiTextureModes; #IMPLIED source %MultiTextureFunctionValues; #IMPLIED function %MultiTextureSourceValues; #IMPLIED color %SFColor; "1 1 1" alpha %SFFloat; "1.0" containerField NMTOKEN "texture" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT MultiTextureCoordinate ((IS?), (%MetadataNodes;)?, (TextureCoordinate | TextureCoordinateGenerator)* ) > <!ATTLIST MultiTextureCoordinate containerField NMTOKEN "texCoord" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> ]]> <!ELEMENT NavigationInfo ((IS?), (%MetadataNodes;)?)> <!ATTLIST NavigationInfo avatarSize %MFFloat; "0.25 1.6 0.75" headlight %SFBool; "true" speed %SFFloat; "1" type %MFString; ""EXAMINE" "ANY"" visibilityLimit %SFFloat; "0" containerField NMTOKEN "children" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED > <![%ImmersiveProfile;[ <!ELEMENT Normal ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST Normal vector %MFVec3f; #IMPLIED containerField NMTOKEN "normal" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT NormalInterpolator ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST NormalInterpolator key %MFFloat; #IMPLIED keyValue %MFVec3f; #IMPLIED containerField NMTOKEN "children" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> ]]> <!ELEMENT OrientationInterpolator ((IS?), (%MetadataNodes;)?)> <!ATTLIST OrientationInterpolator key %MFFloat; #IMPLIED keyValue %MFRotation; #IMPLIED containerField NMTOKEN "children" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED > <![%ImmersiveProfile;[ <!ELEMENT PixelTexture ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST PixelTexture image %SFImage; "0 0 0" repeatS %SFBool; "true" repeatT %SFBool; "true" containerField NMTOKEN "texture" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT PlaneSensor ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST PlaneSensor description %SFString; #IMPLIED autoOffset %SFBool; "true" enabled %SFBool; "true" maxPosition %SFVec2f; "-1 -1" minPosition %SFVec2f; "0 0" offset %SFVec3f; "0 0 0" containerField NMTOKEN "children" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT PointLight ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST PointLight ambientIntensity %SFFloat; "0" attenuation %SFVec3f; "1 0 0" color %SFColor; "1 1 1" intensity %SFFloat; "1" location %SFVec3f; "0 0 0" on %SFBool; "true" radius %SFFloat; "100" containerField NMTOKEN "children" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT PointSet (IS?, (%MetadataNodes;)?, ( ( (%ColorNodes;), ((%CoordinateNodes;) | %WildcardNodes;)? ) | ( (%CoordinateNodes;), ((%ColorNodes;) | %WildcardNodes;)? ) | ( %WildcardNodes;, ((%ColorNodes;) | (%CoordinateNodes;) | %WildcardNodes;)?) )? ) > ]]> <![%InterchangeProfile;[ <!ELEMENT PointSet ( (%MetadataNodes;)?, ( ( Color, Coordinate? ) | ( Coordinate, Color? ) )? ) > ]]> <!ATTLIST PointSet containerField NMTOKEN "geometry" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED > <!ELEMENT PositionInterpolator ((IS?), (%MetadataNodes;)?)> <!ATTLIST PositionInterpolator key %MFFloat; #IMPLIED keyValue %MFVec3f; #IMPLIED containerField NMTOKEN "children" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED > <![%ImmersiveProfile;[ <!ELEMENT PositionInterpolator2D ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST PositionInterpolator2D key %MFFloat; #IMPLIED keyValue %MFVec2f; #IMPLIED containerField NMTOKEN "children" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> ]]> <![%ImmersiveProfile;[ <!ELEMENT ProtoInterface ( field+ ) > <!-- choice of required first node contained in ProtoBody constrained by valid ( %ProtoNodes; ) rather than %SceneNodes; ) > --> <!ELEMENT ProtoBody ( ( %ProtoNodes; ), ( %SceneNodes; )* ) > <!-- include previous and proposed forms until content is updated and evaluated. work in progress. --> <!ELEMENT ProtoDeclare (ProtoInterface? , ProtoBody) > <!-- ( | ( field*, ( %ProtoNodes; ), ( %SceneNodes; )* )) --> <!ATTLIST ProtoDeclare name NMTOKEN #REQUIRED appinfo %SFString; #IMPLIED documentation %SFString; #IMPLIED> <!ELEMENT ProtoInstance ( fieldValue*, IS? ) > <!-- ( %SceneNodes; )* --><!-- direct children disallowed, let fieldValue name="children" handle them --> <!ATTLIST ProtoInstance name NMTOKEN #REQUIRED containerField NMTOKEN "children" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT ProximitySensor ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST ProximitySensor center %SFVec3f; "0 0 0" size %SFVec3f; "0 0 0" enabled %SFBool; "true" containerField NMTOKEN "children" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> ]]> <!ELEMENT ROUTE EMPTY> <!ATTLIST ROUTE fromNode IDREF #REQUIRED fromField NMTOKEN #REQUIRED toNode IDREF #REQUIRED toField NMTOKEN #REQUIRED > <!ELEMENT ScalarInterpolator ((IS?), (%MetadataNodes;)?)> <!ATTLIST ScalarInterpolator key %MFFloat; #IMPLIED keyValue %MFFloat; #IMPLIED containerField NMTOKEN "children" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED > <!ELEMENT Scene (%SceneNodes;)*> <!-- Script is similar to PROTO regarding user definition of multiple fields --> <![%ImmersiveProfile;[ <!-- script code should be included as CDATA sections. watch out on content-model order, originally ( #PCDATA | field )* --> <!-- can this mixed model be further tighted to allow only one IS, following zero or more field tags, prior to PCDATA? <!ELEMENT Script ( #PCDATA | field | IS )* > <!ELEMENT Script ( (%MetadataNodes;)?, field*, IS?, #PCDATA ) > <!ELEMENT Script ( #PCDATA | (%MetadataNodes;)? | field* | IS? ) > <!ELEMENT Script ( #PCDATA | MetadataDouble | MetadataFloat | MetadataInteger | MetadataSet | MetadataString | field | IS )* > --> <!ELEMENT Script ( #PCDATA | %MetadataNodes; | field | IS )* > <!ATTLIST Script url %MFString; #IMPLIED directOutput %SFBool; "false" mustEvaluate %SFBool; "false" containerField NMTOKEN "children" class CDATA #IMPLIED xml:space (default | preserve) #FIXED "preserve" DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT Shape (IS?, (%MetadataNodes;)?, ( ( (%AppearanceNodes;), (( %GeometryNodes; ) | %WildcardNodes;)? ) | ( ( %GeometryNodes; ), ((%AppearanceNodes;) | %WildcardNodes;)? ) | ( %WildcardNodes;, (( %GeometryNodes; ) | (%AppearanceNodes;) | %WildcardNodes;)? ) )? ) > ]]> <![%InterchangeProfile;[ <!ELEMENT Shape ( (%MetadataNodes;)?, ( (%AppearanceNodes;), ( %GeometryNodes; )? ) | ( ( %GeometryNodes; ), (%AppearanceNodes;)? ) )? > ]]> <!ATTLIST Shape containerField NMTOKEN "children" class CDATA #IMPLIED bboxCenter %SFVec3f; "0 0 0" bboxSize %SFVec3f; "-1 -1 -1" DEF ID #IMPLIED USE IDREF #IMPLIED > <![%ImmersiveProfile;[ <!ELEMENT Sound (IS?, (%MetadataNodes;)?, ( %AudioClipNodes; | %MovieTextureNodes; | %WildcardNodes; ) ) > <!ATTLIST Sound direction %SFVec3f; "0 0 1" intensity %SFFloat; "1" location %SFVec3f; "0 0 0" maxBack %SFFloat; "10" maxFront %SFFloat; "10" minBack %SFFloat; "1" minFront %SFFloat; "1" priority %SFFloat; "0" spatialize %SFBool; "true" containerField NMTOKEN "children" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT Sphere ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST Sphere radius %SFFloat; "1" containerField NMTOKEN "geometry" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT SphereSensor ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST SphereSensor description %SFString; #IMPLIED autoOffset %SFBool; "true" enabled %SFBool; "true" offset %SFRotation; "0 1 0 0" containerField NMTOKEN "children" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> ]]> <![%ImmersiveProfile;[ <!ELEMENT SpotLight ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST SpotLight ambientIntensity %SFFloat; "0" attenuation %SFVec3f; "1 0 0" beamWidth %SFFloat; "1.570796" color %SFColor; "1 1 1" cutOffAngle %SFFloat; "0.785398" direction %SFVec3f; "0 0 -1" intensity %SFFloat; "1" location %SFVec3f; "0 0 0" on %SFBool; "true" radius %SFFloat; "100" containerField NMTOKEN "children" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT StaticGroup (IS?, (%MetadataNodes;)?, ( %ChildrenNodes; | %WildcardNodes; )* ) > <!ATTLIST StaticGroup bboxCenter %SFVec3f; "0 0 0" bboxSize %SFVec3f; "-1 -1 -1" containerField NMTOKEN "children" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT StringSensor ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST StringSensor enabled %SFBool; "true" deletionAllowed %SFBool; "true" containerField NMTOKEN "children" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> ]]> <!ELEMENT Switch (IS?, (%MetadataNodes;)?, (%ChildrenNodes; | %WildcardNodes;)*)> <!ATTLIST Switch whichChoice %SFInt32; "-1" containerField NMTOKEN "children" bboxCenter %SFVec3f; "0 0 0" bboxSize %SFVec3f; "-1 -1 -1" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED > <![%ImmersiveProfile;[ <!ELEMENT Text (IS?, (%MetadataNodes;)?, ( (%FontStyleNodes;)? | %WildcardNodes; ) ) > <!ATTLIST Text string %MFString; #IMPLIED length %MFFloat; #IMPLIED maxExtent %SFFloat; "0.0" containerField NMTOKEN "geometry" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> <!-- backTexture, bottomTexture, frontTexture, leftTexture, rightTexture, topTexture; could use rule for 0..6 children here --> <!ELEMENT TextureBackground (IS?, (%MetadataNodes;)?, (%TextureNodes;)* )> <!ATTLIST TextureBackground groundAngle %MFFloat; #IMPLIED groundColor %MFColor; #IMPLIED skyAngle %MFFloat; #IMPLIED skyColor %MFColor; "0 0 0" transparency %MFFloat; "0" containerField NMTOKEN "children" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED > ]]> <!ELEMENT TextureCoordinate ((IS?), (%MetadataNodes;)?)> <!ATTLIST TextureCoordinate point %MFVec2f; #IMPLIED containerField NMTOKEN "texCoord" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED > <![%ImmersiveProfile;[ <!ELEMENT TextureCoordinateGenerator ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST TextureCoordinateGenerator mode %TextureCoordinateGeneratorModes; "SPHERE" parameter %MFFloat; #IMPLIED containerField NMTOKEN "texCoord" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT TextureTransform ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST TextureTransform center %SFVec2f; "0 0" rotation %SFFloat; "0" scale %SFVec2f; "1 1" translation %SFVec2f; "0 0" containerField NMTOKEN "textureTransform" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT MultiTextureTransform ((IS?), (TextureTransform)* ) > <!ATTLIST MultiTextureTransform containerField NMTOKEN "textureTransform" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> ]]> <!ELEMENT TimeSensor ((IS?), (%MetadataNodes;)?)> <!ATTLIST TimeSensor cycleInterval %SFTime; "1.0" enabled %SFBool; "true" loop %SFBool; "false" startTime %SFTime; "0" stopTime %SFTime; "0" pauseTime %SFTime; "0" resumeTime %SFTime; "0" containerField NMTOKEN "children" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED > <![%ImmersiveProfile;[ <!ELEMENT TimeTrigger ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST TimeTrigger containerField NMTOKEN "children" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT TouchSensor ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST TouchSensor description %SFString; #IMPLIED enabled %SFBool; "true" containerField NMTOKEN "children" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> ]]> <!ELEMENT Transform (IS?, (%MetadataNodes;)?, (%ChildrenNodes; | %WildcardNodes;)*)> <!ATTLIST Transform center %SFVec3f; "0 0 0" rotation %SFRotation; "0 0 1 0" scale %SFVec3f; "1 1 1" scaleOrientation %SFRotation; "0 0 1 0" translation %SFVec3f; "0 0 0" bboxCenter %SFVec3f; "0 0 0" bboxSize %SFVec3f; "-1 -1 -1" containerField NMTOKEN "children" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED > <!-- Triangle*Set nodes are Immersive profile --> <!ELEMENT IndexedTriangleFanSet %ColorCoordinateNormalTextureCoordinateContentModel;> <!ATTLIST IndexedTriangleFanSet index %MFInt32; #IMPLIED ccw %SFBool; "true" colorPerVertex %SFBool; "true" normalPerVertex %SFBool; "true" solid %SFBool; "true" containerField NMTOKEN "geometry" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED > <!ELEMENT IndexedTriangleSet %ColorCoordinateNormalTextureCoordinateContentModel;> <!ATTLIST IndexedTriangleSet index %MFInt32; #IMPLIED ccw %SFBool; "true" colorPerVertex %SFBool; "true" normalPerVertex %SFBool; "true" solid %SFBool; "true" containerField NMTOKEN "geometry" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED > <!ELEMENT IndexedTriangleStripSet %ColorCoordinateNormalTextureCoordinateContentModel;> <!ATTLIST IndexedTriangleStripSet index %MFInt32; #IMPLIED stripCount %MFInt32; #IMPLIED ccw %SFBool; "true" colorPerVertex %SFBool; "true" normalPerVertex %SFBool; "true" solid %SFBool; "true" containerField NMTOKEN "geometry" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED > <!ELEMENT TriangleFanSet %ColorCoordinateNormalTextureCoordinateContentModel;> <!ATTLIST TriangleFanSet fanCount %MFInt32; #IMPLIED ccw %SFBool; "true" colorPerVertex %SFBool; "true" normalPerVertex %SFBool; "true" solid %SFBool; "true" containerField NMTOKEN "geometry" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED > <!ELEMENT TriangleSet %ColorCoordinateNormalTextureCoordinateContentModel;> <!ATTLIST TriangleSet ccw %SFBool; "true" colorPerVertex %SFBool; "true" normalPerVertex %SFBool; "true" solid %SFBool; "true" containerField NMTOKEN "geometry" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED > <!ELEMENT TriangleStripSet %ColorCoordinateNormalTextureCoordinateContentModel;> <!ATTLIST TriangleStripSet stripCount %MFInt32; #IMPLIED ccw %SFBool; "true" colorPerVertex %SFBool; "true" normalPerVertex %SFBool; "true" solid %SFBool; "true" containerField NMTOKEN "geometry" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED > <!ELEMENT Viewpoint ((IS?), (%MetadataNodes;)?)> <!ATTLIST Viewpoint fieldOfView %SFFloat; "0.785398" jump %SFBool; "true" orientation %SFRotation; "0 0 1 0" position %SFVec3f; "0 0 10" description %SFString; #IMPLIED centerOfRotation %SFVec3f; "0 0 0" containerField NMTOKEN "children" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED > <!-- centerOfRotation point relates to NavigationInfo EXAMINE mode. --> <![%ImmersiveProfile;[ <!ELEMENT VisibilitySensor ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST VisibilitySensor center %SFVec3f; "0 0 0" enabled %SFBool; "true" size %SFVec3f; "0 0 0" containerField NMTOKEN "children" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> ]]> <!ELEMENT WorldInfo ((IS?), (%MetadataNodes;)?)> <!ATTLIST WorldInfo info %MFString; #IMPLIED title %SFString; #IMPLIED containerField NMTOKEN "children" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED > <!ELEMENT X3D (head?, Scene)> <!ATTLIST X3D xmlns:xsd CDATA "http://www.w3.org/2001/XMLSchema-instance" xsd:noNamespaceSchemaLocation CDATA "http://www.web3d.org/specifications/x3d-3.0.xsd" profile %profileNames; #REQUIRED version %SFString; #FIXED "3.0" > <!-- also included in EspduTransform: CollisionPdu DetonatePdu FirePdu --> <![%DISComponent;[ <!ELEMENT EspduTransform (IS?, (%MetadataNodes;)?, ( %ChildrenNodes; | %WildcardNodes; )* ) > <!ATTLIST EspduTransform marking %SFString; #IMPLIED siteID %SFInt32; "0" applicationID %SFInt32; "1" entityID %SFInt32; "0" forceID %SFInt32; "0" entityKind %SFInt32; "0" entityDomain %SFInt32; "0" entityCountry %SFInt32; "0" entityCategory %SFInt32; "0" entitySubCategory %SFInt32; "0" entitySpecific %SFInt32; "0" entityExtra %SFInt32; "0" readInterval %SFTime; "0.1" writeInterval %SFTime; "1.0" networkMode (standAlone|networkReader|networkWriter) "standAlone" translation %SFVec3f; "0 0 0" rotation %SFRotation; "0 0 1 0" scale %SFVec3f; "1 1 1" scaleOrientation %SFRotation; "0 0 1 0" bboxCenter %SFVec3f; "0 0 0" bboxSize %SFVec3f; "-1 -1 -1" center %SFVec3f; "0 0 0" address %SFString; "localhost" port %SFInt32; "0" multicastRelayHost %SFString; #IMPLIED multicastRelayPort %SFInt32; "0" rtpHeaderExpected %SFBool; "false" deadReckoning %SFInt32; "0" linearVelocity %SFVec3f; "0 0 0" linearAcceleration %SFVec3f; "0 0 0" fired1 %SFBool; "false" fired2 %SFBool; "false" munitionStartPoint %SFVec3f; "0 0 0" munitionEndPoint %SFVec3f; "0 0 0" warhead %SFInt32; "0" fuse %SFInt32; "0" munitionQuantity %SFInt32; "0" firingRate %SFInt32; "0" firingRange %SFInt32; "0" munitionSiteID %SFInt32; "0" munitionApplicationID %SFInt32; "1" munitionEntityID %SFInt32; "0" fireMissionIndex %SFInt32; "0" articulationParameterCount %SFInt32; "0" articulationParameterDesignatorArray %MFInt32; #IMPLIED articulationParameterChangeIndicatorArray %MFInt32; #IMPLIED articulationParameterIdPartAttachedArray %MFInt32; #IMPLIED articulationParameterTypeArray %MFInt32; #IMPLIED articulationParameterArray %MFFloat; #IMPLIED containerField NMTOKEN "children" class CDATA "" DEF ID #IMPLIED USE IDREF #IMPLIED > <!ELEMENT ReceiverPdu ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST ReceiverPdu whichGeometry %SFInt32; "1" bboxCenter %SFVec3f; "0 0 0" bboxSize %SFVec3f; "-1 -1 -1" siteID %SFInt32; "0" applicationID %SFInt32; "1" entityID %SFInt32; "0" readInterval %SFTime; "0.1" writeInterval %SFTime; "1.0" networkMode (standAlone|networkReader|networkWriter) "standAlone" address %SFString; "localhost" port %SFInt32; "0" multicastRelayHost %SFString; #IMPLIED multicastRelayPort %SFInt32; "0" rtpHeaderExpected %SFBool; "false" radioID %SFInt32; "0" receivedPower %SFFloat; "0.0" receiverState %SFInt32; "0" transmitterSiteID %SFInt32; "0" transmitterApplicationID %SFInt32; "0" transmitterEntityID %SFInt32; "0" transmitterRadioID %SFInt32; "0" containerField NMTOKEN "children" class CDATA "" DEF ID #IMPLIED USE IDREF #IMPLIED > <!ELEMENT SignalPdu ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST SignalPdu whichGeometry %SFInt32; "1" bboxCenter %SFVec3f; "0 0 0" bboxSize %SFVec3f; "-1 -1 -1" siteID %SFInt32; "0" applicationID %SFInt32; "1" entityID %SFInt32; "0" readInterval %SFTime; "0.1" writeInterval %SFTime; "1.0" networkMode (standAlone|networkReader|networkWriter) "standAlone" address %SFString; "localhost" port %SFInt32; "0" multicastRelayHost %SFString; #IMPLIED multicastRelayPort %SFInt32; "0" rtpHeaderExpected %SFBool; "false" radioID %SFInt32; "0" encodingScheme %SFInt32; "0" tdlType %SFInt32; "0" sampleRate %SFInt32; "0" samples %SFInt32; "0" dataLength %SFInt32; "0" data %MFInt32; #IMPLIED containerField NMTOKEN "children" class CDATA "" DEF ID #IMPLIED USE IDREF #IMPLIED > <!ELEMENT TransmitterPdu ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST TransmitterPdu whichGeometry %SFInt32; "1" bboxCenter %SFVec3f; "0 0 0" bboxSize %SFVec3f; "-1 -1 -1" siteID %SFInt32; "0" applicationID %SFInt32; "1" entityID %SFInt32; "0" readInterval %SFTime; "0.1" writeInterval %SFTime; "1.0" networkMode (standAlone|networkReader|networkWriter) "standAlone" address %SFString; "localhost" port %SFInt32; "0" multicastRelayHost %SFString; #IMPLIED multicastRelayPort %SFInt32; "0" rtpHeaderExpected %SFBool; "false" radioID %SFInt32; "0" antennaLocation %SFVec3f; "0 0 0" antennaPatternLength %SFInt32; "0" antennaPatternType %SFInt32; "0" cryptoKeyId %SFInt32; "0" cryptoSystem %SFInt32; "0" frequency %SFInt32; "0" inputSource %SFInt32; "0" lengthOfModulationParameters %SFInt32; "0" modulationTypeDetail %SFInt32; "0" modulationTypeMajor %SFInt32; "0" modulationTypeSpreadSpectrum %SFInt32; "0" modulationTypeSystem %SFInt32; "0" power %SFFloat; "0.0" radioEntityTypeCategory %SFInt32; "0" radioEntityTypeCountry %SFInt32; "0" radioEntityTypeDomain %SFInt32; "0" radioEntityTypeKind %SFInt32; "0" radioEntityTypeNomenclature %SFInt32; "0" radioEntityTypeNomenclatureVersion %SFInt32; "0" relativeAntennaLocation %SFVec3f; "0 0 0" transmitFrequencyBandwidth %SFFloat; "0.0" transmitState %SFInt32; "0" containerField NMTOKEN "children" class CDATA "" DEF ID #IMPLIED USE IDREF #IMPLIED > ]]> <![%GeoSpatialComponent;[ <!ELEMENT GeoCoordinate ( IS?, (%MetadataNodes;)?, GeoOrigin? ) > <!-- X3DCoordinateNodeType --> <!ATTLIST GeoCoordinate geoSystem %MFString; '"GD" "WE"' point %MFVec3d; #IMPLIED containerField NMTOKEN "coord" class CDATA "" DEF ID #IMPLIED USE IDREF #IMPLIED> <!-- need to restrict GeoOrigin to first element, or relax schema restriction --> <!ELEMENT GeoElevationGrid (IS?, (%MetadataNodes;)?, ( ((%ColorNodes;), ( (GeoOrigin, ( ((%NormalNodes;),((%TextureCoordinateNodes;)|%WildcardNodes;)?) | ((%TextureCoordinateNodes;),((%NormalNodes;)|%WildcardNodes;)?) | (%WildcardNodes;,((%NormalNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) )? ) | ((%NormalNodes;), ( (GeoOrigin,((%TextureCoordinateNodes;)|%WildcardNodes;)?) | ((%TextureCoordinateNodes;),(GeoOrigin|%WildcardNodes;)?) | (%WildcardNodes;,(GeoOrigin|(%TextureCoordinateNodes;)|%WildcardNodes;)?) )? ) | ((%TextureCoordinateNodes;), ( (GeoOrigin,((%NormalNodes;)|%WildcardNodes;)?) | ((%NormalNodes;),(GeoOrigin|%WildcardNodes;)?) | (%WildcardNodes;,(GeoOrigin|(%NormalNodes;)|%WildcardNodes;)?) )? ) | (%WildcardNodes;, ( (GeoOrigin,((%NormalNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) | ((%NormalNodes;),(GeoOrigin|(%TextureCoordinateNodes;)|%WildcardNodes;)?) | ((%TextureCoordinateNodes;),((%NormalNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) | (%WildcardNodes;,(GeoOrigin|(%NormalNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) )? ) )? ) | (GeoOrigin, ( ((%ColorNodes;), ( ((%NormalNodes;),((%TextureCoordinateNodes;)|%WildcardNodes;)?) | ((%TextureCoordinateNodes;),((%NormalNodes;)|%WildcardNodes;)?) | (%WildcardNodes;,((%NormalNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) )? ) | ((%NormalNodes;), ( ((%ColorNodes;),((%TextureCoordinateNodes;)|%WildcardNodes;)?) | ((%TextureCoordinateNodes;),((%ColorNodes;)|%WildcardNodes;)?) | (%WildcardNodes;,((%ColorNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) )? ) | ((%TextureCoordinateNodes;), ( ((%ColorNodes;),((%NormalNodes;)|%WildcardNodes;)?) | ((%NormalNodes;),((%ColorNodes;)|%WildcardNodes;)?) | (%WildcardNodes;,((%ColorNodes;)|(%NormalNodes;)|%WildcardNodes;)?) )? ) | (%WildcardNodes;, ( ((%ColorNodes;),((%NormalNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) | ((%NormalNodes;),((%ColorNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) | ((%TextureCoordinateNodes;),((%NormalNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) | (%WildcardNodes;,((%ColorNodes;)|(%NormalNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) )? ) )? ) | ((%NormalNodes;), ( ((%ColorNodes;), ( (GeoOrigin,((%TextureCoordinateNodes;)|%WildcardNodes;)?) | ((%TextureCoordinateNodes;),(GeoOrigin|%WildcardNodes;)?) | (%WildcardNodes;,(GeoOrigin|(%TextureCoordinateNodes;)|%WildcardNodes;)?) )? ) | (GeoOrigin,(((%ColorNodes;),((%TextureCoordinateNodes;)|%WildcardNodes;)?) | ((%TextureCoordinateNodes;),((%ColorNodes;)|%WildcardNodes;)?) | (%WildcardNodes;,((%ColorNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) )? ) | ((%TextureCoordinateNodes;), ( ((%ColorNodes;),(GeoOrigin|%WildcardNodes;)?) | (GeoOrigin,((%ColorNodes;)|%WildcardNodes;)?) | (%WildcardNodes;,((%ColorNodes;)|GeoOrigin|%WildcardNodes;)?) )? ) | (%WildcardNodes;, ( ((%ColorNodes;),(GeoOrigin|(%TextureCoordinateNodes;)|%WildcardNodes;)?) | (GeoOrigin,((%ColorNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) | ((%TextureCoordinateNodes;),((%ColorNodes;)|GeoOrigin|%WildcardNodes;)?) | (%WildcardNodes;,((%ColorNodes;)|GeoOrigin|(%TextureCoordinateNodes;)|%WildcardNodes;)?) )? ) )? ) | ((%TextureCoordinateNodes;), ( ((%ColorNodes;), ( (GeoOrigin,((%NormalNodes;)|%WildcardNodes;)?) | ((%NormalNodes;),(GeoOrigin|%WildcardNodes;)?) | (%WildcardNodes;,(GeoOrigin|(%NormalNodes;)|%WildcardNodes;)?) )? ) | (GeoOrigin,(((%ColorNodes;),((%NormalNodes;)|%WildcardNodes;)?) | ((%NormalNodes;),((%ColorNodes;)|%WildcardNodes;)?) | (%WildcardNodes;,((%ColorNodes;)|(%NormalNodes;)|%WildcardNodes;)?) )? ) | ((%NormalNodes;), ( ((%ColorNodes;),(GeoOrigin|%WildcardNodes;)?) | (GeoOrigin,((%ColorNodes;)|%WildcardNodes;)?) | (%WildcardNodes;,((%ColorNodes;)|GeoOrigin|%WildcardNodes;)?) )? ) | (%WildcardNodes;, ( ((%ColorNodes;),((%NormalNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) | (GeoOrigin,((%ColorNodes;)|(%NormalNodes;)|%WildcardNodes;)?) | ((%NormalNodes;),((%ColorNodes;)|GeoOrigin|%WildcardNodes;)?) | (%WildcardNodes;,((%ColorNodes;)|GeoOrigin|(%NormalNodes;)|%WildcardNodes;)?) )? ) )? ) | (%WildcardNodes;, ( ((%ColorNodes;), ( (GeoOrigin,((%NormalNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) | ((%NormalNodes;),(GeoOrigin|(%TextureCoordinateNodes;)|%WildcardNodes;)?) | ((%TextureCoordinateNodes;),(GeoOrigin|(%NormalNodes;)|%WildcardNodes;)?) | (%WildcardNodes;,(GeoOrigin|(%NormalNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) )? ) | (GeoOrigin,(((%ColorNodes;),((%NormalNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) | ((%NormalNodes;),((%ColorNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) | ((%TextureCoordinateNodes;),((%ColorNodes;)|(%NormalNodes;)|%WildcardNodes;)?) | (%WildcardNodes;,((%ColorNodes;)|(%NormalNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) )? ) | ((%NormalNodes;), ( ((%ColorNodes;),(GeoOrigin|(%TextureCoordinateNodes;)|%WildcardNodes;)?) | (GeoOrigin,((%ColorNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) | ((%TextureCoordinateNodes;),((%ColorNodes;)|GeoOrigin|%WildcardNodes;)?) | (%WildcardNodes;,(GeoOrigin|(%ColorNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) )? ) | ((%TextureCoordinateNodes;), ( ((%ColorNodes;),(GeoOrigin|(%NormalNodes;)|%WildcardNodes;)?) | (GeoOrigin,((%ColorNodes;)|(%NormalNodes;)|%WildcardNodes;)?) | ((%NormalNodes;),((%ColorNodes;)|GeoOrigin|%WildcardNodes;)?) | (%WildcardNodes;,((%ColorNodes;)|GeoOrigin|(%NormalNodes;)|%WildcardNodes;)?) )? ) | (%WildcardNodes;, ( ((%ColorNodes;),(GeoOrigin|(%NormalNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) | (GeoOrigin,((%ColorNodes;)|(%NormalNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) | ((%NormalNodes;),((%ColorNodes;)|GeoOrigin|(%TextureCoordinateNodes;)|%WildcardNodes;)?) | ((%TextureCoordinateNodes;),((%ColorNodes;)|GeoOrigin|(%NormalNodes;)|%WildcardNodes;)?) | (%WildcardNodes;,((%ColorNodes;)|GeoOrigin|(%NormalNodes;)|(%TextureCoordinateNodes;)|%WildcardNodes;)?) )? ) )? ) )? ) > <!ATTLIST GeoElevationGrid geoSystem %MFString; '"GD" "WE"' geoGridOrigin %SFVec3d; "0 0 0" xDimension %SFInt32; "0" xSpacing %SFDouble; "1.0" yScale %SFFloat; "1.0" zDimension %SFInt32; "0" zSpacing %SFDouble; "1.0" height %MFDouble; "0 0" normalPerVertex %SFBool; "true" ccw %SFBool; "true" colorPerVertex %SFBool; "true" creaseAngle %SFFloat; "0" solid %SFBool; "true" containerField NMTOKEN "geometry" class CDATA "" DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT GeoLocation (IS?, (%MetadataNodes;)?, ( %ChildrenNodes; | %WildcardNodes; )*, (GeoOrigin, ( %ChildrenNodes; | %WildcardNodes; )* )? ) > <!ATTLIST GeoLocation geoSystem %MFString; '"GD" "WE"' geoCoords %SFVec3d; "0 0 0" bboxCenter %SFVec3f; "0 0 0" bboxSize %SFVec3f; "-1 -1 -1" containerField NMTOKEN "children" class CDATA "" DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT GeoLOD (IS?, (%MetadataNodes;)?, ( %ChildrenNodes; | %WildcardNodes; )*, (GeoOrigin, ( %ChildrenNodes; | %WildcardNodes; )* )? ) > <!ATTLIST GeoLOD geoSystem %MFString; '"GD" "WE"' rootUrl %MFString; #IMPLIED child1Url %MFString; #IMPLIED child2Url %MFString; #IMPLIED child3Url %MFString; #IMPLIED child4Url %MFString; #IMPLIED range %SFDouble; "10" center %SFVec3d; "0 0 0" bboxCenter %SFVec3f; "0 0 0" bboxSize %SFVec3f; "-1 -1 -1" containerField NMTOKEN "children" class CDATA "" DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT GeoMetadata ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST GeoMetadata url %MFString; #IMPLIED data IDREFS #IMPLIED summary %MFString; #IMPLIED containerField NMTOKEN "children" class CDATA "" DEF ID #IMPLIED USE IDREF #IMPLIED> <!-- title %SFString; #IMPLIED description %SFString; #IMPLIED coordinateSystem %SFString; #IMPLIED horizontalDatum %SFString; #IMPLIED verticalDatum %SFString; #IMPLIED ellipsoid %SFString; #IMPLIED extent %SFString; #IMPLIED resolution %SFString; #IMPLIED originator %SFString; #IMPLIED copyright %SFString; #IMPLIED date %SFString; #IMPLIED metadataFormat %SFString; #IMPLIED dataUrl %SFString; #IMPLIED dataFormat %SFString; #IMPLIED --> <!ELEMENT GeoOrigin ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST GeoOrigin geoSystem %MFString; '"GD" "WE"' geoCoords %SFVec3d; "0 0 0" rotateYUp %SFBool; "false" containerField NMTOKEN "geoOrigin" class CDATA "" DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT GeoPositionInterpolator ( IS?, (%MetadataNodes;)?, GeoOrigin? ) > <!ATTLIST GeoPositionInterpolator geoSystem %MFString; '"GD" "WE"' key %MFFloat; #IMPLIED keyValue %MFVec3d; #IMPLIED containerField NMTOKEN "children" class CDATA "" DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT GeoTouchSensor ( IS?, (%MetadataNodes;)?, GeoOrigin? ) > <!ATTLIST GeoTouchSensor geoSystem %MFString; '"GD" "WE"' enabled %SFBool; "true" containerField NMTOKEN "children" class CDATA "" DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT GeoViewpoint ( IS?, (%MetadataNodes;)?, GeoOrigin? ) > <!ATTLIST GeoViewpoint geoSystem %MFString; '"GD" "WE"' description %SFString; #IMPLIED position %SFVec3d; "0 0 100000" orientation %SFRotation; "0 0 1 0" fieldOfView %SFFloat; "0.785398" jump %SFBool; "true" navType %MFString; '"EXAMINE" "ANY"' headlight %SFBool; "true" speedFactor %SFFloat; "1.0" containerField NMTOKEN "children" class CDATA "" DEF ID #IMPLIED USE IDREF #IMPLIED> ]]> <!-- Note that setting JointNames as enumerations does not permit validation of other names. --> <![%HAnimComponent;[ <!ENTITY % JointNames "( c1|c2|c3|c4|c5|c6|c7|jaw|HumanoidRoot|l_acromioclavicular|l_ankle|l_calf| l_clavicle|l_elbow|l_eyeball|l_eyeball_joint|l_eyebrow|l_eyebrow_joint| l_eyelid|l_eyelid_joint|l_forearm|l_forefoot|l_hand|l_hindfoot|l_hip| l_index_distal|l_index_metacarpal|l_index_middle|l_index_proximal| l_index0|l_index1|l_index2|l_index3|l_knee|l_metatarsal|l_middistal| l_middle_distal|l_middle_metacarpal|l_middle_middle|l_middle_proximal| l_middle0|l_middle1|l_middle2|l_middle3|l_midproximal|l_midtarsal| l_pinky_distal|l_pinky_metacarpal|l_pinky_middle|l_pinky_proximal| l_pinky0|l_pinky1|l_pinky2|l_pinky3|l_ring_distal|l_ring_metacarpal| l_ring_middle|l_ring_proximal|l_ring0|l_ring1|l_ring2|l_ring3|l_scapula| l_shoulder|l_sternoclavicular|l_subtalar|l_thigh|l_thumb_distal| l_thumb_metacarpal|l_thumb_proximal|l_thumb1|l_thumb2|l_thumb3| l_upperarm|l_wrist|l1|l2|l3|l4|l5|pelvis|r_acromioclavicular|r_ankle| r_calf|r_clavicle|r_elbow|r_eyeball|r_eyeball_joint|r_eyebrow| r_eyebrow_joint|r_eyelid|r_eyelid_joint|r_forearm|r_forefoot|r_hand| r_hindfoot|r_hip|r_index_distal|r_index_metacarpal|r_index_middle| r_index_proximal|r_index0|r_index1|r_index2|r_index3|r_knee|r_metatarsal| r_middistal|r_middle_distal|r_middle_metacarpal|r_middle_middle| r_middle_proximal|r_middle0|r_middle1|r_middle2|r_middle3|r_midproximal| r_midtarsal|r_pinky_distal|r_pinky_metacarpal|r_pinky_middle| r_pinky_proximal|r_pinky0|r_pinky1|r_pinky2|r_pinky3|r_ring_distal| r_ring_metacarpal|r_ring_middle|r_ring_proximal|r_ring0|r_ring1|r_ring2| r_ring3|r_scapula|r_shoulder|r_sternoclavicular|r_subtalar|r_thigh| r_thumb_distal|r_thumb_metacarpal|r_thumb_proximal|r_thumb1|r_thumb2| r_thumb3|r_upperarm|r_wrist|sacroiliac|sacrum|skull|skullbase| t1|t2|t3|t4|t5|t6|t7|t8|t9|t10|t11|t12|temporomandibular| vc1|vc2|vc3|vc4|vc5|vc6|vc7|vl1|vl2|vl3|vl4|vl5| vt1|vt2|vt3|vt4|vt5|vt6|vt7|vt8|vt9|vt10|vt11|vt12)" > <!ELEMENT HAnimDisplacer ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST HAnimDisplacer name %SFString; #IMPLIED coordIndex %MFInt32; #IMPLIED displacements %MFVec3f; #IMPLIED weight %SFFloat; #IMPLIED containerField NMTOKEN #IMPLIED class CDATA "" DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT HAnimHumanoid (IS?, (%MetadataNodes;)?, (HAnimJoint*, HAnimSegment*, HAnimSite*, (%CoordinateNodes;)?, (%NormalNodes;)?, ( %ChildrenNodes; | %WildcardNodes; )* ) ) > <!-- skeleton/joints, segments, sites, skinCoord, skinNormal, skin/viewpoints --> <!-- note that joints, segments and sites should be USE nodes. skin Shapes will USE preceding skinCoord, skinNormal definitions. --> <!ATTLIST HAnimHumanoid name %SFString; #IMPLIED version %SFString; #IMPLIED info %MFString; #IMPLIED translation %SFVec3f; "0 0 0" rotation %SFRotation; "0 0 1 0" scale %SFVec3f; "1 1 1" scaleOrientation %SFRotation; "0 0 1 0" center %SFVec3f; "0 0 0" bboxCenter %SFVec3f; "0 0 0" bboxSize %SFVec3f; "-1 -1 -1" containerField NMTOKEN "children" class CDATA "" DEF ID #IMPLIED USE IDREF #IMPLIED> ]]> <!-- not treated as separate attributes, instead these are encoded as "attribute=value" SFString entries in the MFString info field. humanoidVersion %SFString; #IMPLIED authorName %SFString; #IMPLIED authorEmail %SFString; #IMPLIED copyright %SFString; #IMPLIED creationDate %SFString; #IMPLIED usageRestrictions %SFString; #IMPLIED age %SFString; #IMPLIED gender %SFString; #IMPLIED height %SFString; #IMPLIED weight %SFString; #IMPLIED --> <![%HAnimComponent;[ <!ELEMENT HAnimJoint (IS?, (%MetadataNodes;)?, ( %ChildrenNodes; | HAnimDisplacer | %WildcardNodes; )* ) > <!ATTLIST HAnimJoint name %JointNames; #IMPLIED ulimit %MFFloat; #IMPLIED llimit %MFFloat; #IMPLIED limitOrientation %SFRotation; "0 0 1 0" skinCoordIndex %MFInt32; #IMPLIED skinCoordWeight %MFFloat; #IMPLIED stiffness %MFFloat; "0 0 0" translation %SFVec3f; "0 0 0" rotation %SFRotation; "0 0 1 0" scale %SFVec3f; "1 1 1" scaleOrientation %SFRotation; "0 0 1 0" center %SFVec3f; "0 0 0" bboxCenter %SFVec3f; "0 0 0" bboxSize %SFVec3f; "-1 -1 -1" containerField NMTOKEN "children" class CDATA "" DEF ID #IMPLIED USE IDREF #IMPLIED> <!-- Multiple HAnimDisplacer nodes must appear consecutively inside HAnimSegment --> <!ELEMENT HAnimSegment (IS?, (%MetadataNodes;)?, ( ((%ChildrenNodes;|%WildcardNodes;)*, ((Coordinate, HAnimDisplacer*) | (HAnimDisplacer+, Coordinate?))? ) | (Coordinate, (((%ChildrenNodes;)*, HAnimDisplacer*) | (HAnimDisplacer+, (%ChildrenNodes;|%WildcardNodes;)*))? ) | (HAnimDisplacer+, ((Coordinate, (%ChildrenNodes;|%WildcardNodes;)*) | ((%ChildrenNodes;|%WildcardNodes;)*, Coordinate?))? )? ) ) > <!ATTLIST HAnimSegment name %JointNames; #IMPLIED mass %SFFloat; "0" centerOfMass %SFVec3f; "0 0 0" momentsOfInertia %MFFloat; "0 0 0 0 0 0 0 0 0" bboxCenter %SFVec3f; "0 0 0" bboxSize %SFVec3f; "-1 -1 -1" containerField NMTOKEN "children" class CDATA "" DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT HAnimSite (IS?, (%MetadataNodes;)?, ( %ChildrenNodes; | %WildcardNodes; )* ) > <!ATTLIST HAnimSite name %SFString; #IMPLIED translation %SFVec3f; "0 0 0" rotation %SFRotation; "0 0 1 0" scale %SFVec3f; "1 1 1" scaleOrientation %SFRotation; "0 0 1 0" center %SFVec3f; "0 0 0" bboxCenter %SFVec3f; "0 0 0" bboxSize %SFVec3f; "-1 -1 -1" containerField NMTOKEN "children" class CDATA "" DEF ID #IMPLIED USE IDREF #IMPLIED> ]]> <![%NurbsComponent;[ <!ELEMENT Contour2D (IS?, (%MetadataNodes;)?, ( %NurbsControlCurveNodes; | %WildcardNodes; )* ) > <!ATTLIST Contour2D containerField NMTOKEN "trimmingContour" class CDATA "" DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT ContourPolyline2D ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST ContourPolyline2D point %MFVec2f; #IMPLIED containerField NMTOKEN "children" class CDATA "" DEF ID #IMPLIED USE IDREF #IMPLIED> <!-- child CoordinateNode has containerField controlPoint --> <!ELEMENT NurbsCurve ( (IS?), (%MetadataNodes;)?, ( %CoordinateNodes; | %WildcardNodes; )? ) > <!ATTLIST NurbsCurve knot %MFDouble; #IMPLIED order %SFInt32; "3" weight %MFDouble; #IMPLIED tessellation %SFInt32; "0" closed %SFBool; "false" containerField NMTOKEN "geometry" class CDATA "" DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT NurbsCurve2D ( (IS?), (%MetadataNodes;)? ) > <!ATTLIST NurbsCurve2D controlPoint %MFVec2f; #IMPLIED knot %MFFloat; #IMPLIED order %SFInt32; "3" weight %MFFloat; #IMPLIED tessellation %SFInt32; "0" closed %SFBool; "false" containerField NMTOKEN "children" class CDATA "" DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT NurbsOrientationInterpolator ( (IS?), (%MetadataNodes;)?, (%CoordinateNodes;)? ) > <!ATTLIST NurbsOrientationInterpolator knot %MFDouble; #IMPLIED order %SFInt32; "3" weight %MFDouble; #IMPLIED containerField NMTOKEN "children" class CDATA "" DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT NurbsPositionInterpolator ( (IS?), (%MetadataNodes;)?, (%CoordinateNodes;)? ) > <!ATTLIST NurbsPositionInterpolator knot %MFDouble; #IMPLIED order %SFInt32; "3" weight %MFDouble; #IMPLIED containerField NMTOKEN "children" class CDATA "" DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT NurbsSurfaceInterpolator ( (IS?), (%MetadataNodes;)?, (%CoordinateNodes;)? ) > <!ATTLIST NurbsSurfaceInterpolator weight %MFDouble; #IMPLIED uDimension %SFInt32; "0" vDimension %SFInt32; "0" uKnot %MFDouble; #IMPLIED vKnot %MFDouble; #IMPLIED uOrder %SFInt32; "3" vOrder %SFInt32; "3" containerField NMTOKEN "children" class CDATA "" DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT NurbsSet (IS?, (%MetadataNodes;)?, (NurbsPatchSurface | NurbsSweptSurface | NurbsSwungSurface | NurbsTrimmedSurface | %WildcardNodes; )* ) > <!ATTLIST NurbsSet tessellationScale %SFFloat; "1.0" bboxCenter %SFVec3f; "0 0 0" bboxSize %SFVec3f; "-1 -1 -1" containerField NMTOKEN "children" class CDATA "" DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT NurbsPatchSurface (IS?, (%MetadataNodes;)?, ( %CoordinateNodes; | %WildcardNodes; )?, ( %TextureCoordinateNodes; | NurbsTextureCoordinate)? ) > <!ATTLIST NurbsPatchSurface uClosed %SFBool; "false" vClosed %SFBool; "false" uDimension %SFInt32; "0" vDimension %SFInt32; "0" uKnot %MFDouble; #IMPLIED vKnot %MFDouble; #IMPLIED uOrder %SFInt32; "3" vOrder %SFInt32; "3" uTessellation %SFInt32; "0" vTessellation %SFInt32; "0" weight %MFDouble; #IMPLIED solid %SFBool; "true" containerField NMTOKEN "geometry" class CDATA "" DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT NurbsTrimmedSurface (IS?, (%MetadataNodes;)?, ( %CoordinateNodes; | %WildcardNodes; )?, ( %TextureCoordinateNodes; | NurbsTextureCoordinate)?, Contour2D* ) > <!ATTLIST NurbsTrimmedSurface uClosed %SFBool; "false" vClosed %SFBool; "false" uDimension %SFInt32; "0" vDimension %SFInt32; "0" uKnot %MFDouble; #IMPLIED vKnot %MFDouble; #IMPLIED uOrder %SFInt32; "3" vOrder %SFInt32; "3" uTessellation %SFInt32; "0" vTessellation %SFInt32; "0" weight %MFFloat; #IMPLIED solid %SFBool; "true" containerField NMTOKEN "geometry" class CDATA "" DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT NurbsSweptSurface (IS?, (%MetadataNodes;)?, (NurbsCurve | %WildcardNodes; )?, ( %NurbsControlCurveNodes; | %WildcardNodes; )? ) > <!ATTLIST NurbsSweptSurface ccw %SFBool; "true" solid %SFBool; "true" containerField NMTOKEN "geometry" class CDATA "" DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT NurbsSwungSurface (IS?, (%MetadataNodes;)?, ( ( %NurbsControlCurveNodes; | %WildcardNodes; ), ( %NurbsControlCurveNodes; | %WildcardNodes; )? )? ) > <!ATTLIST NurbsSwungSurface ccw %SFBool; "true" solid %SFBool; "true" containerField NMTOKEN "geometry" class CDATA "" DEF ID #IMPLIED USE IDREF #IMPLIED> <!ELEMENT NurbsTextureCoordinate ( (IS?), (%MetadataNodes;)?, (%CoordinateNodes;)? ) > <!ATTLIST NurbsTextureCoordinate weight %MFDouble; #IMPLIED uDimension %SFInt32; "0" vDimension %SFInt32; "0" uKnot %MFDouble; #IMPLIED vKnot %MFDouble; #IMPLIED uOrder %SFInt32; "3" vOrder %SFInt32; "3" containerField NMTOKEN "texCoord" class CDATA "" DEF ID #IMPLIED USE IDREF #IMPLIED> ]]> <!-- Finally, add inputOnly/outputOnly attributes and Web3dExtensionComponent from separate DTDs. Note that Web3dExtensionComponent content-model extensions needed to be added at beginning, prior to node-type definitions. --> <![%X3dInputOutputFields;[ <!ENTITY % FieldsDTD SYSTEM "x3d-3.0-InputOutputFields.dtd"> %FieldsDTD; ]]> <![%Web3dExtensionComponent;[ <!ENTITY % Web3dExtensionsDTD SYSTEM "x3d-3.0-Web3dExtensions.dtd"> %Web3dExtensionsDTD; ]]>