home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 October / Chip_2001-10_cd1.bin / sharewar / htxtbldr / HB1.exe / HB10A.CAB / x3d-compromise.dtd < prev    next >
Encoding:
Text File  |  2000-12-16  |  46.6 KB  |  1,481 lines

  1. <!--
  2. # Extensible 3D (X3D) Document Type Definition (DTD) x3d-compromise.dtd
  3. #
  4. # this draft X3D DTD:
  5. #    http://www.web3D.org/TaskGroups/x3d/translation/x3d-compromise.dtd
  6. #
  7. # changelog:
  8. #    http://www.web3d.org/TaskGroups/x3d/translation/x3d-dtd-changelog.txt
  9. #
  10. # test world:
  11. #    http://www.web3D.org/TaskGroups/x3d/translation/examples/AllVrml97Nodes.wrl
  12. #    http://www.web3D.org/TaskGroups/x3d/translation/examples/AllVrml97Nodes.wrl.txt
  13. #
  14. # test translation:
  15. #    http://www.web3D.org/TaskGroups/x3d/translation/examples/AllVrml97Nodes.xml
  16. #    http://www.web3D.org/TaskGroups/x3d/translation/examples/AllVrml97Nodes.xml.txt
  17. #
  18. # editor:
  19. #    http://www.web3d.org/TaskGroups/x3d/translation/README.X3D-Edit.txt
  20. #
  21. # DTD version plans:        
  22. #    increment by .1 when each of the following is complete:
  23. #    - initial well-defined DTD                                     0.5
  24. #    - all nodes available in test scene and checked in DTD         0.6
  25. #    - Xeena able to present translated X3D scene using DTD         0.7
  26. #    - Xj3D able to translate full test scene using DTD into X3D    0.8
  27. #    - DTD compliance exercised by NIST's VRML & XML test suites    0.9
  28. #    - approval by task group, community, Web3D Consortium          1.0
  29. #      (estimated Fall 2000)
  30. #
  31. # current version:  0.79
  32. #
  33. # revised:          22 November 2000
  34. #
  35. -->
  36.  
  37. <!--    Profile:  authors can override these default IGNORE/INCLUDE values.
  38.     If CoreProfile is INCLUDEd, all other profiles must be IGNOREd.
  39.     Note CoreProfile enforces strict compliance with Core capabilities. -->
  40.  
  41. <!ENTITY % BaselineProfile    "INCLUDE">
  42. <!ENTITY % CoreProfile      "IGNORE">
  43. <!ENTITY % DisJavaVrmlProfile    "INCLUDE">
  44. <!ENTITY % GeoVrmlProfile    "INCLUDE">
  45. <!ENTITY % HAnimProfile     "INCLUDE">
  46. <!ENTITY % NurbsProfile        "INCLUDE">
  47. <!ENTITY % X3dExtensions     "IGNORE">
  48.  
  49. <!-- *** Entity declarations *** -->
  50.  
  51. <!ENTITY % X3dFieldTypes    " Boolean | Booleans | Color | Colors | Float | Floats | Image | Integer | Integers | Node | Nodes | Rotation | Rotations | String | Strings | Time | Times | Vector2Float | Vector2FloatArray | Vector3Float | Vector3FloatArray | Vector3Double | Vector3DoubleArray" >
  52.  
  53. <!ENTITY % Vrml97FieldTypes    " SFBool | MFBool | SFColor | MFColor | SFFloat | MFFloat | SFImage | SFInt32 | MFInt32 | SFNode | MFNode | SFRotation | MFRotation | SFString | MFString | SFTime | MFTime | SFVec3f | MFVec3f | SFVec2f | MFVec2f " >
  54.  
  55. <!ENTITY % SFBool    "(true|false)">    <!-- Boolean    -->
  56. <!ENTITY % MFBool    "CDATA">    <!-- Booleans    -->
  57. <!ENTITY % SFColor    "CDATA">    <!-- Color    -->
  58. <!ENTITY % MFColor    "CDATA">    <!-- Colors    -->
  59. <!ENTITY % SFFloat    "CDATA">    <!-- Float    -->
  60. <!ENTITY % MFFloat    "CDATA">    <!-- Floats    -->
  61. <!ENTITY % SFImage    "CDATA">    <!-- Image data    -->
  62. <!ENTITY % SFInt32    "CDATA">    <!-- Integer    -->
  63. <!ENTITY % MFInt32    "CDATA">    <!-- Integers    -->
  64. <!ENTITY % SFNode    "#PCDATA">    <!-- Node  - handled by tag rules -->
  65. <!ENTITY % MFNode    "#PCDATA">    <!-- Nodes - handled by tag rules -->
  66. <!ENTITY % SFRotation     "CDATA">    <!-- Rotation    -->
  67. <!ENTITY % MFRotation     "CDATA">    <!-- Rotations    -->
  68. <!ENTITY % SFString    "CDATA">    <!-- String    -->
  69. <!ENTITY % MFString    "CDATA">    <!-- Strings    -->
  70. <!ENTITY % SFTime    "CDATA">    <!-- Time    -->
  71. <!ENTITY % MFTime    "CDATA">    <!-- Times    -->
  72. <!ENTITY % SFVec2f    "CDATA">    <!-- Vector2Float    -->
  73. <!ENTITY % MFVec2f    "CDATA">    <!-- Vector2FloatArray -->
  74. <!ENTITY % SFVec3f    "CDATA">    <!-- Vector3Float    -->
  75. <!ENTITY % MFVec3f    "CDATA">    <!-- Vector3FloatArray -->
  76.  
  77. <!--    Fields:  VRML 97 Part 5, Field and event reference
  78.     http://www.web3D.org/technicalinfo/specifications/vrml97/part1   -->
  79.  
  80. <!--    User needs to append | after each new node in any of these extensions.
  81.         For an example, see examples/ProtoTagDtdDeclarationExamples.xml   -->
  82.  
  83. <!ENTITY % AppearanceNodeExtensions  "" >
  84. <!ENTITY % AudioClipNodeExtensions  "" >
  85. <!ENTITY % BindableNodeExtensions  "" >
  86. <!ENTITY % ColorNodeExtensions  "" >
  87. <!ENTITY % CoordinateNodeExtensions  "" >
  88. <!ENTITY % FontStyleNodeExtensions  "" >
  89. <!ENTITY % GeometryNodeExtensions  "" >
  90. <!ENTITY % GroupingNodeExtensions  "" >
  91. <!ENTITY % InterpolatorNodeExtensions  "" > 
  92. <!ENTITY % LightNodeExtensions  "" >
  93. <!ENTITY % MaterialNodeExtensions  "" >
  94. <!ENTITY % NormalNodeExtensions  "" >
  95. <!ENTITY % ScriptNodeExtensions  "" > 
  96. <!ENTITY % SensorNodeExtensions  "" > 
  97. <!ENTITY % ShapeNodeExtensions  "" >
  98. <!ENTITY % SoundNodeExtensions  "" >
  99.  
  100. <!-- MovieTexture must be able to appear twice: -->
  101. <!ENTITY % MovieTextureNodeExtensions  "" >
  102. <!ENTITY % TextureNodeExtensions  "" >
  103.  
  104. <!ENTITY % TextureCoordinateNodeExtensions  "" >
  105. <!ENTITY % TextureTransformNodeExtensions  "" >
  106. <!ENTITY % WorldInfoNodeExtensions  "" >
  107.  
  108. <!-- Users defining PROTOs do not override any of the following parameter entity declarations. -->
  109.  
  110. <![%BaselineProfile;[
  111.  
  112. <!ENTITY % WildcardNodes           " (USE | ProtoInstance) " >
  113.  
  114. ]]>
  115.  
  116. <![%CoreProfile;[
  117.  
  118. <!ENTITY % WildcardNodes           " USE " >
  119.  
  120. ]]>
  121.  
  122. <![%DisJavaVrmlProfile;[
  123.  
  124. <!ENTITY % DisJavaVrmlGroupingNodes    " EspduTransform | SignalPdu | ReceiverPdu | TransmitterPdu | " >
  125.  
  126. ]]>
  127.  
  128. <!-- GeoVrml profile: type extensions for the scene graph -->
  129.  
  130. <![%GeoVrmlProfile;[
  131.  
  132. <!ENTITY % GeoCoordinateNode        " GeoCoordinate | " >
  133. <!ENTITY % GeoElevationGridNode        " GeoElevationGrid | " >
  134. <!ENTITY % GeoGroupingNodes        " GeoInline | GeoLocation | GeoLOD | " >
  135. <!ENTITY % GeoMetadataNode        " GeoMetadata | " >
  136. <!ENTITY % GeoOriginNode        " GeoOrigin | " >
  137. <!ENTITY % GeoBehaviorNodes        " GeoPositionInterpolator | GeoTouchSensor | " >
  138. <!ENTITY % GeoViewpointNode        " GeoViewpoint | " >
  139.  
  140. ]]>
  141.  
  142. <![%HAnimProfile;[
  143.  
  144. <!ENTITY % HAnimGroupingNodes        " Joint | Segment | Site | Humanoid | " >
  145. <!ENTITY % DisplacerNode        " Displacer | " >
  146.  
  147. ]]>
  148.  
  149. <![%NurbsProfile;[
  150.  
  151. <!ENTITY % NurbsGroupingNodes    " Contour2D | CoordinateDeformer | NurbsGroup | NurbsTextureSurface | " >
  152. <!ENTITY % NurbsGeometryNodes    " NurbsCurve | NurbsCurve2D | NurbsSurface | Polyline2D | TrimmedSurface | " >
  153. <!ENTITY % NurbsInterpolators    " NurbsPositionInterpolator | " >
  154.  
  155. ]]>
  156.  
  157.  
  158. <!-- otherwise set tags to null strings if not previously defined by DisJavaVrml, GeoVrml, HAnim, Nurbs -->
  159.  
  160. <!ENTITY % DisJavaVrmlGroupingNodes    "" >
  161.  
  162. <!ENTITY % GeoCoordinateNode        "" >
  163. <!ENTITY % GeoElevationGridNode        "" >
  164. <!ENTITY % GeoGroupingNodes        "" >
  165. <!ENTITY % GeoMetadataNode        "" >
  166. <!ENTITY % GeoOriginNode        "" >
  167. <!ENTITY % GeoBehaviorNodes        "" >
  168. <!ENTITY % GeoViewpointNode        "" >
  169.  
  170. <!ENTITY % HAnimGroupingNodes        "" >
  171. <!ENTITY % DisplacerNode        "" >
  172.  
  173. <!ENTITY % NurbsGroupingNodes        "" >
  174. <!ENTITY % NurbsGeometryNodes        "" >
  175. <!ENTITY % NurbsInterpolators        "" >
  176.  
  177. <!-- no further type extensions needed -->
  178.  
  179. <![%CoreProfile;[
  180.  
  181. <!ENTITY % AudioClipNodes "" >
  182. <!ENTITY % FontStyleNodes "" >
  183. <!ENTITY % MovieTextureNodes "" >
  184. <!ENTITY % NormalNodes "" >
  185. <!ENTITY % ScriptNodes "" >
  186. <!ENTITY % SoundNodes "" >
  187. <!ENTITY % TextureCoordinateNodes "" >
  188. <!ENTITY % TextureTransformNodes "" >
  189.  
  190. ]]>
  191.  
  192. <!-- Declarations appearing only in BaselineProfile -->
  193.  
  194. <![%BaselineProfile;[
  195.  
  196. <!ENTITY % AudioClipNodes        " %AudioClipNodeExtensions; AudioClip " >
  197.  
  198. <!ENTITY % FontStyleNodes        " %FontStyleNodeExtensions; FontStyle " >
  199.  
  200. <!ENTITY % MovieTextureNodes        " %MovieTextureNodeExtensions; MovieTexture " >
  201.  
  202. <!ENTITY % NormalNodes            " %NormalNodeExtensions; Normal " >
  203.  
  204. <!ENTITY % ScriptNodes            " %ScriptNodeExtensions; Script " >
  205.  
  206. <!ENTITY % SoundNodes            " %SoundNodeExtensions; Sound " >
  207.  
  208. <!ENTITY % TextureCoordinateNodes    " %TextureCoordinateNodeExtensions; TextureCoordinate " >
  209.  
  210. <!ENTITY % TextureTransformNodes    " %TextureTransformNodeExtensions; TextureTransform " >
  211.  
  212. ]]>
  213.  
  214. <!-- Declarations appearing differently in X3dExtensions, BaselineProfile and CoreProfile -->
  215.  
  216. <!-- X3D Extensions (superset overriding some BaselineProfile declarations) -->
  217.  
  218. <![%X3dExtensions;[
  219.  
  220. <!--
  221. <!ENTITY % AppearanceNodeX3dExtensions " MultiTexture | MultiTextureTree | MultiTextureAppearance | " >
  222. <!ENTITY % GeometryNodesX3dExtensions  " MultiTextureIndexedFaceSet | " >
  223. -->
  224.  
  225. <!ENTITY % AppearanceNodeX3dExtensions "" >
  226. <!ENTITY % GeometryNodesX3dExtensions  "" >
  227.  
  228. ]]>
  229.  
  230. <!ENTITY % AppearanceNodeX3dExtensions "" >
  231. <!ENTITY % GeometryNodesX3dExtensions  "" >
  232.  
  233. <![%CoreProfile;[
  234.  
  235. <!ENTITY % AppearanceNodes      " Appearance " >
  236.  
  237. <!ENTITY % BehaviorLeafNodes    " CoordinateInterpolator | KeySensor | OrientationInterpolator | PositionInterpolator | ScalarInterpolator | TimeSensor | TouchSensor " >
  238.  
  239. <!ENTITY % BindableNodes        " Background | NavigationInfo | Viewpoint " >
  240.  
  241. <!ENTITY % ColorNodes           " Color " >
  242.  
  243. <!ENTITY % CoordinateNodes      " Coordinate " >
  244.  
  245. <!ENTITY % GeometryNodes        " IndexedFaceSet | IndexedLineSet | PointSet " >
  246.  
  247. <!ENTITY % GroupingNodes        " Anchor | Group | Inline | Transform " >
  248.  
  249. <!ENTITY % LightNodes           " DirectionalLight " >
  250.  
  251. <!ENTITY % MaterialNodes        " Material " >
  252.  
  253. <!ENTITY % ShapeNodes           " Shape " >
  254.  
  255. <!ENTITY % TextureNodes         " ImageTexture " >
  256.  
  257. <!ENTITY % WorldInfoNodes       " WorldInfo " >
  258.  
  259. ]]>
  260.  
  261. <![%BaselineProfile;[
  262.  
  263. <!ENTITY % AppearanceNodes      " %AppearanceNodeExtensions; %AppearanceNodeX3dExtensions; Appearance " >
  264.  
  265. <!ENTITY % BehaviorLeafNodes    " %InterpolatorNodeExtensions; %SensorNodeExtensions; %ScriptNodeExtensions; %GeoBehaviorNodes; %DisplacerNode; %NurbsInterpolators; ColorInterpolator | CoordinateInterpolator | CylinderSensor | KeySensor | NormalInterpolator | OrientationInterpolator | PlaneSensor | PositionInterpolator | ProximitySensor | ScalarInterpolator | Script | SphereSensor | StringSensor | TimeSensor | TouchSensor | VisibilitySensor " >
  266.  
  267. <!ENTITY % BindableNodes        " %BindableNodeExtensions; %GeoViewpointNode; Background | Fog | NavigationInfo | Viewpoint " >
  268.  
  269. <!ENTITY % ColorNodes           " %ColorNodeExtensions; Color " >
  270.  
  271. <!ENTITY % CoordinateNodes      " %CoordinateNodeExtensions; %GeoCoordinateNode; Coordinate " >
  272.  
  273. <!ENTITY % GeometryNodes        " %GeometryNodeExtensions; %GeometryNodesX3dExtensions; %GeoElevationGridNode; %NurbsGeometryNodes; Box | Cone | Cylinder | ElevationGrid | Extrusion | IndexedFaceSet | IndexedLineSet | PointSet | Sphere | Text " >
  274.  
  275. <!ENTITY % GroupingNodes        " %GroupingNodeExtensions; %DisJavaVrmlGroupingNodes; %GeoGroupingNodes; %HAnimGroupingNodes; %NurbsGroupingNodes; Anchor | Billboard | Collision | Group | Inline | LOD | Switch | Transform " >
  276.  
  277. <!ENTITY % LightNodes           " %LightNodeExtensions; DirectionalLight | SpotLight | PointLight " >
  278.  
  279. <!ENTITY % MaterialNodes        " %MaterialNodeExtensions; Material " >
  280.  
  281. <!ENTITY % ShapeNodes           " %ShapeNodeExtensions; Shape " >
  282.  
  283. <!ENTITY % TextureNodes         " %TextureNodeExtensions; ImageTexture | MovieTexture | PixelTexture " >
  284.  
  285. <!ENTITY % WorldInfoNodes       " %WorldInfoNodeExtensions; %GeoMetadataNode; WorldInfo " >
  286.  
  287. ]]>
  288.  
  289. <!-- These VRML 97 specification terms relate to a possible future object hierarchy of nodes.
  290.      For details, see VRML 97 4.6.5 Grouping and children nodes
  291.      http://www.web3D.org/technicalinfo/specifications/vrml97/part1/concepts.html#4.6.5 -->
  292.  
  293. <![%CoreProfile;[
  294.  
  295. <!ENTITY % GeometricPropertyNodes " %ColorNodes; " >
  296.  
  297. <!ENTITY % AppearanceChildNodes    " %MaterialNodes; | %TextureNodes; " >
  298.  
  299. <!ENTITY % SceneLeafNodes       " %LightNodes; | %ShapeNodes; | %WorldInfoNodes; " >
  300.  
  301. <!ENTITY % ProtoNodes           "" >
  302.  
  303. ]]>
  304.  
  305. <![%BaselineProfile;[
  306.  
  307. <!ENTITY % GeometricPropertyNodes " %CoordinateNodes; | %ColorNodes; | %NormalNodes; | %TextureCoordinateNodes; " >
  308.  
  309. <!ENTITY % AppearanceChildNodes    " %MaterialNodes; | %TextureNodes; | %TextureTransformNodes; " >
  310.  
  311. <!ENTITY % SceneLeafNodes       " %GeoOriginNode; %LightNodes; | %ShapeNodes; | %SoundNodes; | %WorldInfoNodes; " >
  312.  
  313. <!ENTITY % ProtoNodes           " %AppearanceNodes; | %AppearanceChildNodes; | %BehaviorLeafNodes; | %BindableNodes; | %FontStyleNodes; | %GeometricPropertyNodes; | %GeometryNodes; | %GroupingNodes; | %SceneLeafNodes; | ProtoInstance | USE " >
  314.  
  315. ]]>
  316.  
  317.  
  318. <![%CoreProfile;[
  319.  
  320. <!ENTITY % ChildrenNodes        " %BehaviorLeafNodes; | %BindableNodes; | %GroupingNodes; | %SceneLeafNodes; " >
  321.  
  322. <!ENTITY % SceneNodes           " ( %ChildrenNodes; | %WildcardNodes; )*, ROUTE* " >
  323.  
  324. ]]>
  325.  
  326. <![%BaselineProfile;[
  327.  
  328. <!ENTITY % ChildrenNodes        " %BehaviorLeafNodes; | %BindableNodes; | %GroupingNodes; | %SceneLeafNodes; " >
  329.  
  330. <!ENTITY % SceneNodes           " (ExternProtoDeclare|ProtoDeclare)*, ( %ChildrenNodes; | %WildcardNodes; )*, ROUTE* " >
  331.  
  332. ]]>
  333.  
  334.  
  335. <!ENTITY % AllVRML97Nodes       " Anchor|Appearance|AudioClip|Background|Billboard|Box|Collision|Color|ColorInterpolator|Cone|Coordinate|CoordinateInterpolator|Cylinder|CylinderSensor|DirectionalLight|ElevationGrid|Extrusion|Fog|FontStyle|Group|Header|ImageTexture|IndexedFaceSet|IndexedLineSet|Inline|KeySensor|LOD|Material|MovieTexture|NavigationInfo|Normal|NormalInterpolator|OrientationInterpolator|PixelTexture|PlaneSensor|PointLight|PointSet|PositionInterpolator|ProximitySensor|ScalarInterpolator|Scene|Script|Shape|Sound|Sphere|SphereSensor|SpotLight|StringSensor|Switch|Text|TextureCoordinate|TextureTransform|TimeSensor|TouchSensor|Transform|Viewpoint|VisibilitySensor|WorldInfo " >
  336.  
  337. <!ENTITY % AllGeoVrmlTags    " GeoCoordinate|GeoElevationGrid|GeoInline|GeoLocation|GeoLOD|GeoMetadata|GeoOrigin|GeoPositionInterpolator|GeoTouchSensor|GeoViewpoint " >
  338.  
  339. <!ENTITY % AllHAnimTags    " Displacer|Humanoid|Joint|Segment|Site " >
  340.  
  341.  
  342. <!-- Not used (yet, anyway) in tagset definitions. -->
  343.  
  344. <!ENTITY % SensorNodes          " Anchor | Collision | CylinderSensor | KeySensor | PlaneSensor | ProximitySensor | SphereSensor | StringSensor | TimeSensor | TouchSensor | VisibilitySensor " >
  345.  
  346. <!ENTITY % EnvironmentalSensorNodes " Collision | ProximitySensor | TimeSensor | VisibilitySensor " >
  347.  
  348. <!ENTITY % PointingDeviceSensors " Anchor | CylinderSensor | PlaneSensor | SphereSensor | TouchSensor " >
  349.  
  350. <!ENTITY % KeyDeviceSensors    " " >
  351.  
  352. <!ENTITY % DragSensors          " CylinderSensor | PlaneSensor | SphereSensor " >
  353.  
  354. <!ENTITY % InterpolatorNodes    " ColorInterpolator | CoordinateInterpolator | NormalInterpolator | OrientationInterpolator | PositionInterpolator | ScalarInterpolator " >
  355.  
  356. <!ENTITY % TimeDependentNodes    " AudioClip | MovieTexture | TimeSensor " >
  357.  
  358.  
  359. <!-- ================================== -->
  360. <!-- ****** Wrapper tags.    ****** -->
  361.  
  362. <!ENTITY % AllVRML97Fields       " appearance|children|choice|color|coord|fontStyle|normal|source|texCoord|textureTransform|geometry|level|material|proxy|texture " >
  363.  
  364.  
  365. <!-- no attributes for wrapper tags, since there they are merely fields and
  366.      not nodes instantiated by VRML that can be DEFed. -->
  367.  
  368. <!ELEMENT appearance (%AppearanceNodes; | %WildcardNodes;)? >
  369. <!ELEMENT children ( %ChildrenNodes; | %WildcardNodes; )* >
  370. <!ELEMENT choice ( %ChildrenNodes; | %WildcardNodes; )* >
  371. <!ELEMENT color (%ColorNodes; | %WildcardNodes;)? >
  372. <!ELEMENT coord (%CoordinateNodes; | %WildcardNodes;)? >
  373. <![%BaselineProfile;[
  374. <!ELEMENT fontStyle (%FontStyleNodes; | %WildcardNodes;)? >
  375. <!ELEMENT normal (%NormalNodes; | %WildcardNodes;)? >
  376. <!ELEMENT source ( %AudioClipNodes; | %MovieTextureNodes; | %WildcardNodes; )? >
  377. <!ELEMENT texCoord (%TextureCoordinateNodes; | %WildcardNodes;)? >
  378. <!ELEMENT textureTransform (%TextureTransformNodes; | %WildcardNodes;)? >
  379. ]]>
  380. <!ELEMENT geometry (%GeometryNodes; | %WildcardNodes;)? >
  381. <!ELEMENT level ( %ChildrenNodes; | %WildcardNodes; )* >
  382. <!ELEMENT material (%MaterialNodes; | %WildcardNodes;)? >
  383. <!ELEMENT proxy (%ChildrenNodes; | %WildcardNodes;)? >
  384. <!ELEMENT texture (%TextureNodes; | %WildcardNodes;)? >
  385.  
  386. <!-- DIS-Java-VRML profile:  Distributed Interactive Simulation node extensions for the scene graph -->
  387.  
  388. <![%DisJavaVrmlProfile;[
  389.  
  390. <!ENTITY % DisJavaVrmlDTD PUBLIC 
  391.     "http://www.web3D.org/TaskGroups/x3d/translation/DisJavaVrml.dtd"
  392.     "file://localhost/C:/www.web3D.org/TaskGroups/x3d/translation/DisJavaVrml.dtd">
  393.  
  394. %DisJavaVrmlDTD;
  395.  
  396. ]]>
  397.  
  398.  
  399. <!-- GeoVrml profile: node extensions for the scene graph -->
  400.  
  401. <![%GeoVrmlProfile;[
  402.  
  403. <!-- GeoVrml's rootNode depends on profile-specific parameter-entity definitions,
  404.      so it appears inside the X3D DTD rather than in GeoVrml.dtd -->
  405.  
  406. <!ELEMENT rootNode ( %ChildrenNodes; | %WildcardNodes; )* >
  407.  
  408. <!ENTITY % GeoVrmlDTD PUBLIC 
  409.     "http://www.web3D.org/TaskGroups/x3d/translation/GeoVrml.dtd"
  410.     "file://localhost/C:/www.web3D.org/TaskGroups/x3d/translation/GeoVrml.dtd">
  411.  
  412. %GeoVrmlDTD;
  413.  
  414. ]]>
  415.  
  416. <!-- HumanoidAnimation (H-Anim) profile: node extensions for the scene graph -->
  417.  
  418. <![%HAnimProfile;[
  419.  
  420. <!-- wrapper tag -->
  421. <!ELEMENT humanoidBody ( %ChildrenNodes; | %WildcardNodes; )* >
  422.  
  423. <!ENTITY % HAnimDTD PUBLIC 
  424.     "http://www.web3D.org/TaskGroups/x3d/translation/HumanoidAnimation.dtd"
  425.     "file://localhost/C:/www.web3D.org/TaskGroups/x3d/translation/HumanoidAnimation.dtd">
  426.  
  427. %HAnimDTD;
  428.  
  429. ]]>
  430.  
  431. <!-- Nurbs profile:  Non-Uniform Rational B-Splines -->
  432.  
  433. <![%NurbsProfile;[
  434.  
  435. <!ENTITY % NurbsDTD PUBLIC 
  436.     "http://www.web3D.org/TaskGroups/x3d/translation/Nurbs.dtd"
  437.     "file://localhost/C:/www.web3D.org/TaskGroups/x3d/translation/Nurbs.dtd">
  438.  
  439. %NurbsDTD;
  440.  
  441. ]]>
  442.  
  443.  
  444. <!-- *** X3D DTD *** -->
  445.  
  446. <![%BaselineProfile;[
  447.  
  448. <!ELEMENT Anchor (children)? >
  449. <!ATTLIST Anchor 
  450.     description %SFString; #IMPLIED
  451.     parameter   %MFString; #IMPLIED
  452.     url         %MFString; #IMPLIED
  453.     bboxCenter  %SFVec3f;  "0 0 0"
  454.     bboxSize    %SFVec3f;  "-1 -1 -1"
  455.     DEF         ID         #IMPLIED 
  456.     USE         IDREF      #IMPLIED >
  457. ]]>
  458.  
  459. <![%CoreProfile;[
  460.  
  461. <!ELEMENT Anchor (children)? >
  462. <!ATTLIST Anchor 
  463.     url         %MFString; #IMPLIED
  464.     bboxCenter  %SFVec3f;  "0 0 0"
  465.     bboxSize    %SFVec3f;  "-1 -1 -1"
  466.     DEF         ID         #IMPLIED 
  467.     USE         IDREF      #IMPLIED >
  468. ]]>
  469.  
  470. <![%BaselineProfile;[
  471.  
  472. <!ELEMENT Appearance (
  473.     (material, ((texture, textureTransform?) | (textureTransform, texture?))? ) |
  474.     (texture, ((material, textureTransform?) | (textureTransform, material?))? ) |
  475.     (textureTransform, ((texture, material?) | (material, texture?))? )?
  476. ) >
  477. ]]>
  478.  
  479. <![%CoreProfile;[
  480.  
  481. <!ELEMENT Appearance (
  482.     ((material, texture?) | (texture, material?))?
  483. ) >
  484. ]]>
  485.  
  486. <!ATTLIST Appearance
  487.     DEF ID      #IMPLIED
  488.     USE IDREF   #IMPLIED>
  489.  
  490. <![%BaselineProfile;[
  491.  
  492. <!ELEMENT AudioClip EMPTY >
  493. <!ATTLIST AudioClip
  494.     description %SFString; #IMPLIED
  495.     loop        %SFBool;   "false"
  496.     pitch       %SFFloat;  "1.0"
  497.     startTime   %SFTime;   "0"
  498.     stopTime    %SFTime;   "0"
  499.     url         %MFString; #IMPLIED
  500.     duration    %SFTime;   "0.0"
  501.     isActive    %SFBool;   "false"
  502.     DEF         ID         #IMPLIED
  503.     USE         IDREF      #IMPLIED>
  504. ]]>
  505.  
  506. <![%BaselineProfile;[
  507.  
  508. <!ELEMENT Background EMPTY>
  509. <!ATTLIST Background
  510.     groundAngle %MFFloat;  #IMPLIED
  511.     groundColor %MFColor;  "0 0 0"
  512.     backUrl     %MFString; #IMPLIED
  513.     bottomUrl   %MFString; #IMPLIED
  514.     frontUrl    %MFString; #IMPLIED
  515.     leftUrl     %MFString; #IMPLIED
  516.     rightUrl    %MFString; #IMPLIED
  517.     topUrl      %MFString; #IMPLIED
  518.     skyAngle    %MFFloat;  #IMPLIED
  519.     skyColor    %MFColor;  "0 0 0"
  520.     bind        %SFBool;   "false"
  521.     bindTime    %SFTime;   "-1"
  522.     isBound     %SFBool;   "false"
  523.     DEF         ID         #IMPLIED 
  524.     USE         IDREF      #IMPLIED >
  525. ]]>
  526.  
  527. <![%CoreProfile;[
  528.  
  529. <!ELEMENT Background EMPTY>
  530. <!ATTLIST Background
  531.     bottomUrl   %MFString; #IMPLIED
  532.     skyAngle    %MFFloat;  #IMPLIED
  533.     skyColor    %SFColor;  "0 0 0"
  534.     bind        %SFBool;   "false"
  535.     bindTime    %SFTime;   "-1"
  536.     isBound     %SFBool;   "false"
  537.     DEF         ID         #IMPLIED 
  538.     USE         IDREF      #IMPLIED >
  539. ]]>
  540.  
  541. <![%BaselineProfile;[
  542.  
  543. <!ELEMENT Billboard (children)? >
  544. <!ATTLIST Billboard
  545.     axisOfRotation %SFVec3f; "0 1 0"
  546.     bboxCenter     %SFVec3f; "0 0 0"
  547.     bboxSize       %SFVec3f; "-1 -1 -1"
  548.     DEF            ID        #IMPLIED 
  549.     USE            IDREF     #IMPLIED>
  550.  
  551. <!ELEMENT Box EMPTY>
  552. <!ATTLIST Box
  553.     size %SFVec3f; "2 2 2"
  554.     DEF  ID        #IMPLIED 
  555.     USE  IDREF     #IMPLIED>
  556. ]]>
  557.  
  558. <![%BaselineProfile;[
  559.  
  560. <!ELEMENT Collision ( (children, proxy?) | (proxy, children?) )? >
  561. <!ATTLIST Collision
  562.     collide     %SFBool;  "true"
  563.     bboxCenter  %SFVec3f; "0 0 0"
  564.     bboxSize    %SFVec3f; "-1 -1 -1"
  565.     collideTime %SFTime;  "0.0"
  566.     DEF         ID        #IMPLIED 
  567.     USE         IDREF     #IMPLIED >
  568. ]]>
  569.  
  570. <!ELEMENT Color EMPTY >
  571. <!ATTLIST Color
  572.     color       %MFColor; #IMPLIED
  573.     DEF         ID        #IMPLIED
  574.     USE         IDREF     #IMPLIED>
  575.  
  576. <![%BaselineProfile;[
  577.  
  578. <!ELEMENT ColorInterpolator EMPTY>
  579. <!ATTLIST ColorInterpolator
  580.     fraction    %SFFloat; "0"
  581.     key         %MFFloat; #IMPLIED
  582.     keyValue    %MFColor; #IMPLIED
  583.     value       %SFColor; "0 0 0"
  584.     DEF         ID        #IMPLIED
  585.     USE         IDREF     #IMPLIED>
  586.  
  587. <!ELEMENT Cone EMPTY>
  588. <!ATTLIST Cone
  589.     bottomRadius %SFFloat; "1"
  590.     height       %SFFloat; "2"
  591.     side         %SFBool;  "true"
  592.     bottom       %SFBool;  "true"
  593.     DEF          ID        #IMPLIED
  594.     USE          IDREF     #IMPLIED>
  595. ]]>
  596.  
  597. <!ELEMENT Coordinate EMPTY >
  598. <!ATTLIST Coordinate 
  599.     point        %MFVec3f; #IMPLIED
  600.     DEF          ID        #IMPLIED
  601.     USE          IDREF     #IMPLIED>
  602.  
  603. <!ELEMENT CoordinateInterpolator EMPTY>
  604. <!ATTLIST CoordinateInterpolator
  605.     fraction %SFFloat; "0"
  606.     key      %MFFloat; #IMPLIED
  607.     keyValue %MFVec3f; #IMPLIED
  608.     value    %MFVec3f; "0 0 0"
  609.     DEF      ID        #IMPLIED
  610.     USE      IDREF     #IMPLIED>
  611.  
  612. <![%BaselineProfile;[
  613.  
  614. <!ELEMENT Cylinder EMPTY>
  615. <!ATTLIST Cylinder 
  616.     bottom   %SFBool; "true"
  617.     height   %SFFloat; "2"
  618.     radius   %SFFloat; "1"
  619.     side     %SFBool;  "true"
  620.     top      %SFBool;  "true"
  621.     DEF      ID        #IMPLIED
  622.     USE      IDREF     #IMPLIED>
  623.  
  624. <!ELEMENT CylinderSensor EMPTY>
  625. <!ATTLIST CylinderSensor
  626.     autoOffset %SFBool;     "true"
  627.     diskAngle  %SFFloat;    "0.262"
  628.     enabled    %SFBool;     "true"
  629.     maxAngle   %SFFloat;    "-1"
  630.     minAngle   %SFFloat;    "0"
  631.     offset     %SFFloat;    "0"
  632.     isActive   %SFBool;     "false"    
  633.     rotation   %SFRotation; "0 0 1 0"
  634.     trackPoint %SFVec3f;    "0 0 0"
  635.     DEF        ID           #IMPLIED
  636.     USE        IDREF        #IMPLIED>
  637. ]]>
  638.  
  639. <![%BaselineProfile;[
  640.  
  641. <!ELEMENT DirectionalLight EMPTY>
  642. <!ATTLIST DirectionalLight
  643.     ambientIntensity %SFFloat; "0"
  644.     color            %SFColor; "1 1 1"
  645.     direction        %SFVec3f; "0 0 -1"
  646.     intensity        %SFFloat; "1"
  647.     on               %SFBool;  "true"
  648.     DEF              ID        #IMPLIED
  649.     USE              IDREF     #IMPLIED>
  650. ]]>
  651.  
  652. <![%CoreProfile;[
  653.  
  654. <!ELEMENT DirectionalLight EMPTY>
  655. <!ATTLIST DirectionalLight
  656.     color            %SFColor; "1 1 1"
  657.     direction        %SFVec3f; "0 0 -1"
  658.     intensity        %SFFloat; "1"
  659.     on               %SFBool;  "true"
  660.     DEF              ID        #IMPLIED
  661.     USE              IDREF     #IMPLIED>
  662. ]]>
  663.  
  664. <![%BaselineProfile;[
  665.  
  666. <!ELEMENT ElevationGrid (
  667.     (color, ((normal, texCoord?) | (texCoord, normal?))? ) |
  668.     (normal, ((color, texCoord?) | (texCoord, color?))? ) |
  669.     (texCoord, ((normal, color?) | (color, normal?))? )?
  670. ) >
  671.  
  672. <!ATTLIST ElevationGrid
  673.     height          %MFFloat; #IMPLIED
  674.     ccw             %SFBool;  "true"
  675.     colorPerVertex  %SFBool;  "true"
  676.     creaseAngle     %SFFloat; "0"
  677.     normalPerVertex %SFBool;  "true"
  678.     solid           %SFBool;  "true"
  679.     xDimension      %SFInt32; "0"
  680.     xSpacing        %SFFloat; "1.0"
  681.     zDimension      %SFInt32; "0"
  682.     zSpacing        %SFFloat; "1.0"
  683.     DEF             ID        #IMPLIED
  684.     USE             IDREF     #IMPLIED>
  685.  
  686. <!ELEMENT ExternProtoDeclare ( field* ) >
  687. <!ATTLIST ExternProtoDeclare
  688.     name        NMTOKEN        #REQUIRED
  689.     url        %MFString;    #REQUIRED
  690.     nodeTypeHint    CDATA        #IMPLIED>
  691.  
  692. <!ELEMENT Extrusion EMPTY >
  693. <!ATTLIST Extrusion
  694.     beginCap     %SFBool;     "true"
  695.     ccw          %SFBool;     "true"
  696.     convex       %SFBool;     "true"
  697.     creaseAngle  %SFFloat;    "0.0"
  698.     crossSection %MFVec2f;    "1 1  1 -1  -1 -1  -1 1  1 1"
  699.     endCap       %SFBool;     "true"
  700.     orientation  %MFRotation; "0 0 1 0"
  701.     scale        %MFVec2f;    "1 1"
  702.     solid        %SFBool;     "true"
  703.     spine        %MFVec3f;    "0 0 0  0 1 0"
  704.     DEF          ID           #IMPLIED
  705.     USE          IDREF        #IMPLIED>
  706.  
  707. <!-- field is only used in a Script, ProtoDeclare or ExternProtoDeclare.
  708.      Initialization values for simple types go in the value attribute.
  709.      Contained content tags are only for initialization of Node or Nodes. -->
  710.  
  711. <!ELEMENT field  ( %ProtoNodes; )* >
  712. <!ATTLIST field
  713.     type  ( %X3dFieldTypes; ) #REQUIRED
  714.     name  NMTOKEN          #REQUIRED
  715.     value CDATA            #IMPLIED
  716.       xml:space              (default | preserve) "default"
  717.     IS    NMTOKENS         #IMPLIED
  718.     USE   IDREF            #IMPLIED
  719.     vrml97Hint (eventIn | eventOut | field | exposedField) #IMPLIED>
  720.  
  721. <!-- fieldValue resets default field values inside a ProtoInstance.
  722.      Initialization values for simple types go in the value attribute.
  723.      Contained content tags are only for initialization of Node or Nodes. -->
  724.  
  725. <!ELEMENT fieldValue ( %ProtoNodes; )* >
  726. <!ATTLIST fieldValue
  727.     name    NMTOKEN    #REQUIRED
  728.     value    CDATA    #IMPLIED
  729.     USE     IDREF    #IMPLIED>
  730.  
  731. <!ELEMENT Fog EMPTY >
  732. <!ATTLIST Fog
  733.     color           %SFColor;            "1 1 1"
  734.     fogType         (LINEAR|EXPONENTIAL) "LINEAR"
  735.     visibilityRange %SFFloat;            "0"
  736.     bind            %SFBool;             "false"
  737.     bindTime        %SFTime;             "-1"
  738.     isBound         %SFBool;             "false"
  739.     DEF             ID                   #IMPLIED
  740.     USE             IDREF                #IMPLIED>
  741.  
  742. <!ELEMENT FontStyle EMPTY >
  743. <!ATTLIST FontStyle
  744.     family      %MFString; '"SERIF"'
  745.     horizontal  %SFBool;   "true"
  746.     justify     %MFString; '"BEGIN"'
  747.     language    %SFString; #IMPLIED
  748.     leftToRight %SFBool;   "true"
  749.     size        %SFFloat;  "1.0"
  750.     spacing     %SFFloat;  "1.0"
  751.     style       (PLAIN|BOLD|ITALIC|BOLDITALIC) "PLAIN"
  752.     topToBottom %SFBool;   "true"
  753.     DEF         ID         #IMPLIED
  754.     USE         IDREF      #IMPLIED>
  755.  
  756. <!-- Minimum supported values mentioned in VRML 97 specification
  757.     family      ' "SERIF" "SANS" "TYPEWRITER" '
  758.     justify     ' "FIRST" "BEGIN" "MIDDLE" "END" '       -->
  759. ]]>
  760.  
  761. <!ELEMENT Group (children)? >
  762. <!ATTLIST Group
  763.     bboxCenter %SFVec3f; "0 0 0"
  764.     bboxSize   %SFVec3f; "-1 -1 -1"
  765.     DEF        ID        #IMPLIED
  766.     USE        IDREF     #IMPLIED>
  767.  
  768. <!ELEMENT Header ( #PCDATA | meta )* >
  769.  
  770. <!ELEMENT ImageTexture EMPTY >
  771. <!ATTLIST ImageTexture 
  772.     url     %MFString; #IMPLIED
  773.     repeatS %SFBool; "true"
  774.     repeatT %SFBool; "true"
  775.     DEF     ID       #IMPLIED
  776.     USE     IDREF    #IMPLIED>
  777.  
  778. <![%BaselineProfile;[
  779.  
  780. <!ELEMENT IndexedFaceSet (
  781.    (color, (    (coord, ((normal,texCoord?) | (texCoord,normal)?)?) |
  782.         (normal,((coord,texCoord?) | (texCoord,coord?))?) |
  783.         (texCoord,((coord,normal?) | (normal,coord?))?) )? )
  784.  | (coord, (    (color,    ((normal,texCoord?) | (texCoord,normal)?)?) |
  785.         (normal,((color,texCoord?) | (texCoord,color?))?) |
  786.         (texCoord,((color,normal?) | (normal,color?))?) )? )
  787.  | (normal, (    (color,    ((coord,texCoord?) | (texCoord,coord?))?) |
  788.         (coord,((color,texCoord?) | (texCoord,color?))?) |
  789.         (texCoord,((color,coord?) | (coord,color?))?) )? )
  790.  | (texCoord, (    (color,    ((coord,normal?) | (normal,coord?))?) |
  791.         (coord,((color,normal?) | (normal,color?))?) |
  792.         (normal,((color,coord?) | (coord,color?))?) )? )?
  793. ) >
  794.  
  795. <!ATTLIST IndexedFaceSet
  796.     ccw             %SFBool;  "true"
  797.     colorIndex      %MFInt32; #IMPLIED
  798.     colorPerVertex  %SFBool;  "true"
  799.     convex          %SFBool;  "true"
  800.     coordIndex      %MFInt32; #IMPLIED
  801.     creaseAngle     %SFFloat; "0"
  802.     normalIndex     %MFInt32; #IMPLIED
  803.     normalPerVertex %SFBool;  "true"
  804.     solid           %SFBool;  "true"
  805.     texCoordIndex   %MFInt32; #IMPLIED
  806.     DEF             ID        #IMPLIED
  807.     USE             IDREF     #IMPLIED>
  808. ]]>
  809.  
  810. <![%CoreProfile;[
  811.  
  812. <!ELEMENT IndexedFaceSet ( (color, coord?) | (coord, color?) )? >
  813. <!ATTLIST IndexedFaceSet
  814.     ccw             %SFBool;  "true"
  815.     colorIndex      %MFInt32; #IMPLIED
  816.     colorPerVertex  %SFBool;  "true"
  817.     convex          %SFBool;  #FIXED    "true"
  818.     coordIndex      %MFInt32; #IMPLIED
  819.     creaseAngle     %SFFloat; "0"
  820.     normalPerVertex %SFBool;  "true"
  821.     solid           %SFBool;  "true"
  822.     texCoordIndex   %MFInt32; #IMPLIED
  823.     DEF             ID        #IMPLIED
  824.     USE             IDREF     #IMPLIED>
  825. ]]>
  826.  
  827. <!ELEMENT IndexedLineSet ( (color, coord?) | (coord, color?) )? >
  828. <!ATTLIST IndexedLineSet
  829.     colorIndex      %MFInt32; #IMPLIED
  830.     colorPerVertex  %SFBool;  "true"
  831.     coordIndex      %MFInt32; #IMPLIED
  832.     lineWidth       %SFFloat; "1.0"
  833.     DEF             ID        #IMPLIED
  834.     USE             IDREF     #IMPLIED>
  835.  
  836. <!-- Inline may contain nodes once url is loaded.         -->
  837. <!-- This permits external access - open technical issue. -->
  838.  
  839. <!ELEMENT Inline (children)? >
  840. <!ATTLIST Inline 
  841.     url         %MFString; #IMPLIED
  842.     bboxCenter  %SFVec3f;  "0 0 0"
  843.     bboxSize    %SFVec3f;  "-1 -1 -1"
  844.     DEF         ID         #IMPLIED
  845.     USE         IDREF      #IMPLIED>
  846.  
  847. <!ELEMENT KeySensor EMPTY >
  848. <!ATTLIST KeySensor 
  849.     keyPress        %SFInt32;    #IMPLIED
  850.     keyRelease        %SFInt32;    #IMPLIED
  851.     actionKeyPress        %SFInt32;    #IMPLIED
  852.     actionKeyRelease    %SFInt32;    #IMPLIED
  853.     shiftKey        %SFBool;    #IMPLIED
  854.     controlKey        %SFBool;    #IMPLIED
  855.     altKey            %SFBool;    #IMPLIED
  856.     enabled            %SFBool;    "true"
  857.     isActive        %SFBool;    "false"
  858.     DEF            ID        #IMPLIED
  859.     USE            IDREF        #IMPLIED>
  860.  
  861. <![%BaselineProfile;[
  862.  
  863. <!ELEMENT LOD (level)? >
  864. <!ATTLIST LOD
  865.     center %SFVec3f; "0 0 0"
  866.     range  %MFFloat; #IMPLIED
  867.     DEF    ID        #IMPLIED
  868.     USE    IDREF     #IMPLIED>
  869. ]]>
  870.  
  871. <![%BaselineProfile;[
  872.  
  873. <!ELEMENT Material EMPTY >
  874. <!ATTLIST Material
  875.     ambientIntensity %SFFloat; "0.2"
  876.     diffuseColor     %SFColor; "0.8 0.8 0.8"
  877.     emissiveColor    %SFColor; "0 0 0"
  878.     shininess        %SFFloat; "0.2"
  879.     specularColor    %SFColor; "0 0 0"
  880.     transparency     %SFFloat; "0"
  881.     DEF              ID        #IMPLIED
  882.     USE              IDREF     #IMPLIED>
  883. ]]>
  884.  
  885. <![%CoreProfile;[
  886.  
  887. <!ELEMENT Material EMPTY >
  888. <!ATTLIST Material
  889.     diffuseColor     %SFColor; "0.8 0.8 0.8"
  890.     emissiveColor    %SFColor; "0 0 0"
  891.     transparency     %SFFloat; "0"
  892.     DEF              ID        #IMPLIED
  893.     USE              IDREF     #IMPLIED>
  894. ]]>
  895.  
  896. <!-- *** XHTML exerpts to define meta tag, should convert
  897.          to external declaration when tools are robust    *** -->
  898.  
  899. <!-- i18n, language, meta tag definitions from XHTML 1.0
  900.      http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd -->
  901.  
  902. <!ENTITY % LanguageCode "NMTOKEN">
  903.     <!-- a language code, as per [RFC1766] -->
  904.  
  905. <!-- internationalization attributes
  906.   lang        language code (backwards compatible)
  907.   xml:lang    language code (as per XML 1.0 spec)
  908.   dir         direction for weak/neutral text
  909. -->
  910. <!ENTITY % i18n
  911.  "lang        %LanguageCode; #IMPLIED
  912.   xml:lang    %LanguageCode; #IMPLIED
  913.   dir         (ltr|rtl)      #IMPLIED"
  914.   >
  915.  
  916. <!-- generic metadata information, matches HTML usage -->
  917. <!ELEMENT meta EMPTY>  
  918. <!ATTLIST meta
  919.   %i18n;
  920.   http-equiv  CDATA          #IMPLIED
  921.   name        CDATA          #IMPLIED
  922.   content     CDATA          #REQUIRED
  923.   scheme      CDATA          #IMPLIED
  924.   >
  925.  
  926. <![%BaselineProfile;[
  927.  
  928. <!ELEMENT MovieTexture EMPTY >
  929. <!ATTLIST MovieTexture
  930.     loop      %SFBool;   "true"
  931.     speed     %SFFloat;  "1.0"
  932.     startTime %SFTime;   "0"
  933.     stopTime  %SFTime;   "0"
  934.     url       %MFString; #IMPLIED
  935.     repeatS   %SFBool;   "true"
  936.     repeatT   %SFBool;   "true"
  937.     duration  %SFTime;   "0.0"
  938.     isActive  %SFBool;   "false"
  939.     DEF       ID         #IMPLIED
  940.     USE       IDREF      #IMPLIED>
  941. ]]>
  942.  
  943. <![%BaselineProfile;[
  944.  
  945. <!ELEMENT NavigationInfo EMPTY >
  946. <!ATTLIST NavigationInfo
  947.     avatarSize      %MFFloat;  "0.25 1.6 0.75"
  948.     headlight       %SFBool;   "true"
  949.     speed           %SFFloat;  "1"
  950.     type            %MFString; #IMPLIED
  951.     visibilityLimit %SFFloat;  "0"
  952.     bind            %SFBool;   "false"
  953.     bindTime        %SFTime;   "-1"
  954.     isBound         %SFBool;   "false"
  955.     DEF             ID         #IMPLIED
  956.     USE             IDREF      #IMPLIED>
  957. ]]>
  958. <![%CoreProfile;[
  959.  
  960. <!ELEMENT NavigationInfo EMPTY >
  961. <!ATTLIST NavigationInfo
  962.     headlight       %SFBool;  "true"
  963.     bind            %SFBool;  "false"
  964.     bindTime        %SFTime;  "-1"
  965.     isBound         %SFBool;  "false"
  966.     DEF             ID        #IMPLIED
  967.     USE             IDREF     #IMPLIED>
  968. ]]>
  969.  
  970. <![%BaselineProfile;[
  971.  
  972. <!ELEMENT Normal EMPTY >
  973. <!ATTLIST Normal
  974.     vector    %MFVec3f; #IMPLIED
  975.     DEF       ID        #IMPLIED
  976.     USE       IDREF     #IMPLIED>
  977.  
  978. <!ELEMENT NormalInterpolator EMPTY >
  979. <!ATTLIST NormalInterpolator
  980.     fraction %SFFloat; "0"
  981.     key      %MFFloat; #IMPLIED
  982.     keyValue %MFVec3f; #IMPLIED
  983.     value    %MFVec3f; "0 0 0"
  984.     DEF      ID        #IMPLIED
  985.     USE      IDREF     #IMPLIED>
  986. ]]>
  987.  
  988. <!ELEMENT OrientationInterpolator EMPTY >
  989. <!ATTLIST OrientationInterpolator
  990.     fraction %SFFloat;    "0"
  991.     key      %MFFloat;    #IMPLIED
  992.     keyValue %MFRotation; #IMPLIED
  993.     value    %SFRotation; "0 0 1 0"
  994.     DEF      ID           #IMPLIED
  995.     USE      IDREF        #IMPLIED>
  996.  
  997. <![%BaselineProfile;[
  998.  
  999. <!ELEMENT PixelTexture EMPTY >
  1000. <!ATTLIST PixelTexture 
  1001.     image   %SFImage; "0 0 0"
  1002.     repeatS %SFBool;  "true"
  1003.     repeatT %SFBool;  "true"
  1004.     DEF     ID        #IMPLIED
  1005.     USE     IDREF     #IMPLIED>
  1006.  
  1007. <!ELEMENT PlaneSensor EMPTY >
  1008. <!ATTLIST PlaneSensor 
  1009.     autoOffset  %SFBool;  "true"
  1010.     enabled     %SFBool;  "true"
  1011.     maxPosition %SFVec2f; "-1 -1"
  1012.     minPosition %SFVec2f; "0 0"
  1013.     offset      %SFVec3f; "0 0 0"
  1014.     isActive    %SFBool;  "false"
  1015.     trackPoint  %SFVec3f; "0 0 0"
  1016.     translation %SFVec3f; "0 0 0"
  1017.     DEF         ID        #IMPLIED
  1018.     USE         IDREF     #IMPLIED>
  1019.  
  1020. <!ELEMENT PointLight EMPTY >
  1021. <!ATTLIST PointLight
  1022.     ambientIntensity %SFFloat;    "0"
  1023.     attenuation      %SFVec3f;    "1 0 0"
  1024.     color            %SFColor;    "1 1 1"
  1025.     intensity        %SFFloat;    "1"
  1026.     location         %SFVec3f;    "0 0 0"
  1027.     on               %SFBool;    "true"
  1028.     radius        %SFFloat;    "100"
  1029.     DEF        ID        #IMPLIED
  1030.     USE        IDREF        #IMPLIED>
  1031. ]]>
  1032.  
  1033. <!ELEMENT PointSet ( (color, coord?) | (coord, color?) )? >
  1034. <!ATTLIST PointSet
  1035.     pointSize %SFFloat; "1.0"
  1036.     DEF       ID        #IMPLIED
  1037.     USE       IDREF     #IMPLIED>
  1038.  
  1039. <!ELEMENT PositionInterpolator EMPTY >
  1040. <!ATTLIST PositionInterpolator
  1041.     fraction %SFFloat; "0"
  1042.     key      %MFFloat; #IMPLIED
  1043.     keyValue %MFVec3f; #IMPLIED
  1044.     value    %SFVec3f; "0 0 0"
  1045.     DEF      ID        #IMPLIED
  1046.     USE      IDREF     #IMPLIED>
  1047.  
  1048. <![%BaselineProfile;[
  1049.  
  1050. <!-- choice of nodes contained in PROTO constrained by valid ( %ProtoNodes; )* rather than ( ANY )* ) >  -->
  1051.  
  1052. <!ELEMENT ProtoDeclare ( field*, (ProtoDeclare|ExternProtoDeclare)*, ( %ProtoNodes; )+, ROUTE* ) >
  1053. <!ATTLIST ProtoDeclare
  1054.     name NMTOKEN    #REQUIRED> <!-- the name given to this type of PROTO -->
  1055.  
  1056. <!ELEMENT ProtoInstance ( fieldValue | %AllVRML97Fields; )* >
  1057. <!ATTLIST ProtoInstance
  1058.      name     NMTOKEN           #REQUIRED
  1059.      DEF      ID                #IMPLIED
  1060.      USE      IDREF             #IMPLIED>
  1061.  
  1062. <!ELEMENT ProximitySensor EMPTY >
  1063. <!ATTLIST ProximitySensor
  1064.     center      %SFVec3f;    "0 0 0"
  1065.     size        %SFVec3f;    "0 0 0"
  1066.     enabled     %SFBool;     "true"
  1067.     isActive    %SFBool;     "false"
  1068.     position    %SFVec3f;    "0 0 0"
  1069.     orientation %SFRotation; "0 0 1 0"
  1070.     enterTime   %SFTime;     "0"
  1071.     exitTime    %SFTime;     "0"
  1072.     DEF         ID           #IMPLIED
  1073.     USE         IDREF        #IMPLIED>
  1074. ]]>
  1075.  
  1076. <!ELEMENT ROUTE EMPTY >
  1077. <!ATTLIST ROUTE
  1078.     fromNode    IDREF   #REQUIRED
  1079.     fromField   NMTOKEN #REQUIRED
  1080.     toNode      IDREF   #REQUIRED
  1081.     toField     NMTOKEN #REQUIRED>
  1082.  
  1083. <!ELEMENT ScalarInterpolator EMPTY >
  1084. <!ATTLIST ScalarInterpolator
  1085.     fraction %SFFloat; "0"
  1086.     key      %MFFloat; #IMPLIED
  1087.     keyValue %MFFloat; #IMPLIED
  1088.     value    %SFFloat; "0"
  1089.     DEF      ID        #IMPLIED
  1090.     USE      IDREF     #IMPLIED>
  1091.  
  1092. <!ELEMENT Scene ( %SceneNodes; ) >
  1093.  
  1094. <!-- Script is similar to PROTO regarding user definition
  1095.      of multiple fields -->
  1096.  
  1097. <![%BaselineProfile;[
  1098.  
  1099. <!-- script code should be included as CDATA sections -->
  1100. <!ELEMENT Script ( #PCDATA | field )* >
  1101. <!ATTLIST Script
  1102.     url          %MFString; #IMPLIED
  1103.     directOutput %SFBool; "false"
  1104.     mustEvaluate %SFBool; "false"
  1105.       xml:space    (default | preserve) #FIXED "preserve"
  1106.       DEF ID       #IMPLIED
  1107.     USE IDREF    #IMPLIED>
  1108. ]]>
  1109.  
  1110. <!ELEMENT Shape ( (appearance, geometry?) | (geometry, appearance?) )? >
  1111. <!ATTLIST Shape
  1112.     DEF ID       #IMPLIED
  1113.     USE IDREF    #IMPLIED>
  1114.  
  1115. <![%BaselineProfile;[
  1116.  
  1117. <!ELEMENT Sound (source)? >
  1118. <!ATTLIST Sound
  1119.     direction  %SFVec3f; "0 0 1"
  1120.     intensity  %SFFloat; "1"
  1121.     location   %SFVec3f; "0 0 0"
  1122.     maxBack    %SFFloat; "10"
  1123.     maxFront   %SFFloat; "10"
  1124.     minBack    %SFFloat; "1"
  1125.     minFront   %SFFloat; "1"
  1126.     priority   %SFFloat; "0"
  1127.     spatialize %SFBool;  "true"
  1128.     DEF        ID        #IMPLIED
  1129.     USE        IDREF     #IMPLIED>
  1130.  
  1131. <!ELEMENT Sphere EMPTY >
  1132. <!ATTLIST Sphere
  1133.     radius %SFFloat; "1"
  1134.     DEF    ID        #IMPLIED
  1135.     USE    IDREF     #IMPLIED>
  1136.  
  1137. <!ELEMENT SphereSensor EMPTY >
  1138. <!ATTLIST SphereSensor 
  1139.     autoOffset %SFBool;     "true"
  1140.     enabled    %SFBool;     "true"
  1141.     offset     %SFRotation; "0 1 0 0"
  1142.     isActive   %SFBool;     "false"
  1143.     rotation   %SFRotation; "0 1 0 0"
  1144.     trackPoint %SFVec3f;    "0 0 0"
  1145.     DEF        ID           #IMPLIED
  1146.     USE        IDREF        #IMPLIED>
  1147.  
  1148. <!ELEMENT SpotLight EMPTY >
  1149. <!ATTLIST SpotLight
  1150.     ambientIntensity %SFFloat; "0"
  1151.     attenuation      %SFVec3f; "1 0 0"
  1152.     beamWidth        %SFFloat; "1.570796"
  1153.     color            %SFColor; "1 1 1"
  1154.     cutOffAngle      %SFFloat; ".785398"
  1155.     direction        %SFVec3f; "0 0 -1"
  1156.     intensity        %SFFloat; "1"
  1157.     location         %SFVec3f; "0 0 0"
  1158.     on               %SFBool;  "true"
  1159.     radius           %SFFloat; "100"
  1160.     DEF              ID        #IMPLIED
  1161.     USE              IDREF     #IMPLIED>
  1162.  
  1163. <!-- StringSensor:  convert \r and \b to integer values -->
  1164.  
  1165. <!ELEMENT StringSensor EMPTY >
  1166. <!ATTLIST StringSensor 
  1167.     enteredText        %SFString;    #IMPLIED
  1168.     finalText        %SFString;    #IMPLIED
  1169.     terminationText        %SFString;    "\r"
  1170.     deletionCharacter    %SFInt32;    "\b"
  1171.     enabled            %SFBool;    "true"
  1172.     isActive        %SFBool;    "false"
  1173.     DEF            ID        #IMPLIED
  1174.     USE            IDREF        #IMPLIED>
  1175.  
  1176. <!ELEMENT Switch (choice)? >
  1177. <!ATTLIST Switch
  1178.     whichChoice %SFInt32; "-1"
  1179.     DEF         ID        #IMPLIED
  1180.     USE         IDREF     #IMPLIED>
  1181.  
  1182. <!ELEMENT Text (fontStyle)? >
  1183. <!ATTLIST Text
  1184.     string    %MFString; #IMPLIED
  1185.     length    %MFFloat;  #IMPLIED
  1186.     maxExtent %SFFloat;  "0.0"
  1187.     DEF       ID         #IMPLIED
  1188.     USE       IDREF      #IMPLIED>
  1189. ]]>
  1190.  
  1191. <!ELEMENT TextureCoordinate EMPTY >
  1192. <!ATTLIST TextureCoordinate
  1193.     point     %MFVec2f;  #IMPLIED
  1194.     DEF       ID         #IMPLIED
  1195.     USE       IDREF      #IMPLIED>
  1196.  
  1197. <![%BaselineProfile;[
  1198.  
  1199. <!ELEMENT TextureTransform EMPTY >
  1200. <!ATTLIST TextureTransform
  1201.     center      %SFVec2f; "0 0"
  1202.     rotation    %SFFloat; "0"
  1203.     scale       %SFVec2f; "1 1"
  1204.     translation %SFVec2f; "0 0"
  1205.     DEF         ID        #IMPLIED
  1206.     USE         IDREF     #IMPLIED>
  1207. ]]>
  1208.  
  1209. <!ELEMENT TimeSensor EMPTY >
  1210. <!ATTLIST TimeSensor
  1211.     cycleInterval %SFTime;  "1.0"
  1212.     enabled       %SFBool;  "true"
  1213.     loop          %SFBool;  "false"
  1214.     startTime     %SFTime;  "0"
  1215.     stopTime      %SFTime;  "0"
  1216.     cycleTime     %SFTime;  "0"
  1217.     fraction      %SFFloat; "0"
  1218.     isActive      %SFBool;  "false"
  1219.     time          %SFTime;  "0"
  1220.     DEF           ID         #IMPLIED
  1221.     USE           IDREF      #IMPLIED>
  1222.  
  1223. <!ELEMENT TouchSensor EMPTY >
  1224. <!ATTLIST TouchSensor
  1225.     enabled      %SFBool;  "true"
  1226.     hitNormal    %SFVec3f; "0 0 1"
  1227.     hitPoint     %SFVec3f; "0 0 0"
  1228.     hitTexCoord  %SFVec2f; "0 0"
  1229.     isActive     %SFBool;  "false"
  1230.     isOver       %SFBool;  "false"
  1231.     touchTime    %SFTime;  "0"
  1232.     DEF          ID        #IMPLIED
  1233.     USE          IDREF     #IMPLIED>
  1234.  
  1235. <!ELEMENT Transform (children)? >
  1236. <!ATTLIST Transform 
  1237.     center           %SFVec3f;    "0 0 0"
  1238.     rotation         %SFRotation; "0 0 1 0"
  1239.     scale            %SFVec3f;    "1 1 1"
  1240.     scaleOrientation %SFRotation; "0 0 1 0"
  1241.     translation      %SFVec3f;    "0 0 0"
  1242.     bboxCenter       %SFVec3f;    "0 0 0"
  1243.     bboxSize         %SFVec3f;    "-1 -1 -1"
  1244.     DEF              ID           #IMPLIED 
  1245.     USE              IDREF        #IMPLIED >
  1246.  
  1247. <!--    Note that USE node does not provide any type checking of content nodes.
  1248.     Utilizing USE attributes in the nodes themselves is preferred, because
  1249.         that approach provides type checking. -->
  1250.  
  1251. <!ELEMENT USE EMPTY >
  1252. <!ATTLIST USE
  1253.     node         IDREF        #REQUIRED>
  1254.  
  1255. <!ELEMENT Viewpoint EMPTY >
  1256. <!ATTLIST Viewpoint
  1257.     fieldOfView %SFFloat;    "0.785398"
  1258.     jump        %SFBool;     "true"
  1259.     orientation %SFRotation; "0 0 1 0"
  1260.     position    %SFVec3f;    "0 0 10"
  1261.     description %SFString;   #IMPLIED
  1262.     bind        %SFBool;     "false"
  1263.     bindTime    %SFTime;     "-1"
  1264.     isBound     %SFBool;     "false"
  1265.     examine     %SFVec3f;    "0 0 0"
  1266.     DEF         ID           #IMPLIED
  1267.     USE         IDREF        #IMPLIED>
  1268. <!-- examine (point of rotation) is proposed addition, maybe belongs in NavigationInfo instead... -->
  1269.  
  1270. <![%BaselineProfile;[
  1271.  
  1272. <!ELEMENT VisibilitySensor EMPTY >
  1273. <!ATTLIST VisibilitySensor 
  1274.     center    %SFVec3f; "0 0 0"
  1275.     enabled   %SFBool;  "true"
  1276.     size      %SFVec3f; "0 0 0"
  1277.     enterTime %SFTime;  "0.0"
  1278.     exitTime  %SFTime;  "0.0"
  1279.     isActive  %SFBool;  "false"
  1280.     DEF       ID        #IMPLIED
  1281.     USE       IDREF     #IMPLIED>
  1282. ]]>
  1283.  
  1284. <!ELEMENT WorldInfo EMPTY >
  1285. <!ATTLIST WorldInfo 
  1286.     info  %MFString; #IMPLIED
  1287.     title %SFString; #IMPLIED
  1288.     DEF ID       #IMPLIED
  1289.     USE IDREF    #IMPLIED>
  1290.  
  1291. <!ELEMENT X3D    ( Header? , Scene ) >
  1292.  
  1293.  
  1294. <!-- ***** X3D Extensions,  under development ***** -->
  1295.  
  1296.  
  1297. <![%X3dExtensions;[
  1298.  
  1299. <!-- ***** MultiTexture Extensions proposal by Rob Glidden ***** -->
  1300.  
  1301.  
  1302. <!-- Tool problems when invoking  XHTML DTD here for img | object | iframe | div
  1303.  
  1304. <!ENTITY img PUBLIC
  1305.     "-//W3C//DTD XHTML 1.0 Frameset//EN"
  1306.     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
  1307.  
  1308. <!ENTITY object PUBLIC
  1309.     "-//W3C//DTD XHTML 1.0 Frameset//EN"
  1310.     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
  1311.  
  1312. <!ENTITY iframe PUBLIC
  1313.     "-//W3C//DTD XHTML 1.0 Frameset//EN"
  1314.     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
  1315.  
  1316. <!ENTITY div PUBLIC
  1317.     "-//W3C//DTD XHTML 1.0 Frameset//EN"
  1318.     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
  1319. -->
  1320.  
  1321. <!-- Tool problems when  invoking Structured Vector Graphics (SVG) DTD for svg;
  1322.     also have more recent DTDs that need to be checked...
  1323.  
  1324. <!ENTITY svg SYSTEM
  1325.     "http://www.w3.org/Graphics/SVG/SVG-19991203.dtd">
  1326.  
  1327. <!ELEMENT Surface (( %MaterialNodes; | img | object | iframe | div | svg | Scene3D ), TextureTransform?) >
  1328.  
  1329. -->
  1330.  
  1331.  
  1332. <!-- No followup effort has yet tried to compose the various multitexture proposals.
  1333.  
  1334. <!ELEMENT Surface (( %MaterialNodes; | Scene3D ), TextureTransform?) >
  1335. <!ATTLIST Surface
  1336.     textureTransform          IDREF     #IMPLIED
  1337.     mappingSurfaceCoordinates IDREF    #IMPLIED
  1338.     repeatS   %SFBool;  "true"
  1339.     repeatT   %SFBool;  "true"
  1340.     width     %SFInt32; "0"
  1341.     height    %SFInt32; "0"
  1342.     DEF       ID        #IMPLIED
  1343.     USE       IDREF     #IMPLIED>
  1344.  
  1345. <!ELEMENT Scene3D ((Background, Viewpoint?) | (Viewpoint, Background?))? >
  1346. <!ATTLIST Scene3D
  1347.     Root       IDREF #REQUIRED
  1348.     Viewpoint  IDREF #REQUIRED
  1349.     Background IDREF #REQUIRED
  1350.     RenderInfo IDREF #REQUIRED
  1351.     DEF        ID    #IMPLIED
  1352.     USE        IDREF #IMPLIED>
  1353.  
  1354. <!ELEMENT MultiTexture ((Material, Surface*) | (Surface+, Material?))? >
  1355. <!ATTLIST MultiTexture
  1356.     diffuseSurface    IDREF  #IMPLIED
  1357.     ambientSurface    IDREF  #IMPLIED
  1358.     bumpSurface       IDREF  #IMPLIED
  1359.     material          IDREF  #IMPLIED
  1360.     reflectionType (USER | USERCUBIC | USERSPHERE | REFLECT | CUBIC | SPHERE) "USER"
  1361.     reflectionSurfaces IDREFS #IMPLIED
  1362.     maskSurface       IDREF  #IMPLIED
  1363.     DEF               ID     #IMPLIED
  1364.     USE               IDREF  #IMPLIED>
  1365.  
  1366. <!ELEMENT MultiTextureTree ( RenderOp ) >
  1367. <!ATTLIST MultiTextureTree
  1368.     DEF ID       #IMPLIED
  1369.     USE IDREF    #IMPLIED>   
  1370.  
  1371. -->
  1372.  
  1373. <!-- what is Vector ??
  1374.  
  1375. <!ELEMENT RenderOp ((Surface | RenderOp), (Script, Vector?, Color? )? ) >
  1376.  
  1377. <!ELEMENT RenderOp ((Surface | RenderOp), (Script, Color? )? ) >
  1378. <!ATTLIST RenderOp
  1379.     factor %SFFloat; ".5"
  1380.     type (ADD | MODULATE | MODULATE2 | LINEAR | SCRIPT) #REQUIRED
  1381.     DEF    ID    #IMPLIED
  1382.     USE    IDREF #IMPLIED>
  1383. -->
  1384.  
  1385. <!-- Curtis Beeson's alternative:  lightweight multitexture proposal
  1386.      http://www.web3d.org/WorkingGroups/x3d-contributors/hypermail/1999/1855.html
  1387.  
  1388. Appearance {
  1389.         exposedField SFMaterial diffuseMaterial
  1390.         exposedField SFTexture  lightMap
  1391.         exposedField SFTexture  diffuseMap
  1392.         exposedField SFTexture  envMap
  1393.         exposedField SFTexture  envMapMask
  1394.         exposedField SFTextureTransform lightMapTransform
  1395.         exposedField SFTextureTransform diffuseMapTransform
  1396.         exposedField SFTextureTransform envMapTransform
  1397.         exposedField SFTextureTransform envMapMaskTransform
  1398.         exposedField SFEnum envMapType { SPHERICAL | CUBIC }
  1399. }
  1400. -->
  1401.  
  1402. <!--
  1403. <!ELEMENT MultiTextureAppearance
  1404.     (((%MaterialNodes;), ((%TextureNodes;) | (%TextureTransformNodes;))*) |
  1405.      (((%TextureNodes;) | (%TextureTransformNodes;))+,
  1406.           (%MaterialNodes;), 
  1407.           ((%TextureNodes;) | (%TextureTransformNodes;))*)
  1408.     )? >
  1409. <!ATTLIST MultiTextureAppearance
  1410.     diffuseMaterial         IDREF #IMPLIED
  1411.     lightMap                IDREF #IMPLIED
  1412.     diffuseMap              IDREF #IMPLIED
  1413.     envMap                  IDREF #IMPLIED
  1414.     envMapMask              IDREF #IMPLIED
  1415.     lightMapTransform       IDREF #IMPLIED
  1416.     diffuseMapTransform     IDREF #IMPLIED
  1417.     envMapTransform         IDREF #IMPLIED
  1418.     envMapMaskTransform     IDREF #IMPLIED
  1419.     envMapType (SPHERICAL|CUBIC)  #IMPLIED
  1420.     DEF ID      #IMPLIED
  1421.     USE IDREF   #IMPLIED>
  1422.  
  1423. IndexedFaceSet {
  1424.   eventIn       MFInt32 set_colorIndex
  1425.   eventIn       MFInt32 set_coordIndex
  1426.   eventIn       MFInt32 set_normalIndex
  1427.   eventIn       MFInt32 set_texCoordIndex
  1428.   exposedField  SFNode  color             NULL
  1429.   exposedField  SFNode  coord             NULL
  1430.   exposedField  SFNode  normal            NULL
  1431.   field         SFBool  ccw               TRUE
  1432.   field         MFInt32 colorIndex        []        # [-1,)
  1433.   field         SFBool  colorPerVertex    TRUE
  1434.   field         SFBool  convex            TRUE
  1435.   field         MFInt32 coordIndex        []        # [-1,)
  1436.   field         SFFloat creaseAngle       0         # [0,)
  1437.   field         MFInt32 normalIndex       []        # [-1,)
  1438.   field         SFBool  normalPerVertex   TRUE
  1439.   field         SFBool  solid             TRUE
  1440.  
  1441.   (begin new stuff)
  1442.   exposedField  SFNode  lightTexCoord        NULL
  1443.   field         MFInt32 lightCoordIndex      []        # [-1,)
  1444.   exposedField  SFNode  diffuseTexCoord      NULL
  1445.   field         MFInt32 diffusetexCoordIndex []        # [-1,)
  1446.   exposedField  SFNode  envTexCoord          NULL
  1447.   field         MFInt32 envTexCoordIndex     []        # [-1,)
  1448.   exposedField  SFNode  envMaskTexCoord      NULL
  1449.   field         MFInt32 envMaskTexCoordIndex []        # [-1,)
  1450. }
  1451.  
  1452.  
  1453. <!ELEMENT MultiTextureIndexedFaceSet (Color?, Coordinate*, Normal?, TextureCoordinate*) >
  1454. <!ATTLIST MultiTextureIndexedFaceSet
  1455.     ccw             %SFBool;  "true"
  1456.     colorIndex      %MFInt32; #IMPLIED
  1457.     colorPerVertex  %SFBool;  "true"
  1458.     convex          %SFBool;  #FIXED    "true"
  1459.     coordIndex      %MFInt32; #IMPLIED
  1460.     creaseAngle     %SFFloat; "0"
  1461.     normalIndex     %MFInt32; #IMPLIED
  1462.     normalPerVertex %SFBool;  "true"
  1463.     solid           %SFBool;  "true"
  1464.     texCoordIndex   %MFInt32; #IMPLIED
  1465.  
  1466.     lightTexCoord        IDREF     #IMPLIED
  1467.     lightCoordIndex      %MFInt32; #IMPLIED
  1468.     diffuseTexCoord      IDREF     #IMPLIED
  1469.     diffusetexCoordIndex %MFInt32; #IMPLIED
  1470.     envTexCoord          IDREF     #IMPLIED
  1471.     envTexCoordIndex     %MFInt32; #IMPLIED
  1472.     envMaskTexCoord      IDREF     #IMPLIED
  1473.     envMaskTexCoordIndex %MFInt32; #IMPLIED
  1474.  
  1475.     DEF             ID        #IMPLIED
  1476.     USE             IDREF     #IMPLIED>
  1477. -->
  1478.  
  1479. ]]>
  1480.  
  1481.