Extensible 3D (X3D) encodings
Part 1: Extensible Markup Language (XML) encoding
Annex B
(informative)
XML Document Type Definition (DTD) for X3D
This annex provides a detailed description of the grammar for each syntactic element in this part of ISO/IEC 14772. Table B.1 contains a table of contents that lists the topics in this clause:
|
B.1 Table of contents and introduction B.1.1 Table of contents B.1.2 Introduction |
B.2 x3d-3.0.dtd B.3 x3d-3.0-InputOutputFields.dtd |
An XML Document Type Definition (DTD) defines syntax of an XML tagset [XML] using a grammar first derived as part of the Standard Generalized Markup Language [WEBSGML].
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 SpecificationDTD:
#
# http://www.web3D.org/specifications/x3d-3.0.dtd
#
# current version: 3.0.3
#
# revised: 13 January 2003
#
# 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
#
# changelog:
# http://www.web3d.org/TaskGroups/x3d/translation/x3d-dtd-changelog.txt
#
# X3D editor testing this DTD:
# http://www.web3d.org/TaskGroups/x3d/translation/README.X3D-Edit.html
#
# DTD version plans:
# - initial well-defined DTD 0.5
# - all nodes available in test scene and checked in DTD 0.6
# - Xeena able to present translated X3D scene using DTD 0.7
# - DTD compliance exercised by NIST's VRML & XML test suites 0.8
# - pre-SIGGRAPH 2002 change series 0.8.x
# - post-SIGGRAPH 2002 change series 0.9.x
# - matching X3D abstract specification, consolidation of parts, and 3.0
# to include rename and possibly several profile-customized DTDs
# - approval by task group, community, Web3D Consortium 3.0
#
# Further information on the Extensible 3D (X3D) specification is available at
# http://www.web3D.org/x3d.html
-->
<!-- Profile: authors can override these default IGNORE/INCLUDE values.
If InterchangeProfile is INCLUDEd, all other profiles must be IGNOREd.
Note InterchangeProfile enforces strict compliance with Core capabilities. -->
<!ENTITY % ImmersiveProfile "INCLUDE">
<!ENTITY % InterchangeProfile "IGNORE"> <!-- if InterchangeProfile INCLUDE, then IGNORE all others -->
<!ENTITY % InteractiveProfile "IGNORE"> <!-- still needed... -->
<!-- consider changing default from Full profile to Immersive profile,
which would turn the following 5 component flags to IGNORE -->
<!ENTITY % DISComponent "INCLUDE">
<!ENTITY % GeoSpatialComponent "INCLUDE">
<!ENTITY % HAnimComponent "INCLUDE">
<!ENTITY % NurbsComponent "INCLUDE">
<!ENTITY % LatticeXvlComponent "INCLUDE">
<!ENTITY % X3dInputOutputFields "INCLUDE">
<!ENTITY % X3dExtensions "IGNORE">
<!ENTITY % profileNames "(Core|Interchange|Interactive|Immersive|MPEG4|Full)" >
<!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 " >
<!ENTITY % SFBool "(true|false)"> <!-- Boolean -->
<!ENTITY % MFBool "CDATA"> <!-- Booleans -->
<!ENTITY % SFColor "CDATA"> <!-- Color -->
<!ENTITY % MFColor "CDATA"> <!-- Colors -->
<!ENTITY % SFColorRGBA "CDATA"> <!-- ColorRGBA -->
<!ENTITY % MFColorRGBA "CDATA"> <!-- ColorsRGBA -->
<!ENTITY % SFFloat "CDATA"> <!-- Float -->
<!ENTITY % MFFloat "CDATA"> <!-- Floats -->
<!ENTITY % SFDouble "CDATA"> <!-- Double -->
<!ENTITY % MFDouble "CDATA"> <!-- Doubles -->
<!ENTITY % SFImage "CDATA"> <!-- Image data -->
<!ENTITY % MFImage "CDATA"> <!-- Image array-->
<!ENTITY % SFInt32 "CDATA"> <!-- Integer -->
<!ENTITY % MFInt32 "CDATA"> <!-- Integers -->
<!ENTITY % SFNode "#PCDATA"> <!-- Node - handled by tag rules -->
<!ENTITY % MFNode "#PCDATA"> <!-- Nodes - handled by tag rules -->
<!ENTITY % SFRotation "CDATA"> <!-- Rotation -->
<!ENTITY % MFRotation "CDATA"> <!-- Rotations -->
<!ENTITY % SFString "CDATA"> <!-- String -->
<!ENTITY % MFString "CDATA"> <!-- Strings -->
<!ENTITY % SFTime "CDATA"> <!-- Time -->
<!ENTITY % MFTime "CDATA"> <!-- Times -->
<!ENTITY % SFVec2f "CDATA"> <!-- Vector2Float -->
<!ENTITY % MFVec2f "CDATA"> <!-- Vector2FloatArray -->
<!ENTITY % SFVec3f "CDATA"> <!-- Vector3Float -->
<!ENTITY % MFVec3f "CDATA"> <!-- Vector3FloatArray -->
<!ENTITY % SFVec3d "CDATA"> <!-- Vector3Double -->
<!ENTITY % MFVec3d "CDATA"> <!-- Vector3DoubleArray -->
<!-- MultiTexture modePrefix and modeSuffix will likely get different names -->
<!ENTITY % MultiTextureModes "(MODULATE|REPLACE|MODULATE2X|MODULATE4X|ADD|ADDSIGNED|ADDSIGNED2X|SUBTRACT|ADDSMOOTH|BLENDDIFFUSEALPHA|BLENDTEXTUREALPHA|BLENDFACTORALPHA|BLENDCURRENTALPHA|MODULATEALPHA_ADDCOLOR|MODULATEINVALPHA_ADDCOLOR|MODULATEINVCOLOR_ADDALPHA|OFF|SELECTARG1|SELECTARG2|DOTPRODUCT3)" >
<!ENTITY % MultiTextureSourceValues "(PREVIOUS|DIFFUSE|SPECULAR|FACTOR)" >
<!ENTITY % MultiTextureFunctionValues "(NONE|COMPLEMENT|ALPHAREPLICATE)" >
<!ENTITY % TextureCoordinateGeneratorModes "(SPHERE|CAMERASPACENORMAL|CAMERASPACEPOSITION|CAMERASPACEREFLECTIONVECTOR|SPHERE-LOCAL|COORD|COORD-EYE|NOISE|NOISE-EYE|SPHERE-REFLECT|SPHERE-REFLECT-LOCAL)" >
<!-- User needs to append | after 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 % 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 " " > <!-- USE -->
]]>
<![%DISComponent;[
<!ENTITY % DISGroupingNodes " EspduTransform | SignalPdu | ReceiverPdu | TransmitterPdu | " >
]]>
<![%GeoSpatialComponent;[
<!ENTITY % GeoCoordinateNode " GeoCoordinate | " >
<!ENTITY % GeoElevationGridNode " GeoElevationGrid | " >
<!ENTITY % GeoGroupingNodes " GeoInline | 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 | CoordinateDeformer | NurbsGroup | NurbsTextureSurface | " >
<!ENTITY % NurbsGeometryNodes " NurbsCurve | NurbsCurve2D | NurbsSurface | ContourPolyline2D | TrimmedSurface | " >
<!ENTITY % NurbsInterpolators " NurbsPositionInterpolator | " >
]]>
<![%LatticeXvlComponent;[
<!ENTITY % LatticeXvlGeometryNodes " XvlShell | " >
]]>
<!-- otherwise set tag lists to null strings if not previously defined by DIS, GeoSpatial, HAnim, LatticeXvl, Nurbs -->
<!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 % LatticeXvlGroupingNodes "" >
<!ENTITY % LatticeXvlGeometryNodes "" >
<!-- 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 "" >
]]>
<!ENTITY % UrlNodes " %UrlNodeExtensions; Anchor | AudioClip | GeoInline | 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 " >
<!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 " >
<!ENTITY % GeometryNodes " IndexedFaceSet | IndexedLineSet | 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 " >
]]>
<![%ImmersiveProfile;[
<!ENTITY % Geometry2DNodes " Arc2D | ArcClose2D | Circle2D | Disk2D | Polyline2D | Polypoint2D | Rectangle2D | TriangleSet2D " >
<!ENTITY % GeometryNodes " %GeometryNodeExtensions; %GeometryNodesX3dExtensions; %GeoElevationGridNode; %NurbsGeometryNodes; %LatticeXvlGeometryNodes; %Geometry2DNodes; | Box | Cone | Cylinder | ElevationGrid | Extrusion | IndexedFaceSet | IndexedLineSet | PointSet | Sphere | Text | TriangleFanSet | TriangleSet | TriangleStripSet " >
<!ENTITY % GroupingNodes " %GroupingNodeExtensions; %DISGroupingNodes; %GeoGroupingNodes; %HAnimGroupingNodes; %NurbsGroupingNodes; %LatticeXvlGroupingNodes; 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 " >
]]>
<!-- These VRML 97 specification terms relate to an object hierarchy of nodes.
For details, see VRML 97 4.6.5 Grouping and children nodes
http://www.web3D.org/technicalinfo/specifications/vrml97/part1/concepts.html#4.6.5 -->
<![%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 % ProtoNodes " %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|CoordinateInterpolator|Cylinder|CylinderSensor|DirectionalLight|ElevationGrid|Extrusion|FillProperties|Fog|FontStyle|Group|head|ImageTexture|IndexedFaceSet|IndexedLineSet|Inline|IntegerSequencer|IntegerTrigger|KeySensor|LineProperties|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|GeoInline|GeoLocation|GeoLOD|GeoMetadata|GeoOrigin|GeoPositionInterpolator|GeoTouchSensor|GeoViewpoint " >
<!ENTITY % AllHAnimTags " HAnimDisplacer|HAnimHumanoid|HAnimJoint|HAnimSegment|HAnimSite " >
<!-- Not used (yet, anyway) in tagset 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 " >
<!-- External DTDs now integrated. -->
<!-- ****************************** X3D DTD ****************************** -->
<![%ImmersiveProfile;[
<!-- isOver, touchTime added to Anchor to match multiple interface with TouchSensorNodeType -->
<!ELEMENT Anchor (IS?, ( %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 ( %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?,
( (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
( ((%MaterialNodes;), (%TextureNodes;)? )
| ((%TextureNodes;), (%MaterialNodes;)? )
)? >
]]>
<!ATTLIST Appearance
containerField NMTOKEN "appearance"
class CDATA #IMPLIED
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<![%ImmersiveProfile;[
<!ELEMENT AudioClip (IS?) >
<!ATTLIST AudioClip
description %SFString; #IMPLIED
loop %SFBool; "false"
pitch %SFFloat; "1.0"
startTime %SFTime; "0"
stopTime %SFTime; "0"
url %MFString; #IMPLIED
containerField NMTOKEN "source"
class CDATA #IMPLIED
DEF ID #IMPLIED
USE IDREF #IMPLIED>
]]>
<!ELEMENT Background (IS?)>
<!ATTLIST Background
groundAngle %MFFloat; #IMPLIED
groundColor %MFColor; "0 0 0"
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?, ( %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?) >
<!ATTLIST BooleanFilter
containerField NMTOKEN "children"
class CDATA #IMPLIED
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<!ELEMENT BooleanSequencer (IS?) >
<!ATTLIST BooleanSequencer
key %MFFloat; #IMPLIED
keyValue %MFFloat; #IMPLIED
containerField NMTOKEN "children"
class CDATA #IMPLIED
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<!ELEMENT BooleanToggle (IS?) >
<!ATTLIST BooleanToggle
toggle %SFBool; "false"
containerField NMTOKEN "children"
class CDATA #IMPLIED
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<!ELEMENT BooleanTrigger (IS?) >
<!ATTLIST BooleanTrigger
containerField NMTOKEN "children"
class CDATA #IMPLIED
DEF ID #IMPLIED
USE IDREF #IMPLIED>
]]>
<![%ImmersiveProfile;[
<!-- Geometry2D nodes -->
<!ELEMENT Arc2D (IS?)>
<!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?)>
<!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?)>
<!ATTLIST Circle2D
radius %SFFloat; "1"
containerField NMTOKEN "geometry"
class CDATA #IMPLIED
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<!ELEMENT Disk2D (IS?)>
<!ATTLIST Disk2D
innerRadius %SFFloat; "0"
outerRadius %SFFloat; "1"
containerField NMTOKEN "geometry"
class CDATA #IMPLIED
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<!ELEMENT Polyline2D (IS?)>
<!ATTLIST Polyline2D
lineSegments %MFVec2f; #IMPLIED
containerField NMTOKEN "geometry"
class CDATA #IMPLIED
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<!ELEMENT Polypoint2D (IS?)>
<!ATTLIST Polypoint2D
points %MFVec2f; #IMPLIED
containerField NMTOKEN "geometry"
class CDATA #IMPLIED
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<!ELEMENT Rectangle2D (IS?)>
<!ATTLIST Rectangle2D
isFilled %SFBool; "true"
size %SFVec2f; "2 2"
containerField NMTOKEN "geometry"
class CDATA #IMPLIED
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<!ELEMENT TriangleSet2D (IS?)>
<!ATTLIST TriangleSet2D
vertices %MFVec2f; #IMPLIED
containerField NMTOKEN "geometry"
class CDATA #IMPLIED
DEF ID #IMPLIED
USE IDREF #IMPLIED>
]]>
<![%ImmersiveProfile;[
<!ELEMENT Box (IS?)>
<!ATTLIST Box
size %SFVec3f; "2 2 2"
containerField NMTOKEN "geometry"
class CDATA #IMPLIED
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<!-- <!ELEMENT proxy ( %GroupingNodes; | Shape | %WildcardNodes; )? > -->
<!-- <!ELEMENT Collision ( ( %ChildrenNodes; | %WildcardNodes; )*, (proxy, ( %ChildrenNodes; | %WildcardNodes; )* )? ) > -->
<!ELEMENT Collision ( ( %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?) >
<!ATTLIST Color
color %MFColor; #IMPLIED
class CDATA #IMPLIED
containerField NMTOKEN "color"
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<!ELEMENT ColorRGBA (IS?) >
<!ATTLIST ColorRGBA
color %MFColorRGBA; #IMPLIED
containerField NMTOKEN "color"
class CDATA #IMPLIED
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<![%ImmersiveProfile;[
<!ELEMENT ColorInterpolator (IS?)>
<!ATTLIST ColorInterpolator
key %MFFloat; #IMPLIED
keyValue %MFColor; #IMPLIED
containerField NMTOKEN "children"
class CDATA #IMPLIED
DEF ID #IMPLIED
USE IDREF #IMPLIED>
]]>
<!-- component(s) can extend an X3D profile, and may include choice of component level.
still under discussion and development. -->
<!ELEMENT component EMPTY>
<!ATTLIST component
name NMTOKEN #REQUIRED
level CDATA "1"
originator CDATA #IMPLIED
url CDATA #IMPLIED
version CDATA #IMPLIED
>
<![%ImmersiveProfile;[
<!ELEMENT Cone (IS?)>
<!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?) >
<!ATTLIST Coordinate
point %MFVec3f; #IMPLIED
containerField NMTOKEN "coord"
class CDATA #IMPLIED
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<!ELEMENT CoordinateInterpolator (IS?)>
<!ATTLIST CoordinateInterpolator
key %MFFloat; #IMPLIED
keyValue %MFVec3f; #IMPLIED
containerField NMTOKEN "children"
class CDATA #IMPLIED
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<![%ImmersiveProfile;[
<!ELEMENT CoordinateInterpolator2D (IS?) >
<!ATTLIST CoordinateInterpolator2D
key %MFFloat; #IMPLIED
keyValue %MFVec2f; #IMPLIED
containerField NMTOKEN "children"
class CDATA #IMPLIED
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<!ELEMENT Cylinder (IS?)>
<!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?)>
<!ATTLIST CylinderSensor
description %SFString; #IMPLIED
autoOffset %SFBool; "true"
diskAngle %SFFloat; "0.262"
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?)>
<!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 EMPTY>
<!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?, (
((%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?) >
<!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?) >
<!ATTLIST FillProperties
fillStyle (NONE|HATCHED) "NONE"
hatchStyle %SFInt32; "1"
hatchColor %SFColor; "1 1 1"
containerField NMTOKEN "fillProperties"
class CDATA #IMPLIED
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<!ELEMENT Fog (IS?) >
<!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?) >
<!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?, ( %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 head ( component*, meta* ) >
<!ELEMENT ImageTexture (IS?) >
<!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?, (
((%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; >
<!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>
<!ELEMENT IndexedLineSet (IS?, (
( (%ColorNodes;), ((%CoordinateNodes;) | %WildcardNodes;)? ) |
( (%CoordinateNodes;), ((%ColorNodes;) | %WildcardNodes;)? ) |
( %WildcardNodes;, ((%ColorNodes;) | (%CoordinateNodes;) | %WildcardNodes;)?)
)? ) >
]]>
<![%InterchangeProfile;[
<!ELEMENT IndexedFaceSet ( ((%ColorNodes;), Coordinate?) | (Coordinate, (%ColorNodes;)?) )? >
<!ATTLIST IndexedFaceSet
ccw %SFBool; "true"
colorIndex %MFInt32; #IMPLIED
colorPerVertex %SFBool; "true"
convex %SFBool; #IMPLIED
coordIndex %MFInt32; #IMPLIED
creaseAngle %SFFloat; "0"
solid %SFBool; "true"
containerField NMTOKEN "geometry"
class CDATA #IMPLIED
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<!ELEMENT IndexedLineSet ( ( Color, Coordinate? ) | ( Coordinate, Color?) )? >
]]>
<!ATTLIST IndexedLineSet
colorIndex %MFInt32; #IMPLIED
colorPerVertex %SFBool; "true"
coordIndex %MFInt32; #IMPLIED
containerField NMTOKEN "geometry"
class CDATA #IMPLIED
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<!ELEMENT Inline (IS?) >
<!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
exportedDEF NMTOKEN #REQUIRED
AS ID #IMPLIED>
<![%ImmersiveProfile;[
<!ELEMENT IntegerSequencer (IS?) >
<!ATTLIST IntegerSequencer
key %MFFloat; #IMPLIED
keyValue %MFFloat; #IMPLIED
containerField NMTOKEN "children"
class CDATA #IMPLIED
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<!ELEMENT IntegerTrigger (IS?) >
<!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?) >
<!ATTLIST KeySensor
enabled %SFBool; "true"
containerField NMTOKEN "children"
class CDATA #IMPLIED
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<![%ImmersiveProfile;[
<!ELEMENT LineProperties (IS?) >
<!ATTLIST LineProperties
lineStyle %SFInt32; "0"
lineWidthScaleFactor %SFFloat; "0"
containerField NMTOKEN "lineProperties"
class CDATA #IMPLIED
DEF ID #IMPLIED
USE IDREF #IMPLIED>
]]>
<!ELEMENT LoadSensor (IS?, ( %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?, ( %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?) >
<!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 EMPTY >
<!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, should convert
to external declaration when tools are robust *** -->
<!-- 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"
>
<!-- 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;
>
<!-- FAQ: MovieTexture containerField='source' when used as a Sound source -->
<![%ImmersiveProfile;[
<!ELEMENT MovieTexture (IS?) >
<!ATTLIST MovieTexture
loop %SFBool; "false"
speed %SFFloat; "1.0"
startTime %SFTime; "0"
stopTime %SFTime; "0"
url %MFString; #IMPLIED
repeatS %SFBool; "true"
repeatT %SFBool; "true"
containerField NMTOKEN "texture"
class CDATA #IMPLIED
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<!ELEMENT MultiTexture ( (IS?), (
((%MultiTextureChildTextures;)+, (%TextureTransformNodes;)* )
| ((%TextureTransformNodes;)+, (%MultiTextureChildTextures;)* )
)? ) >
<!ATTLIST MultiTexture
materialColor %SFBool; "false"
materialAlpha %SFBool; "false"
transparent %SFBool; "false"
noMipMap %SFBool; "false"
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?), (TextureCoordinate | TextureCoordinateGenerator)* ) >
<!ATTLIST MultiTextureCoordinate
containerField NMTOKEN "texCoord"
class CDATA #IMPLIED
DEF ID #IMPLIED
USE IDREF #IMPLIED>
]]>
<!ELEMENT NavigationInfo (IS?) >
<!ATTLIST NavigationInfo
avatarSize %MFFloat; "0.25 1.6 0.75"
headlight %SFBool; "true"
speed %SFFloat; "1"
type %MFString; "WALK ANY"
visibilityLimit %SFFloat; "0"
containerField NMTOKEN "children"
class CDATA #IMPLIED
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<![%ImmersiveProfile;[
<!ELEMENT Normal (IS?) >
<!ATTLIST Normal
vector %MFVec3f; #IMPLIED
containerField NMTOKEN "normal"
class CDATA #IMPLIED
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<!ELEMENT NormalInterpolator (IS?) >
<!ATTLIST NormalInterpolator
key %MFFloat; #IMPLIED
keyValue %MFVec3f; #IMPLIED
containerField NMTOKEN "children"
class CDATA #IMPLIED
DEF ID #IMPLIED
USE IDREF #IMPLIED>
]]>
<!ELEMENT OrientationInterpolator (IS?) >
<!ATTLIST OrientationInterpolator
key %MFFloat; #IMPLIED
keyValue %MFRotation; #IMPLIED
containerField NMTOKEN "children"
class CDATA #IMPLIED
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<![%ImmersiveProfile;[
<!ELEMENT PixelTexture (IS?) >
<!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?) >
<!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?) >
<!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?, (
( (%ColorNodes;), ((%CoordinateNodes;) | %WildcardNodes;)? ) |
( (%CoordinateNodes;), ((%ColorNodes;) | %WildcardNodes;)? ) |
( %WildcardNodes;, ((%ColorNodes;) | (%CoordinateNodes;) | %WildcardNodes;)?)
)? ) >
]]>
<![%InterchangeProfile;[
<!ELEMENT PointSet ( ( Color, Coordinate? ) | ( Coordinate, Color? ) )? >
]]>
<!ATTLIST PointSet
containerField NMTOKEN "geometry"
class CDATA #IMPLIED
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<!ELEMENT PositionInterpolator (IS?) >
<!ATTLIST PositionInterpolator
key %MFFloat; #IMPLIED
keyValue %MFVec3f; #IMPLIED
containerField NMTOKEN "children"
class CDATA #IMPLIED
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<![%ImmersiveProfile;[
<!ELEMENT PositionInterpolator2D (IS?) >
<!ATTLIST PositionInterpolator2D
key %MFFloat; #IMPLIED
keyValue %MFVec2f; #IMPLIED
containerField NMTOKEN "children"
class CDATA #IMPLIED
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<!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; -->
<!ATTLIST ProtoInstance
name NMTOKEN #REQUIRED
containerField NMTOKEN "children"
class CDATA #IMPLIED
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<!ELEMENT ProximitySensor (IS?) >
<!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?) >
<!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 )* >
<!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?, (
( (%AppearanceNodes;), (( %GeometryNodes; ) | %WildcardNodes;)? ) |
( ( %GeometryNodes; ), ((%AppearanceNodes;) | %WildcardNodes;)? ) |
( %WildcardNodes;, (( %GeometryNodes; ) | (%AppearanceNodes;) | %WildcardNodes;)? )
)? ) >
]]>
<![%InterchangeProfile;[
<!ELEMENT Shape (
( (%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?, ( %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?) >
<!ATTLIST Sphere
radius %SFFloat; "1"
containerField NMTOKEN "geometry"
class CDATA #IMPLIED
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<!ELEMENT SphereSensor (IS?) >
<!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?) >
<!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?, ( %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?) >
<!ATTLIST StringSensor
enabled %SFBool; "true"
deletionAllowed %SFBool; "true"
containerField NMTOKEN "children"
class CDATA #IMPLIED
DEF ID #IMPLIED
USE IDREF #IMPLIED>
]]>
<!ELEMENT Switch (IS?, ( %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?, ( (%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?, (%TextureNodes;)* )>
<!ATTLIST TextureBackground
groundAngle %MFFloat; #IMPLIED
groundColor %MFColor; "0 0 0"
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?) >
<!ATTLIST TextureCoordinate
point %MFVec2f; #IMPLIED
containerField NMTOKEN "texCoord"
class CDATA #IMPLIED
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<!ELEMENT TimeSensor (IS?) >
<!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 TextureCoordinateGenerator (IS?) >
<!ATTLIST TextureCoordinateGenerator
mode %TextureCoordinateGeneratorModes; "SPHERE"
parameter %MFFloat; #IMPLIED
containerField NMTOKEN "texCoord"
class CDATA #IMPLIED
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<!ELEMENT TextureTransform (IS?) >
<!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>
]]>
<![%ImmersiveProfile;[
<!ELEMENT TimeTrigger (IS?) >
<!ATTLIST TimeTrigger
containerField NMTOKEN "children"
class CDATA #IMPLIED
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<!ELEMENT TouchSensor (IS?) >
<!ATTLIST TouchSensor
description %SFString; #IMPLIED
enabled %SFBool; "true"
containerField NMTOKEN "children"
class CDATA #IMPLIED
DEF ID #IMPLIED
USE IDREF #IMPLIED>
]]>
<!ELEMENT Transform (IS?, ( %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 Interchange profile -->
<!ELEMENT TriangleFanSet %ColorCoordinateNormalTextureCoordinateContentModel; >
<!ATTLIST TriangleFanSet
ccw %SFBool; "true"
colorPerVertex %SFBool; "true"
creaseAngle %SFFloat; "0"
fanCount %MFInt32; #IMPLIED
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"
creaseAngle %SFFloat; "0"
normalPerVertex %SFBool; "true"
solid %SFBool; "true"
containerField NMTOKEN "geometry"
class CDATA #IMPLIED
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<!ELEMENT TriangleStripSet %ColorCoordinateNormalTextureCoordinateContentModel; >
<!ATTLIST TriangleStripSet
ccw %SFBool; "true"
colorPerVertex %SFBool; "true"
creaseAngle %SFFloat; "0"
normalPerVertex %SFBool; "true"
solid %SFBool; "true"
stripCount %MFInt32; #IMPLIED
containerField NMTOKEN "geometry"
class CDATA #IMPLIED
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<!ELEMENT Viewpoint (IS?) >
<!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?) >
<!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?) >
<!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
profile %profileNames; #IMPLIED
version %SFString; #FIXED "3.0">
<![%DISComponent;[
<!--
DIS-Java-VRML 1.2 Document Type Definition (DTD)
Description: Define the DIS tag and attribute profile for X3D.
These X3D native nodes correspond to VRML ExternProto declarations.
Elements in this tagset are enabled by setting the
DIS-Java-VRMLProfile entity to "INCLUDE" at the top of an
X3D scene file, as shown in several examples. This flag then
triggers inclusion of the DIS-Java-VRML tags in the
x3d-3.0.dtd tagset.
Status: Supports the following Protocol Data Units (PDUs):
- EspduTransform (Entity State, Collision, Detonation, Fire)
- Radio communications family: ReceiverPdu, SignalPdu, Transmitter
Testing results need updating to match new node signatures.
Authors: Don Brutzman and Dave Laflam
References: http://www.web3D.org/WorkingGroups/vrtp/dis-java-vrml
Created: 15 October 2000
-->
<!ELEMENT EspduTransform (IS?, ( %ChildrenNodes; | %WildcardNodes; )* ) >
<!ATTLIST EspduTransform
marking %SFString; #IMPLIED
siteID %SFInt32; #IMPLIED
applicationID %SFInt32; #IMPLIED
entityID %SFInt32; #IMPLIED
forceID %SFInt32; #IMPLIED
entityKind %SFInt32; #IMPLIED
entityDomain %SFInt32; #IMPLIED
entityCountry %SFInt32; #IMPLIED
entityCategory %SFInt32; #IMPLIED
entitySubCategory %SFInt32; #IMPLIED
entitySpecific %SFInt32; #IMPLIED
entityExtra %SFInt32; #IMPLIED
readInterval %SFTime; "0.1"
writeInterval %SFTime; "1"
networkMode (standAlone|networkReader|networkWriter) "networkReader"
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; #IMPLIED
port %SFInt32; #IMPLIED
multicastRelayHost %SFString; #IMPLIED
multicastRelayPort %SFInt32; #IMPLIED
rtpHeaderExpected %SFBool; "false"
deadReckoning %SFBool; "true"
linearVelocity %SFVec3f; #IMPLIED
linearAcceleration %SFVec3f; #IMPLIED
fired1 %SFBool; "false"
fired2 %SFBool; "false"
munitionStartPoint %SFVec3f; #IMPLIED
munitionEndPoint %SFVec3f; #IMPLIED
munitionSiteID %SFInt32; #IMPLIED
munitionApplicationID %SFInt32; #IMPLIED
munitionEntityID %SFInt32; #IMPLIED
fireMissionIndex %SFInt32; #IMPLIED
warhead %SFInt32; #IMPLIED
fuse %SFInt32; #IMPLIED
munitionQuantity %SFInt32; #IMPLIED
firingRate %SFInt32; #IMPLIED
firingRange %SFInt32; #IMPLIED
articulationParameterCount %SFInt32; #IMPLIED
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 >
<!-- also included in EspduTransform: CollisionPdu DetonatePdu FirePdu -->
<!ELEMENT ReceiverPdu (IS?) >
<!ATTLIST ReceiverPdu
whichGeometry %SFInt32; #IMPLIED
siteID %SFInt32; #IMPLIED
applicationID %SFInt32; #IMPLIED
entityID %SFInt32; #IMPLIED
readInterval %SFTime; "1"
writeInterval %SFTime; "0"
networkMode (standAlone|networkReader|networkWriter) "networkReader"
address %SFString; #IMPLIED
port %SFInt32; #IMPLIED
multicastRelayHost %SFString; #IMPLIED
multicastRelayPort %SFInt32; #IMPLIED
rtpHeaderExpected %SFBool; "false"
radioID %SFInt32; #IMPLIED
receiverPower %SFFloat; #IMPLIED
receiverState %SFInt32; #IMPLIED
transmitterSiteID %SFInt32; #IMPLIED
transmitterApplicationID %SFInt32; #IMPLIED
transmitterEntityID %SFInt32; #IMPLIED
transmitterRadioID %SFInt32; #IMPLIED
containerField NMTOKEN "children"
class CDATA ""
DEF ID #IMPLIED
USE IDREF #IMPLIED >
<!ELEMENT SignalPdu (IS?) >
<!ATTLIST SignalPdu
whichGeometry %SFInt32; #IMPLIED
siteID %SFInt32; #IMPLIED
applicationID %SFInt32; #IMPLIED
entityID %SFInt32; #IMPLIED
readInterval %SFTime; "1"
writeInterval %SFTime; "0"
networkMode (standAlone|networkReader|networkWriter) "networkReader"
address %SFString; #IMPLIED
port %SFInt32; #IMPLIED
multicastRelayHost %SFString; #IMPLIED
multicastRelayPort %SFInt32; #IMPLIED
rtpHeaderExpected %SFBool; "false"
radioID %SFInt32; #IMPLIED
encodingScheme %SFInt32; #IMPLIED
tdlType %SFInt32; #IMPLIED
sampleRate %SFInt32; #IMPLIED
samples %SFInt32; #IMPLIED
dataLength %SFInt32; #IMPLIED
data %MFInt32; #IMPLIED
containerField NMTOKEN "children"
class CDATA ""
DEF ID #IMPLIED
USE IDREF #IMPLIED >
<!ELEMENT TransmitterPdu (IS?) >
<!ATTLIST TransmitterPdu
whichGeometry %SFInt32; #IMPLIED
siteID %SFInt32; #IMPLIED
applicationID %SFInt32; #IMPLIED
entityID %SFInt32; #IMPLIED
readInterval %SFTime; "1"
writeInterval %SFTime; "0"
networkMode (standAlone|networkReader|networkWriter) "networkReader"
address %SFString; #IMPLIED
port %SFInt32; #IMPLIED
multicastRelayHost %SFString; #IMPLIED
multicastRelayPort %SFInt32; #IMPLIED
rtpHeaderExpected %SFBool; "false"
radioID %SFInt32; #IMPLIED
antennaLocation %SFVec3f; #IMPLIED
antennaPatternLength %SFInt32; #IMPLIED
antennaPatternType %SFInt32; #IMPLIED
cryptoKeyId %SFInt32; #IMPLIED
cryptoSytem %SFInt32; #IMPLIED
frequency %SFInt32; #IMPLIED
inputSource %SFInt32; #IMPLIED
lengthOfModulationParameters %SFInt32; #IMPLIED
modulationTypeDetail %SFInt32; #IMPLIED
modulationTypeMajor %SFInt32; #IMPLIED
modulationTypeSpreadSpectrum %SFInt32; #IMPLIED
modulationTypeSystem %SFInt32; #IMPLIED
power %SFInt32; #IMPLIED
radioEntityTypeCategory %SFInt32; #IMPLIED
radioEntityTypeCountry %SFInt32; #IMPLIED
radioEntityTypeDomain %SFInt32; #IMPLIED
radioEntityTypeKind %SFInt32; #IMPLIED
radioEntityTypeNomenclature %SFInt32; #IMPLIED
radioEntityTypeNomenclatureVersion %SFInt32; #IMPLIED
relativeAntennaLocation %SFVec3f; #IMPLIED
transmitFrequencyBandwidth %SFInt32; #IMPLIED
transmitState %SFInt32; #IMPLIED
containerField NMTOKEN "children"
class CDATA ""
DEF ID #IMPLIED
USE IDREF #IMPLIED >
]]>
<![%GeoSpatialComponent;[
<!--
GeoSpatial (GeoVrml 1.0) Document Type Definition (DTD)
Description: Define the GeoSpatial tag and attribute profile for X3D.
These X3D native nodes correspond to VRML ExternProto declarations.
Elements in this tagset are enabled by setting the
GeoSpatialProfile entity to "INCLUDE" at the top of an
X3D scene file, as shown in several examples such as
examples/GeoSpatial/newGeoSpatialScene.xml. This flag then
triggers inclusion of the GeoSpatial tags in the
x3d-compromise.dtd tagset. Thus the GeoSpatial.dtd
demonstrates X3D extensibility for profiles.
Status: Testing results satisfactory. Compact form also needed.
Authors: Martin Reddy and GeoVrml Working Group for GeoVrml specifications
Don Brutzman produced XML encoding for X3D
Reference: GeoVrml 1.0 Specification, http://www.geovrml.org/1.0
Address: http://www.web3D.org/TaskGroups/x3d/translation/GeoSpatial-compact.dtd
Created: 16 May 2000
Revised: 2 January 2003
-->
<!-- supported GeoSystem values: GD (GDC), UTM, GC (GCC) -->
<!ENTITY % GeoSystemType ' CDATA "GDC" ' >
<!-- field tags for contained nodes: only rootNode needed -->
<!-- GeoSpatial's rootNode depends on profile-specific parameter-entity definitions,
so it appears inside the X3D DTD rather than in GeoSpatial.dtd
-->
<!ELEMENT rootNode ( %ChildrenNodes; | %WildcardNodes; )* >
<!-- element nodes -->
<!ELEMENT GeoCoordinate ( IS?, GeoOrigin? ) > <!-- X3DCoordinateNodeType -->
<!ATTLIST GeoCoordinate
geoSystem %GeoSystemType;
point %MFVec3d; #IMPLIED
nodeType NMTOKEN #FIXED "Coordinate"
containerField NMTOKEN "coord"
class CDATA ""
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<!--
(GeoOrigin, ((color, ((normal,texCoord?) | (texCoord,normal)?)?) |
(normal,((color,texCoord?) | (texCoord,color?))?) |
(texCoord,((color,normal?) | (normal,color?))?) )? )
| (color, ( (GeoOrigin, ((normal,texCoord?) | (texCoord,normal)?)?) |
(normal,((GeoOrigin,texCoord?) | (texCoord,GeoOrigin?))?) |
(texCoord,((GeoOrigin,normal?) | (normal,GeoOrigin?))?) )? )
| (normal, ( (color, ((GeoOrigin,texCoord?) | (texCoord,GeoOrigin?))?) |
(GeoOrigin,((color,texCoord?) | (texCoord,color?))?) |
(texCoord,((color,GeoOrigin?) | (GeoOrigin,color?))?) )? )
| (texCoord, ( (color, ((GeoOrigin,normal?) | (normal,GeoOrigin?))?) |
(GeoOrigin,((color,normal?) | (normal,color?))?) |
(normal,((color,GeoOrigin?) | (GeoOrigin,color?))?) )? )?
-->
<!ELEMENT GeoElevationGrid (IS?, (
((%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 %GeoSystemType;
geoGridOrigin %SFVec3d; "0 0 0"
xDimension %SFInt32; "0"
xSpacing %SFDouble; "1.0"
yScale %SFFloat; "1.0"
zDimension %SFInt32; "0"
zSpacing %SFDouble; "1.0"
height %MFFloat; #IMPLIED
normalPerVertex %SFBool; "true"
ccw %SFBool; "true"
colorPerVertex %SFBool; "true"
creaseAngle %SFFloat; "0"
solid %SFBool; "true"
nodeType NMTOKEN #FIXED "ElevationGrid"
containerField NMTOKEN "geometry"
class CDATA ""
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<!-- Inline may contain nodes once url is loaded. -->
<!-- This permits external access - open technical issue. -->
<!-- Will be ( %SceneNodes; ) in x3d-compact.dtd form. -->
<!ELEMENT GeoInline (IS?, ( %ChildrenNodes; | %WildcardNodes; )* ) >
<!ATTLIST GeoInline
url %MFString; #IMPLIED
load %SFBool; "true"
bboxCenter %SFVec3d; "0 0 0"
bboxSize %SFVec3d; "-1 -1 -1"
nodeType NMTOKEN #FIXED "Inline"
containerField NMTOKEN "children"
class CDATA ""
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<!--
((GeoOrigin, children?) | (children, GeoOrigin?))?
-->
<!ELEMENT GeoLocation (IS?,
( %ChildrenNodes; | %WildcardNodes; )*, (GeoOrigin, ( %ChildrenNodes; | %WildcardNodes; )* )?
) >
<!ATTLIST GeoLocation
geoSystem %GeoSystemType;
geoCoords %MFVec3d; #IMPLIED
nodeType NMTOKEN #FIXED "Transform"
containerField NMTOKEN "children"
class CDATA ""
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<!--
(GeoOrigin, ((children, rootNode?) | (rootNode, children?))? ) |
(children, ((GeoOrigin, rootNode?) | (rootNode, GeoOrigin?))? ) |
(rootNode, ((children, GeoOrigin?) | (GeoOrigin, children?))? )?
-->
<!ELEMENT GeoLOD (IS?, (
( %ChildrenNodes; | %WildcardNodes; )*,
( (GeoOrigin?, ( %ChildrenNodes; | %WildcardNodes; )*, rootNode?, ( %ChildrenNodes; | %WildcardNodes; )* )? |
(rootNode, ( %ChildrenNodes; | %WildcardNodes; )*, GeoOrigin?, ( %ChildrenNodes; | %WildcardNodes; )* )? )
)? ) >
<!ATTLIST GeoLOD
geoSystem %GeoSystemType;
rootUrl %MFString; #IMPLIED
child1Url %MFString; #IMPLIED
child2Url %MFString; #IMPLIED
child3Url %MFString; #IMPLIED
child4Url %MFString; #IMPLIED
range %SFDouble; #IMPLIED
center %SFVec3d; #IMPLIED
nodeType NMTOKEN #FIXED "LOD"
containerField NMTOKEN "children"
class CDATA ""
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<!-- GeoMetadata includes proposed itemization of specified 'summary' attributes in the X3D encoding -->
<!ELEMENT GeoMetadata (IS?) >
<!ATTLIST GeoMetadata
url %MFString; #IMPLIED
data IDREFS #IMPLIED
summary %MFString; #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
nodeType NMTOKEN #FIXED "WorldInfo"
containerField NMTOKEN "children"
class CDATA ""
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<!ELEMENT GeoOrigin (IS?) >
<!ATTLIST GeoOrigin
geoSystem %GeoSystemType;
geoCoords %MFVec3d; #IMPLIED
rotateYUp %SFBool; "false"
nodeType NMTOKEN #FIXED "geoOrigin"
containerField NMTOKEN "geoOrigin"
class CDATA ""
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<!ELEMENT GeoPositionInterpolator ( IS?, GeoOrigin? ) >
<!ATTLIST GeoPositionInterpolator
geoSystem %GeoSystemType;
key %MFFloat; #IMPLIED
keyValue %MFVec3d; #IMPLIED
geoValue %SFVec3d; #IMPLIED
nodeType NMTOKEN #FIXED "PositionInterpolator"
containerField NMTOKEN "children"
class CDATA ""
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<!ELEMENT GeoTouchSensor ( IS?, GeoOrigin? ) >
<!ATTLIST GeoTouchSensor
geoSystem %GeoSystemType;
enabled %SFBool; "true"
hitNormal %SFVec3f; #IMPLIED
hitGeoCoordinate %SFVec3d; #IMPLIED
hitPoint %SFVec3f; #IMPLIED
hitTexCoord %SFVec2f; #IMPLIED
isActive %SFBool; #IMPLIED
isOver %SFBool; #IMPLIED
touchTime %SFTime; #IMPLIED
nodeType NMTOKEN #FIXED "TouchSensor"
containerField NMTOKEN "children"
class CDATA ""
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<!ELEMENT GeoViewpoint ( IS?, GeoOrigin? ) >
<!ATTLIST GeoViewpoint
geoSystem %GeoSystemType;
position %SFVec3d; "0 0 100000"
orientation %SFRotation; "0 0 1 0"
fieldOfView %SFFloat; "0.785398"
jump %SFBool; "true"
navType %MFString; #IMPLIED
headlight %SFBool; "true"
description %SFString; #IMPLIED
speed %SFFloat; "1"
examine %SFVec3f; "0 0 0"
nodeType NMTOKEN #FIXED "Viewpoint"
containerField NMTOKEN "children"
class CDATA ""
DEF ID #IMPLIED
USE IDREF #IMPLIED>
]]>
<![%HAnimComponent;[
<!--
Humanoid Animation (H-Anim) 2.0 Document Type Definition (DTD)
Description: Define the H-Anim tag and attribute profile for X3D.
These X3D native nodes correspond to VRML Prototype declarations.
Elements in this tagset are enabled by setting the
H-AnimProfile entity to "INCLUDE" at the top of an
X3D scene file, as shown in several examples such as
examples/HumanoidAnimation/NancyNativeTags.xml. This flag then
triggers inclusion of the HumanoidAnimation tags in the
x3d-compact.dtd tagset. Thus the HumanoidAnimation.dtd
demonstrates X3D extensibility for profiles.
Added bboxCenter and bboxSize to Joint and Site as part of
Schema development and SAI API normalization of node types.
Work in progress. See ongoing 2000/2001 e-mail threads for
details.
Status: Testing results in progress. Compromise form also needed.
JointNames need to be verified/split.
Authors: Don Brutzman produced XML encoding for X3D
Bernie Roehl and H-Anim Working Group for H-Anim specifications
Matt Beitler for syntax/semantics of upgrades from 1.1 to 2.0
James Smith provided BoxMan model for testing 2.0 nodes and prototypes
References: H-Anim 2001 Specification (Draft)
http://h-anim.org/Specifications/H-Anim2001
http://www.web3D.org/TaskGroups/x3d/translation/examples/HumanoidAnimation/JointNames.txt
Address: http://www.web3D.org/TaskGroups/x3d/translation/HumanoidAnimation2.0-compact.dtd
Created: 4 July 2000
Revised: 30 December 2002
-->
<!-- These need to get verified. Matt will split into JointNames, SegmentNames and SiteNames.
Note that setting as enumerations does not permit validation of other names. -->
<!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)" >
<!-- Nodes -->
<!ELEMENT HAnimDisplacer (IS?) >
<!ATTLIST HAnimDisplacer
name %SFString; #IMPLIED
coordIndex %MFInt32; #IMPLIED
displacements %MFVec3f; #IMPLIED
containerField NMTOKEN #IMPLIED
class CDATA ""
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<!-- no nodeType for Displacer since it has no similar node in VRML 97 -->
<!-- humanoidBody is H-Anim 1.1, superceded by 2.0 specification -->
<!ELEMENT humanoidBody ( %ChildrenNodes; | %WildcardNodes; )* >
<!-- skeleton, skin defined by 2.0 specification -->
<!ELEMENT skeleton ( %ChildrenNodes; | %WildcardNodes; )* >
<!ELEMENT skin ( Shape | %WildcardNodes; )* >
<!ELEMENT skinCoord ( Coordinate | %WildcardNodes; )* >
<!ELEMENT skinNormal ( Normal | %WildcardNodes; )* >
<!-- the following content model can likely be improved but it supports either 1.1 or 2.0 -->
<!ELEMENT HAnimHumanoid (IS?,
(humanoidBody? | (skeleton, (skinCoord, skinNormal?, skin)?)),
(HAnimJoint | HAnimSegment | HAnimSite | Viewpoint)* ) >
<!ATTLIST HAnimHumanoid
name %SFString; #IMPLIED
version (1.1|2.0) #IMPLIED
humanoidVersion %SFString; #IMPLIED
info %MFString; #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
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>
<!ELEMENT HAnimJoint (IS?, ( %ChildrenNodes; | %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 Displacer nodes must appear consecutively inside Segment -->
<!--
(children, ((coord, Displacer*) | (Displacer+, coord?))? ) |
(coord, ((children, Displacer*) | (Displacer+, children?))? ) |
(Displacer+, ((coord, children?) | (children, coord?))? )?
-->
<!ELEMENT HAnimSegment (IS?, (
((%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?, ( %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;[
<!--
Nurbs 1.0 Document Type Definition (DTD)
Description: Define the Nurbs tag and attribute profile for X3D.
These X3D native nodes will correspond to forthcoming
VRML ExternProto declarations.
Elements in this tagset are enabled by setting the
NurbsProfile entity to "INCLUDE" at the top of an
X3D scene file, as shown in several examples such as
examples/Nurbs/newNurbsScene.xml. This flag then
triggers inclusion of the Nurbs tags in the
x3d-compromise.dtd tagset. Thus the Nurbs.dtd
demonstrates X3D extensibility for profiles.
Status: Under development. Working node prototypes needed.
Compact form also needed (eliminate all field tags except
inputCoord and outputCoord).
Authors: blaxxun interactive proposed the Nurbs extensions,
Don Brutzman produced XML encoding of Nurbs nodes for X3D
Reference: Nurbs Extension for VRML 97 proposal
http://www.blaxxun.com/developer/contact/3d/nurbs/overview.html
http://www.blaxxun.com/support/developerguide/developer/contact/3d/nurbs/spec/nurbsproposal.html
Issues: - why isn't a complete set of prototype implementations available?
- nodeTypeHints need to be checked, proposal and examples inconsistent
- what are NurbsCurve2ILS and NurbsSurface2ILS? Utility prototypes?
(yes)
- should they be included in the DTD and extension profile?
(no, but these can be good example/prototype authoring assists)
- how is (unimplemented) NurbsTextureSurface utilized? examples?
- what is default value of NurbsCurve tessellation, 0? (yes)
- should NurbsPositionInterpolator have more fields:
fraction (is in prototype; how else to set fraction along curve)? (yes)
value (is in prototype; how else to get output)? (yes)
key (probably not, keyValues probably correspond to knots)?
dimension (probably not, but mentioned in description paragraph)?
computeTangent, tangent (seem important to add)?
Address: http://www.web3D.org/TaskGroups/x3d/translation/Nurbs.dtd
Created: 7 November 2000
Revised: 30 December 2002
-->
<!-- Field tags for contained nodes -->
<!ELEMENT inputCoord ( Coordinate? ) >
<!ELEMENT inputTransform ( Transform? ) >
<!ELEMENT outputCoord ( Coordinate? ) >
<!-- Nurbs nodes -->
<!ELEMENT Contour2D (IS?, ( %ChildrenNodes; | %WildcardNodes; )* ) >
<!ATTLIST Contour2D
bboxCenter %SFVec3f; "0 0 0"
bboxSize %SFVec3f; "-1 -1 -1"
containerField NMTOKEN "children"
class CDATA ""
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<!ELEMENT CoordinateDeformer (IS?, (
(inputCoord, ((outputCoord, ((inputTransform,( %ChildrenNodes; | %WildcardNodes; )*) | (( %ChildrenNodes; | %WildcardNodes; )*,inputTransform)?)?) |
(inputTransform,((outputCoord,( %ChildrenNodes; | %WildcardNodes; )*) | (( %ChildrenNodes; | %WildcardNodes; )*,outputCoord?))?) |
(( %ChildrenNodes; | %WildcardNodes; )*,((outputCoord,inputTransform?) | (inputTransform,outputCoord?))?) )? )
| (outputCoord, ((inputCoord, ((inputTransform,( %ChildrenNodes; | %WildcardNodes; )*) | (( %ChildrenNodes; | %WildcardNodes; )*,inputTransform)?)?) |
(inputTransform,((inputCoord,( %ChildrenNodes; | %WildcardNodes; )*) | (( %ChildrenNodes; | %WildcardNodes; )*,inputCoord?))?) |
(( %ChildrenNodes; | %WildcardNodes; )*,((inputCoord,inputTransform?) | (inputTransform,inputCoord?))?) )? )
| (inputTransform, ((outputCoord,((inputCoord,( %ChildrenNodes; | %WildcardNodes; )*) | (( %ChildrenNodes; | %WildcardNodes; )*,inputCoord?))?) |
(inputCoord,((outputCoord,( %ChildrenNodes; | %WildcardNodes; )*) | (( %ChildrenNodes; | %WildcardNodes; )*,outputCoord?))?) |
(( %ChildrenNodes; | %WildcardNodes; )*,((outputCoord,inputCoord?) | (inputCoord,outputCoord?))?) )? )
| (( %ChildrenNodes; | %WildcardNodes; )*, ( (outputCoord, ((inputCoord,inputTransform?) | (inputTransform,inputCoord?))?) |
(inputCoord,((outputCoord,inputTransform?) | (inputTransform,outputCoord?))?) |
(inputTransform,((outputCoord,inputCoord?) | (inputCoord,outputCoord?))?) )? )?
) )>
<!ATTLIST CoordinateDeformer
uDimension %SFInt32; "0"
vDimension %SFInt32; "0"
wDimension %SFInt32; "0"
uKnot %MFDouble; #IMPLIED
vKnot %MFDouble; #IMPLIED
wKnot %MFDouble; #IMPLIED
uOrder %SFInt32; "2"
vOrder %SFInt32; "2"
wOrder %SFInt32; "2"
controlPoint %MFVec3f; #IMPLIED
weight %MFFloat; #IMPLIED
bboxCenter %SFVec3f; "0 0 0"
bboxSize %SFVec3f; "-1 -1 -1"
containerField NMTOKEN "children"
class CDATA ""
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<!ELEMENT NurbsCurve (IS?) >
<!ATTLIST NurbsCurve
knot %MFDouble; #IMPLIED
order %SFInt32; "3"
controlPoint %MFVec3f; #IMPLIED
weight %MFDouble; #IMPLIED
tessellation %SFInt32; "0"
containerField NMTOKEN "geometry"
class CDATA ""
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<!ELEMENT NurbsCurve2D (IS?) >
<!ATTLIST NurbsCurve2D
knot %MFFloat; #IMPLIED
order %SFInt32; "3"
controlPoint %MFVec2f; #IMPLIED
weight %MFFloat; #IMPLIED
tessellation %SFInt32; "0"
containerField NMTOKEN "geometry"
class CDATA ""
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<!ELEMENT NurbsGroup (IS?, (%ChildrenNodes; | %WildcardNodes; )* ) >
<!ATTLIST NurbsGroup
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 NurbsPositionInterpolator (IS?) >
<!ATTLIST NurbsPositionInterpolator
knot %MFDouble; #IMPLIED
dimension %SFInt32; "0"
order %SFInt32; "3"
keyValue %MFVec3f; #IMPLIED
keyWeight %MFDouble; #IMPLIED
fractionAbsolute %SFBool; "true"
containerField NMTOKEN "children"
class CDATA ""
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<!ELEMENT NurbsSurface (IS?, ( %TextureCoordinateNodes; )? ) >
<!ATTLIST NurbsSurface
uDimension %SFInt32; "0"
vDimension %SFInt32; "0"
uKnot %MFDouble; #IMPLIED
vKnot %MFDouble; #IMPLIED
uOrder %SFInt32; "3"
vOrder %SFInt32; "3"
controlPoint %MFVec3f; #IMPLIED
weight %MFDouble; #IMPLIED
uTessellation %SFInt32; "0"
vTessellation %SFInt32; "0"
ccw %SFBool; "true"
solid %SFBool; "true"
containerField NMTOKEN "geometry"
class CDATA ""
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<!ELEMENT NurbsTextureSurface (IS?) >
<!ATTLIST NurbsTextureSurface
uDimension %SFInt32; "0"
vDimension %SFInt32; "0"
uKnot %MFDouble; #IMPLIED
vKnot %MFDouble; #IMPLIED
uOrder %SFInt32; "3"
vOrder %SFInt32; "3"
controlPoint %MFVec2f; #IMPLIED
weight %MFFloat; #IMPLIED
containerField NMTOKEN "texCoord"
class CDATA ""
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<!ELEMENT ContourPolyline2D (IS?) >
<!ATTLIST ContourPolyline2D
point %MFVec2f; #IMPLIED
containerField NMTOKEN "geometry"
class CDATA ""
DEF ID #IMPLIED
USE IDREF #IMPLIED>
<!-- single NurbsSurface, preceded or followed by Contour2D -->
<!ELEMENT TrimmedSurface (IS?, ((NurbsSurface,Contour2D*) | (Contour2D+,NurbsSurface,Contour2D*)) ) >
<!ATTLIST TrimmedSurface
containerField NMTOKEN "geometry"
class CDATA ""
DEF ID #IMPLIED
USE IDREF #IMPLIED>
]]>
<![%LatticeXvlComponent;[
<!-- LatticeXVL will likely get moved back into a separate DTD. -->
<!--
XVL 1.0 Document Type Definition (DTD)
Filename: LatticeXvl-compact.dtd
Description: Define the XVL tag and attribute profile for X3D.
This X3D native node corresponds to a VRML ExternProto
declaration.
Elements in this tagset are enabled by setting the
XvlProfile entity to "INCLUDE" at the top of an
X3D scene file, as shown in several examples such as
examples/LatticeXvl/XvlShellAll.x3d. This flag then
triggers inclusion of the XVL tags in the
x3d-compact.dtd tagset. Thus the Xvl.dtd
demonstrates X3D extensibility for profiles.
Status: In testing and preparation for February 2002 SDK CDs
Authors: Lattice Technology, Inc. proposed the Xvl extensions,
Makito Seki produced XML encoding of XVL nodes for X3D
with additional work by Marc Jablonski and Don Brutzman
Reference: LatticeXvl extension for X3D
http://www.web3d.org/TaskGroups/x3d/translation/examples/LatticeXvl/doc/proposal/LatticeProposal.html
http://www.Xvl3D.com
Issues: Mark has the list!
Address: http://www.web3D.org/TaskGroups/x3d/translation/LatticeXvl-compact.dtd
Created: 10 May 2001
Revised: 10 November 2002
-->
<!-- for future: G1T1 level -->
<!ENTITY % XvlG1T1ShellTypes "" >
<!-- Types of XVL Shells -->
<!ENTITY % XvlShell.shellTypes " %XvlG1T1ShellTypes; POLYGON_MESH | LATTICE_MESH " >
<!ELEMENT XvlShell (IS?, (
( (%TextureCoordinateNodes;), ((%CoordinateNodes;) | %WildcardNodes;) ) |
( (%CoordinateNodes;), ((%TextureCoordinateNodes;) | %WildcardNodes;)? ) |
( %WildcardNodes;, ((%TextureCoordinateNodes;) | (%CoordinateNodes;) | %WildcardNodes;)?) )?
)>
<!ATTLIST XvlShell
shellType ( %XvlShell.shellTypes; ) #IMPLIED
numberOfDivisions %SFInt32; #IMPLIED
vertexRound %MFFloat; #IMPLIED
edgeBeginCoordIndex %MFInt32; #IMPLIED
edgeEndCoordIndex %MFInt32; #IMPLIED
edgeRound %MFFloat; #IMPLIED
edgeBeginVector %MFVec3f; #IMPLIED
edgeEndVector %MFVec3f; #IMPLIED
faceCoordIndex %MFInt32; #IMPLIED
faceTexCoordIndex %MFInt32; #IMPLIED
faceEmpty %MFBool; #IMPLIED
faceHidden %MFBool; #IMPLIED
containerField NMTOKEN "geometry"
class CDATA ""
DEF ID #IMPLIED
USE IDREF #IMPLIED>
]]>
<![%X3dInputOutputFields;[
<!ENTITY % FieldsDTD SYSTEM "x3d-3.0-InputOutputFields.dtd">
%FieldsDTD;
]]>
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.
<!-- # Purpose: the 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 # # current version: 3.0.2 # # revised: 13 January 2003 # # 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/TaskGroups/x3d/translation/x3d-dtd-changelog.txt # --> <!ATTLIST AudioClip duration_changed %SFTime; #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 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 duration_changed %SFTime; #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 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 "" rtpHeaderHeard %SFBool; #IMPLIED isActive CDATA #FIXED "" timestamp %SFTime; #IMPLIED 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 %SFBool; "false" collideTime %SFTime; #IMPLIED isDetonated %SFBool; "false" detonateTime %SFTime; #IMPLIED firedTime %SFTime; #IMPLIED > <!ATTLIST ReceiverPdu isStandAlone CDATA #FIXED "" isNetworkReader CDATA #FIXED "" isNetworkWriter CDATA #FIXED "" rtpHeaderHeard %SFBool; #IMPLIED isActive CDATA #FIXED "" timestamp %SFTime; #IMPLIED > <!ATTLIST SignalPdu isStandAlone CDATA #FIXED "" isNetworkReader CDATA #FIXED "" isNetworkWriter CDATA #FIXED "" rtpHeaderHeard %SFBool; #IMPLIED isActive CDATA #FIXED "" timestamp %SFTime; #IMPLIED > <!ATTLIST TransmitterPdu isStandAlone CDATA #FIXED "" isNetworkReader CDATA #FIXED "" isNetworkWriter CDATA #FIXED "" rtpHeaderHeard %SFBool; #IMPLIED isActive CDATA #FIXED "" timestamp %SFTime; #IMPLIED > <!ATTLIST GeoPositionInterpolator set_fraction %SFFloat; #FIXED "" value_changed %SFVec3f; #FIXED "" geovalue_changed %SFVec3d; #FIXED ""> <!ATTLIST GeoViewpoint set_bind CDATA #FIXED "" set_position %SFVec3d; #FIXED "" bindTime %SFTime; #FIXED "" isBound CDATA #FIXED ""> <!ATTLIST GeoTouchSensor hitGeoCoord_changed %SFString; #FIXED ""> <!ATTLIST NurbsPositionInterpolator set_fraction %SFFloat; #FIXED "" value_changed %SFVec3f; #FIXED "">
![]()