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