Extensible 3D (X3D) encodings
Part 1: Extensible Markup Language (XML) encoding
Annex A
(normative)
Document Type Definition (DTD)
This annex provides a detailed description of the grammar for each syntactic element in this part of ISO/IEC 19776. Table A.1 contains a table of contents that lists the topics in this clause:
A.1 Table of contents and introduction A.1.1 Table of contents A.1.2 Introduction |
A.2 x3d-3.0.dtd A.3 x3d-3.0-InputOutputFields.dtd |
An XML Document Type Definition (DTD) defines syntax of an XML tagset [XML].
The X3D DTD has sufficient expressive power to:
The X3D DTD does not have sufficient expressive power to:
x3d-3.0.dtd is the X3D DTD:
<!-- # 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.17 # # revised: 16 September 2004 # # 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-Web3dExtensionsPublic.dtd # http://www.web3d.org/specifications/x3d-3.0-Web3dExtensionsPrivate.dtd # # X3D Revision DTDs: # http://www.web3d.org/x3d/content/x3d-3.0.dtd # http://www.web3d.org/x3d/content/x3d-3.0-InputOutputFields.dtd # http://www.web3d.org/x3d/content/x3d-3.0-Web3dExtensionsPublic.dtd # http://www.web3d.org/x3d/content/x3d-3.0-Web3dExtensionsPrivate.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/specifications/x3d-3.0.dtd"> # # Typical system location for this resource: # file://c:/www.web3d.org/specifications/x3d-3.0.dtd # file:///www.web3d.org/specifications/x3d-3.0.dtd # # Change log: # http://www.web3d.org/specifications/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 | SFVec2d| MFVec2d | 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 % SFVec2d "CDATA"> <!ENTITY % MFVec2d "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.x3d --> <!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 " > <!ENTITY % MultiTextureChildTextures " %TextureNodeExtensions; ImageTexture | MovieTexture | PixelTexture " > <!ENTITY % WorldInfoNodes " %WorldInfoNodeExtensions; %GeoMetadataNode; WorldInfo " > ]]> <![%InterchangeProfile;[ <!ENTITY % GeometricPropertyNodes " %ColorNodes; " > <!ENTITY % AppearanceChildNodes " %MaterialNodes; " > <!ENTITY % SceneLeafNodes " %LightNodes; | %ShapeNodes; | %WorldInfoNodes; " > <!ENTITY % MetadataNodes " %MetadataNodeExtensions; MetadataDouble | MetadataFloat | MetadataInteger | MetadataSet | MetadataString "> <!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 % MetadataNodes " %MetadataNodeExtensions; MetadataDouble | MetadataFloat | MetadataInteger | MetadataSet | MetadataString | ProtoInstance "> <!ENTITY % ProtoNodes " %OtherLeafNodes; | %AppearanceNodes; | %AppearanceChildNodes; | %BehaviorLeafNodes; | %BindableNodes; | %FontStyleNodes; | %GeometricPropertyNodes; | %GeometryNodes; | %GroupingNodes; | %MetadataNodes; | %SceneLeafNodes; | ProtoDeclare | ProtoInstance " > ]]> <![%InterchangeProfile;[ <!ENTITY % SceneNodes " %ChildrenNodes; | %WildcardNodes; " > ]]> <!ENTITY % ChildrenNodes " %BehaviorLeafNodes; | %BindableNodes; | %GroupingNodes; | %SceneLeafNodes; | ROUTE | EXPORT | IMPORT " > <![%ImmersiveProfile;[ <!-- 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 vertexCount %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 | ProtoInstance)* ) > <!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; )* ) > <!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 | ProtoInstance)* ) > <!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 > <!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" > <!-- EspduTransform includes DIS 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 % Web3dExtensionsPublicDTD SYSTEM "x3d-3.0-Web3dExtensionsPublic.dtd"> <!ENTITY % Web3dExtensionsPrivateDTD SYSTEM "x3d-3.0-Web3dExtensionsPrivate.dtd"> %Web3dExtensionsPublicDTD; %Web3dExtensionsPrivateDTD; ]]>
x3d-3.0-InputOutputFields.dtd extends the
X3D DTD by also including fields with accessType inputOnly
and outputOnly
.
Although X3D scene files cannot validly set values for any of these attributes, the DTD
defines names and relationships of all fields and can be used by DTD-aware processing tools.
<!-- # # X3D InputOutputFields DTD: # # http://www.web3d.org/specifications/x3d-3.0-InputOutputFields.dtd # # current version: 3.0.7 # # revised: 16 July 2004 # # Purpose: the primary Extensible 3D (X3D) Document Type Definition (DTD) # is augmented by field definitions in x3d-3.0-InputOutputFields.dtd # # 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 # # Typical system location for this resource is adjacent to x3d-3.0.dtd: # file://c:/www.web3d.org/specifications/x3d-3.0-InputOutputFields.dtd # file:///www.web3d.org/specifications/x3d-3.0-InputOutputFields.dtd # # changelog: # http://www.web3d.org/specifications/x3d-dtd-changelog.txt # # Note on typing: # CDATA used for %SFBool; definitions to allow #FIXED "" initialization, # since DTD rules otherwise require enumeration values to be # initialized to true|false. # --> <!ATTLIST AudioClip elapsedTime %SFTime; #FIXED "" duration_changed %SFTime; #FIXED "" isPaused CDATA #FIXED "" isActive CDATA #FIXED ""> <!ATTLIST Background set_bind CDATA #FIXED "" bindTime %SFTime; #FIXED "" isBound CDATA #FIXED ""> <!ATTLIST BooleanFilter set_boolean CDATA #FIXED "" inputTrue CDATA #FIXED "" inputFalse CDATA #FIXED "" inputNegate CDATA #FIXED ""> <!-- value_changed is CDATA instead of %SFBool% in order to set empty value on an enumeration --> <!ATTLIST BooleanSequencer set_fraction %SFFloat; #FIXED "" value_changed CDATA #FIXED "" previous CDATA #FIXED "" next CDATA #FIXED ""> <!ATTLIST BooleanToggle set_boolean CDATA #FIXED ""> <!ATTLIST BooleanTrigger set_triggerTime %SFTime; #FIXED "" triggerTrue CDATA #FIXED ""> <!ATTLIST Collision collideTime %SFTime; #FIXED "" isActive CDATA #FIXED ""> <!ATTLIST ColorInterpolator set_fraction %SFFloat; #FIXED "" value_changed %SFColor; #FIXED ""> <!ATTLIST CoordinateInterpolator set_fraction %SFFloat; #FIXED "" value_changed %MFVec3f; #FIXED ""> <!ATTLIST CoordinateInterpolator2D set_fraction %SFFloat; #FIXED "" value_changed %MFVec2f; #FIXED ""> <!ATTLIST CylinderSensor isActive CDATA #FIXED "" isOver CDATA #FIXED "" rotation_changed %SFRotation; #FIXED "" trackPoint_changed %SFVec3f; #FIXED ""> <!ATTLIST ElevationGrid set_height %MFFloat; #FIXED ""> <!ATTLIST Extrusion set_crossSection %MFVec2f; #FIXED "" set_orientation %MFRotation; #FIXED "" set_scale %MFVec2f; #FIXED "" set_spine %MFVec3f; #FIXED ""> <!ATTLIST Fog set_bind CDATA #FIXED "" bindTime %SFTime; #FIXED "" isBound CDATA #FIXED ""> <!ATTLIST IndexedFaceSet set_colorIndex %MFInt32; #FIXED "" set_coordIndex %MFInt32; #FIXED "" set_normalIndex %MFInt32; #FIXED "" set_texCoordIndex %MFInt32; #FIXED ""> <!ATTLIST IndexedLineSet set_colorIndex %MFInt32; #FIXED "" set_coordIndex %MFInt32; #FIXED ""> <!ATTLIST IndexedTriangleFanSet set_index %MFInt32; #FIXED ""> <!ATTLIST IndexedTriangleSet set_index %MFInt32; #FIXED ""> <!ATTLIST IndexedTriangleStripSet set_index %MFInt32; #FIXED ""> <!ATTLIST IntegerSequencer set_fraction %SFFloat; #FIXED "" value_changed %SFInt32; #FIXED "" previous CDATA #FIXED "" next CDATA #FIXED ""> <!ATTLIST IntegerTrigger set_boolean CDATA #FIXED "" triggerValue %SFInt32; #FIXED ""> <!ATTLIST KeySensor isActive CDATA #FIXED "" keyPress %SFInt32; #FIXED "" keyRelease %SFInt32; #FIXED "" actionKeyPress %SFInt32; #FIXED "" actionKeyRelease %SFInt32; #FIXED "" altKey CDATA #FIXED "" controlKey CDATA #FIXED "" shiftKey CDATA #FIXED ""> <!ATTLIST LoadSensor isActive CDATA #FIXED "" isLoaded CDATA #FIXED "" loadTime %SFTime; #FIXED "" progress %SFFloat; #FIXED ""> <!ATTLIST MovieTexture elapsedTime %SFTime; #FIXED "" duration_changed %SFTime; #FIXED "" isPaused CDATA #FIXED "" isActive CDATA #FIXED ""> <!ATTLIST NavigationInfo set_bind CDATA #FIXED "" bindTime %SFTime; #FIXED "" isBound CDATA #FIXED ""> <!ATTLIST NormalInterpolator set_fraction %SFFloat; #FIXED "" value_changed %MFVec3f; #FIXED ""> <!ATTLIST OrientationInterpolator set_fraction %SFFloat; #FIXED "" value_changed %SFRotation; #FIXED ""> <!ATTLIST PlaneSensor isActive CDATA #FIXED "" isOver CDATA #FIXED "" trackPoint_changed %SFVec3f; #FIXED "" translation_changed %SFVec3f; #FIXED ""> <!ATTLIST PositionInterpolator set_fraction %SFFloat; #FIXED "" value_changed %SFVec3f; #FIXED ""> <!ATTLIST PositionInterpolator2D set_fraction %SFFloat; #FIXED "" value_changed %SFVec2f; #FIXED ""> <!ATTLIST ProximitySensor isActive CDATA #FIXED "" position_changed %SFVec3f; #FIXED "" orientation_changed %SFRotation; #FIXED "" centerOfRotation_changed %SFVec3f; #FIXED "" enterTime %SFTime; #FIXED "" exitTime %SFTime; #FIXED ""> <!ATTLIST ScalarInterpolator set_fraction %SFFloat; #FIXED "" value_changed %SFFloat; #FIXED ""> <!ATTLIST SphereSensor isActive CDATA #FIXED "" isOver CDATA #FIXED "" rotation_changed %SFRotation; #FIXED "" trackPoint_changed %SFVec3f; #FIXED ""> <!ATTLIST StringSensor isActive CDATA #FIXED "" enteredText %SFString; #FIXED "" finalText %SFString; #FIXED ""> <!ATTLIST TextureBackground set_bind CDATA #FIXED "" bindTime %SFTime; #FIXED "" isBound CDATA #FIXED ""> <!ATTLIST TimeSensor elapsedTime %SFTime; #FIXED "" cycleTime %SFTime; #FIXED "" fraction_changed %SFFloat; #FIXED "" isActive CDATA #FIXED "" isPaused CDATA #FIXED "" time %SFTime; #FIXED ""> <!ATTLIST TimeTrigger set_boolean CDATA #FIXED "" triggerTime %SFTime; #FIXED ""> <!ATTLIST TouchSensor hitNormal_changed %SFVec3f; #FIXED "" hitPoint_changed %SFVec3f; #FIXED "" hitTexCoord_changed %SFVec2f; #FIXED "" isActive CDATA #FIXED "" isOver CDATA #FIXED "" touchTime %SFTime; #FIXED ""> <!ATTLIST Viewpoint set_bind CDATA #FIXED "" bindTime %SFTime; #FIXED "" isBound CDATA #FIXED ""> <!ATTLIST VisibilitySensor enterTime %SFTime; #FIXED "" exitTime %SFTime; #FIXED "" isActive CDATA #FIXED ""> <!ATTLIST EspduTransform isStandAlone CDATA #FIXED "" isNetworkReader CDATA #FIXED "" isNetworkWriter CDATA #FIXED "" isRtpHeaderHeard CDATA #FIXED "" isActive CDATA #FIXED "" timestamp %SFTime; #FIXED "" set_articulationParameterValue0 %SFFloat; #FIXED "" set_articulationParameterValue1 %SFFloat; #FIXED "" set_articulationParameterValue2 %SFFloat; #FIXED "" set_articulationParameterValue3 %SFFloat; #FIXED "" set_articulationParameterValue4 %SFFloat; #FIXED "" set_articulationParameterValue5 %SFFloat; #FIXED "" set_articulationParameterValue6 %SFFloat; #FIXED "" set_articulationParameterValue7 %SFFloat; #FIXED "" articulationParameterValue0_changed %SFFloat; #FIXED "" articulationParameterValue1_changed %SFFloat; #FIXED "" articulationParameterValue2_changed %SFFloat; #FIXED "" articulationParameterValue3_changed %SFFloat; #FIXED "" articulationParameterValue4_changed %SFFloat; #FIXED "" articulationParameterValue5_changed %SFFloat; #FIXED "" articulationParameterValue6_changed %SFFloat; #FIXED "" articulationParameterValue7_changed %SFFloat; #FIXED "" isCollided CDATA #FIXED "" collideTime %SFTime; #FIXED "" isDetonated CDATA #FIXED "" detonateTime %SFTime; #FIXED "" firedTime %SFTime; #FIXED "" geoCoords_changed %SFVec3d; #FIXED "" > <!ATTLIST ReceiverPdu isStandAlone CDATA #FIXED "" isNetworkReader CDATA #FIXED "" isNetworkWriter CDATA #FIXED "" isRtpHeaderHeard CDATA #FIXED "" isActive CDATA #FIXED "" timestamp %SFTime; #FIXED "" > <!ATTLIST SignalPdu isStandAlone CDATA #FIXED "" isNetworkReader CDATA #FIXED "" isNetworkWriter CDATA #FIXED "" isRtpHeaderHeard CDATA #FIXED "" isActive CDATA #FIXED "" timestamp %SFTime; #FIXED "" > <!ATTLIST TransmitterPdu isStandAlone CDATA #FIXED "" isNetworkReader CDATA #FIXED "" isNetworkWriter CDATA #FIXED "" isRtpHeaderHeard CDATA #FIXED "" isActive CDATA #FIXED "" timestamp %SFTime; #FIXED "" > <!ATTLIST GeoElevationGrid set_height %MFFloat; #FIXED ""> <!ATTLIST GeoPositionInterpolator set_fraction %SFFloat; #FIXED "" value_changed %SFVec3f; #FIXED "" geovalue_changed %SFVec3d; #FIXED ""> <!ATTLIST GeoTouchSensor isActive CDATA #FIXED "" isOver CDATA #FIXED "" touchTime %SFTime; #FIXED "" hitGeoCoord_changed %SFVec3d; #FIXED "" hitNormal_changed %SFVec3f; #FIXED "" hitPoint_changed %SFVec3f; #FIXED "" hitTexCoord_changed %SFVec2f; #FIXED ""> <!ATTLIST GeoViewpoint set_bind CDATA #FIXED "" set_orientation %SFRotation; #FIXED "" set_position %SFVec3d; #FIXED "" bindTime %SFTime; #FIXED "" isBound CDATA #FIXED ""> <!ATTLIST NurbsOrientationInterpolator set_fraction %SFFloat; #FIXED "" value_changed %SFRotation; #FIXED ""> <!ATTLIST NurbsPositionInterpolator set_fraction %SFFloat; #FIXED "" value_changed %SFVec3f; #FIXED ""> <!ATTLIST NurbsSurfaceInterpolator set_fraction %SFVec2f; #FIXED "" normal_changed %SFVec3f; #FIXED "" position_changed %SFVec3f; #FIXED "">
The public X3D DTD extension will be used to contain approved extensions that have not yet been included in Part 1 of ISO/IEC 19775. The form of the public X3D DTD extension is depicted below:
<!-- # # X3D Web3D Extensions Public DTD: # # http://www.web3d.org/specifications/x3d-3.0-Web3dExtensionsPublic.dtd # # current version: 3.0.2 # # revised: 16 September 2004 # # Purpose: support Web3D Consortium extensions to the X3D tagset. # The primary Extensible 3D (X3D) Document Type Definition (DTD) # is augmented by node definitions in x3d-3.0-Web3dExtensionsPublic.dtd # and x3d-3.0-Web3dExtensionsPrivate.dtd # # 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-Web3dExtensionsPublic.dtd # http://www.web3d.org/specifications/x3d-3.0-Web3dExtensionsPrivate.dtd # # Web3D extensions update URL: # http://www.web3d.org/x3d/content/x3d-3.0-Web3dExtensionsPublic.dtd # # changelog: # http://www.web3d.org/specifications/x3d-dtd-changelog.txt # --> <!-- ================================================================= --> <!-- Enter ELEMENT and ATTLIST definitions here --> <!-- ================================================================= -->
The private X3D DTD extension will be used to contain X3D extensions that have not been approved but may exist for testing future development. The form of the private X3D DTD extension is depicted below:
<!-- # # X3D Web3D Extensions Private DTD: # # http://www.web3d.org/specifications/x3d-3.0-Web3dExtensionsPrivate.dtd # # current version: 3.0.2 # # revised: 16 September 2004 # # Purpose: support Web3D Consortium extensions to the X3D tagset. # The primary Extensible 3D (X3D) Document Type Definition (DTD) # is augmented by node definitions in x3d-3.0-Web3dExtensionsPublic.dtd # and x3d-3.0-Web3dExtensionsPrivate.dtd # # 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-Web3dExtensionsPublic.dtd # http://www.web3d.org/specifications/x3d-3.0-Web3dExtensionsPrivate.dtd # # Web3D extensions update URL: # http://www.web3d.org/x3d/content/x3d-3.0-Web3dExtensionsPublic.dtd # # changelog: # http://www.web3d.org/specifications/x3d-dtd-changelog.txt # --> <!-- ================================================================= --> <!-- Enter ELEMENT and ATTLIST definitions here --> <!-- ================================================================= -->