X3D schema changelog: http://www.web3d.org/specifications/x3d-schema-changelog.txt Version control: http://x3d.svn.sourceforge.net/viewvc/x3d/www.web3d.org/specifications References: ================================================================================================= - Final schema: http://www.web3d.org/specifications/x3d-3.2.xsd - Schema extensions: http://www.web3d.org/specifications/x3d-3.2-Web3dExtensionsPublic.xsd http://www.web3d.org/specifications/x3d-3.2-Web3dExtensionsPrivate.xsd - Documentation http://www.web3d.org/x3d/content/X3dSchemaDocumentation3.2/x3d-3.2.html ================================================================================================= - Final schema: http://www.web3d.org/specifications/x3d-3.1.xsd - Schema extensions: http://www.web3d.org/specifications/x3d-3.1-Web3dExtensionsPublic.xsd http://www.web3d.org/specifications/x3d-3.1-Web3dExtensionsPrivate.xsd - Documentation http://www.web3d.org/x3d/content/X3dSchemaDocumentation3.1/x3d-3.1.html ================================================================================================= - Final schema: http://www.web3d.org/specifications/x3d-3.0.xsd - Schema extensions: http://www.web3d.org/specifications/x3d-3.0-Web3dExtensionsPublic.xsd http://www.web3d.org/specifications/x3d-3.0-Web3dExtensionsPrivate.xsd - Documentation http://www.web3d.org/x3d/content/X3dSchemaDocumentation3.0/x3d-3.0.html ================================================================================================= Author: Don Brutzman Referencing the X3D Schema in X3D source scene: ============================================================================= Additional References: - XML Schema validator: http://www.w3.org/2001/03/webdata/xsv - X3D tagset DTDs: http://www.web3d.org/specifications/x3d-3.0.dtd - http://www.web3d.org/specifications/x3d-3.0.dtd - http://www.web3d.org/specifications/x3d-3.0-InputOutputFields.dtd - http://www.web3d.org/specifications/x3d-3.0-Web3dExtensions.dtd - Revised Web3D Extensions: http://www.web3d.org/x3d-content/x3d-3.0-Web3dExtensions.dtd - Related VRML specs: http://www.web3D.org/technicalinfo/specifications/vrml97 http://web3d.org/vrtp/dis-java-vrml http://www.geovrml.org/1.0 http://h-anim.org/spec1.1 http://www.blaxxun.com/support/developerguide/developer/contact/3d/nurbs/spec/nurbsproposal.html - XML Schema DTD: http://www.w3.org/2000/10/XMLSchema.dtd - XML Schema schema: http://www.w3.org/2000/10/XMLSchema.xsd - XML Datatypes DTD: http://www.w3.org/2000/10/datatypes.dtd - XML Datatypes schema: http://www.w3.org/2000/10/datatypes.xsd - XML Schema Primer: http://www.w3.org/TR/2000/WD-xmlschema-0-20000922 - XML Schema Structures: http://www.w3.org/TR/2000/WD-xmlschema-1-20000922 - XML Schema Datatypes: http://www.w3.org/TR/2000/WD-xmlschema-2-20000922 - XML Schema group: http://www.w3.org/XML/Schema - XML Schema quality checker: http://alphaworks.ibm.com/tech/xmlsqc - Interface hierarchy: http://www.web3d.org/spec_editors/abstract/Part01/concepts.html#InterfaceHierarchy - X3D Scene Access http://www.web3d.org/spec_editors/abstract/Part02 Interface (SAI): http://www.web3d.org/spec_editors/bindings - Robin Cover's pages: http://www.oasis-open.org/cover/schemas.html - Best practices: http://www.xfront.com/BestPractices.html - Xeena XML editor: http://www.alphaWorks.ibm.com/tech/xeena - Xeena xsd profile: http://www.web3D.org/x3d/content/XMLSchema.profile - X3D-Edit: http://www.web3D.org/x3d/content/README.X3D-Edit.html - X3D-Schema-Edit: http://www.web3D.org/x3d/content/X3D-Schema-Edit.bat - X3D Contributors: http://www.web3D.org/x3d.html - _Professional XML Schemas_ by Kurt Cagle, Jon Duckett, Oliver Griffin, Stephen Mohr, Francis Norton, Nik Ozu, Ian Stokes-Rees, Jeni Tennison and Kevin Williams, Wrox Press Ltd., Birmingham UK, 2001. http://www.wrox.com/Books/Book_Details.asp?ISBN=1861005474 - _Definitive XML Schema_, Priscilla Walmsley, Prentice Hall, Upper Saddle River New Jersey, 2002. http://www.phptr.com W3C XmlSchema.dtd revisions: - None needed. Using original W3C Schema and Datatypes DTDs listed above. ============================================================================= X3D schema update activity: known problems: - check TODO issues in schema - TODO: apply field names as annotations throughout - TODO: apply range restrictions to simple types throughout - TODO: add/update appinfo - TODO: need to fix containerField default for Viewport to be viewport - TODO: need to fix containerField default for Layout to be layout 5 May 2008, brutzman - Add X3dBoundedObject interface, bboxSize/bboxCenter to HAnimHumanoid - Remove url values for draft versions in header comments, no longer supported - added HAnimDisplacer to SceneGraphFragmentContentModel, thus allowing inclusion in field/fieldValue 19 April 2008, brutzman - Added missing data-type enumerations to (v3.1, 3.2 only) SFMatrix4d MFMatrix4d SFMatrix4f MFMatrix4f SFVec4d MFVec4d SFVec4f MFVec4f 17 April 2008, Changhua Wu, brutzman - removed duplicate componentNames (v3.2 only) Followers Layering Layout RigidBodyPhysics ParticleSystems PickingSensor 30 March 2008, brutzman - add GeoTransform to ChildContentModelGeoSpatial for v3.2, allowing use with other children nodes 13 March 2008, brutzman - refactor to allow MetadataSet to contain multiple Metadata* nodes 7 February 2008, mccann, puk, brutzman - added GeoProximitySensor node - TODO bug submitted that 'center' field in parent type X3DEnvironmentalSensorNode is inappropriate and needs refactoring 22 November 2007, puk, brutzman - set X3DRigidJointNode axis default to 0 1 0 - renamed containerField annotation collidables to collider 22 November 2007, puk - forceOutput changed back to mustOutput 21 November 2007, brutzman - removed SurfaceEmitter 'coordIndex' and 'set_coordIndex' fields - removed VolumeEmitter 'internal' field - added ForcePhysicsModel 'force' field to enumeration list of allowed inputOutputAccessType values 5 November 2007, brutzman - improved content model ParticleSystem 4 November 2007, brutzman - simplified CollisionSensor content model, eliminating outputOnly MFNode fields intersections, contacts - revised Contact content model - LinePicker, PrimitivePicker, VolumePicker renamed to LinePickSensor, PrimitivePickSensor, VolumePickSensor - disableTime set to SFTime rather than SFFloat 28 October 2007, brutzman - fixed containerField default for LayerSet 15 October 2007, brutzman - GeoTransform geoCenter field changed from SFVec3f to SFVec3d 7-8 October 2007, brutzman - changed for metadata children to default maxOccurs="1" since it is SFNode throughout - removed Contour2D, ContourPolyline2D from GeometryContentModelNurbs since these are only used internally to trim Nurbs nodes and are not used as part of the GeometryContentModel - ForcePhysicsModel field 'gravity' renamed to 'force' 6 October 2007, brutzman, williams - v3.2 added ClipPlane, DISEntityManager, DISEntityTypeMapping, EaseInEaseOut, SplinePositionInterpolator, SplinePositionInterpolator2D, SplineScalarInterpolator, SquadOrientationInterpolator - v3.1, v3.2 renamed Composed3DTexture to ComposedTexture3D - v3.1, v3.2 renamed Image3DTexture to ImageTexture3D - v3.1, v3.2 renamed Pixel3DTexture to PixelTexture3D - v3.1, v3.2 added otherInterfaces X3DUrlObject to ImageTexture3D - v3.2 added TransformSensor - v3.2 renamed GravityPhysicsModel to ForcePhysicsModel - v3.2 added TwoSidedMaterial 30 September 2007, brutzman - removed outputOnly fields StringSensor enteredText, FinalText - v3.2 added containerField (field name) values for X3DNBodyCollisionSpaceNode, X3DRigidJointNode, RigidBody, LayoutGroup 24 September 2007, brutzman - moved url field, X3DUrlObject interface from X3DSoundSourceNode to AudioClip, MovieTexture - completed various initializeOnly, inputOutput accessType enumeration values 23 September 2007, brutzman - v3.2 added GeoTransform - v3.2 added new field-name enumerations to inputOnlyAccessTypes and outputOnlyAccessTypes for 3.0, 3.1 and 3.2 schemas: - set version number to 3.0.2, 3.1.2, 3.2.2 respectively to indicate alignment with v3.2 - removed outputOnly field isActive from X3DSensorNode - removed outputOnly fields isActive and collideTime from Collision - removed outputOnly fields elapsedTime, isActive, isPaused from X3DTimeDependentNode - removed various outputOnly fields from DIS nodes - removed outputOnly fields set_bind, bindTime, isBound from X3DBindableNode - removed outputOnly field isOver from X3DPointingDeviceSensorNode - removed outputOnly fields isSelected, isValid and inputOnly field activate from X3DShaderNode - removed outputOnly fields loadTime, isLoaded and progress from LoadSensor - removed erroneous field isFilled from Rectangle2D - removed inputOnly field set_fraction from X3DInterpolatorNode - removed inputOnly fields set_fraction, previous, next from X3DSequencerNode - removed inputOnly, outputOnly fields from EventUtility nodes - removed inputOnly fields set_* from various nodes and node types - removed outputOnly fields *_changed and is* from various nodes and node types 22 September 2007, brutzman - v3.2 complete, added PickingSensor, Followers and ParticleSystems components - v3.2 added enumeration values for componentNames 8 September 2007, brutzman - v3.2 added RigidBodyPhysics component - updated OasisXmlCatalogX3D.xml for 3.2 contructs 2-3 September 2007, brutzman - began work on version 3.2, changes are to all schema unless annotated otherwise - renamed ChildContentModeCore to ChildContentModelCore - v3.2 modified Viewpoint to be of (newly added) type X3DViewpointNode - v3.2 added Layer, Layout components 10 January 2006 grieve, brutzman - changed content model for Contour2D from [NurbsCurve|ContourPolyline2D] to [NurbsCurve2D|ContourPolyline2D] 5 January 2006 brutzman - added bboxCenter, bboxSize to X3DShapeNode 2-3 January 2006 hudson, brutzman - corrected regular expressions (regexes) for SF/MF Matrix 3f-4d, MFVec4f, MFVec4d types - changed IMPORT InlineDEF to inlineDEF 31 December 2005 brutzman - MultiTexture content model: added ProtoInstance, removed MultiTexture - MultiTextureTransform content model corrected (TextureTransform or ProtoInstance) 29-30 December 2005 brutzman - added accessType information for various fields, added completeness checks to BuildSpecificationInterfacesFromSchema.xslt - fixed various DTD/schema mismatches discovered by checking accessType definitions - FloatVertexAttribute, Matrix3VertexAttribute, Matrix4VertexAttribute: X3DVertexAttributeNode given containerField attrib, added to X3DComposedGeometryNode - added containerField values to GeoOrigin, HAnimDisplacer, Script - HAnimDisplacer weight default value set to 0.0 - GeoElevationGrid removed set_yScale - X3DShaderNode: added containerField shaders - AppearanceChildContentModelNoProtoInstance: added ComposedShader, PackagedShader, ProgramShader - removed unneeded comment block: # - removed unneeded blocks: ContainedNodeLabel tags help distinguish between the different uses of node siblings that might otherwise share the same node type. These tags are labels in the scene graph, not instantiable nodes. Because these tags do not need to be instantiated as scene graph nodes, they do not have DEF or USE values like X3DNodes. ContainedNodeLabel tags are sometimes referred to as "wrapper tags." Note that ContainedNodeLabel tags are not needed when node siblings have different types. Thus "wrapper tags" are not needed for most child nodes in the VRML 97 node set. X3DArrayField is equivalent to MF (Multiple Field) simple non-Node types in the VRML 97 Specification. 27 December 2005 brutzman - (v3.1 only) added Texturing3D component: X3DTexture3DNode, Composed3DTexture, Image3DTexture, Pixel3DTexture, TextureCoordinate3D, TextureCoordinate4D, TextureMatrixTransform, TextureTransform3D 26 December 2005 brutzman - (v3.1 only) Added CADAssembly, CADLayer to ChildContentModelFull - (v3.1 only) Added QuadSet, IndexedQuadSet to GeometryContentModelCAD - (v3.1 only) Renamed GeometryContentModel2DFull to GeometryContentModel2D - (v3.1 only) Added bboxCenter, bboxSize, name to CADFace - added controlPoint to X3DNurbsControlCurveNode - changed NurbsCurve2D, ContourPolyline2D to X3DNurbsControlCurveNode, removed local definition of controlPoint - (v3.1 only) componentNames: added CubeMapTexturing, Texturing3D, Shaders - (v3.1 only) added Shaders component: X3DProgrammableShaderObject, X3DShaderNode, X3DVertexAttributeNode, ComposedShader, FloatVertexAttribute, Matrix3VertexAttribute, Matrix4VertexAttribute, PackagedShader, ProgramShader, ShaderPart, ShaderProgram, shaderPartTypeValues - (v3.1 only) Added CubeMapTexturing component: X3DEnvironmentTextureNode, ComposedCubeMapTexture, GeneratedCubeMapTexture, ImageCubeMapTexture - changed X3DScriptNode list of contained Metadata nodes to ChildContentModeCore 22 December 2005 brutzman - NurbsTextureCoordinate added to SceneGraphFragmentContentModel - (v3.1 only) LOD: added initializeOnly field forceTransitions - (v3.1 only) added X3dFieldTypes SFMatrix3d MFMatrix3d SFMatrix3f MFMatrix3f SFMatrix4d MFMatrix4d SFMatrix4f MFMatrix4f SFVec4d MFVec4d SFVec4f MFVec4f 21 December 2005 puk, brutzman - removed solid field from Circle2D since it is line-based, not polygonal - added enabled field to EspduTranform, ReceiverPdu, SignalPdu, TransmitterPdu - (v3.1 only) DirectionalLight default value for global remains true, PointLight and Spotlight default value for global changed to false - LineProperties: added inputOutput field applied 19 December 2005 brutzman - (v3.1 only) FogCoordinate default containerField value set to fogCoord - (v3.1 only) X3DCoordinateNode containerField moved to implementing nodes, since value may vary - (v3.1 only) FogCoordinate added to ColorCoordinateNormalTexCoordContentModel and ColorNormalTexCoordContentModel. FogCoordinate only allowed to follow Coordinate/Color/Normal/TextureCoordinate since any-order content model is too complex otherwise. - (v3.1 only) Text node: added outputOnly fields lineBounds and textBounds - (v3.1 only) X3DLightNode: added inputOutput field global - (v3.1 only) LOD node: added outputOnly field level_changed - (v3.1 only) NavigationInfo node: added inputOutput field transitionTime, outputOnly field transitionComplete - (v3.1 only) added X3DFogObject 18 December 2005 victor, brutzman - IndexedTriangleStripSet stripCount field removed - Polypoint2D points field renamed to point - EspduTransform articulationParameterIdPartAttachedArray field renamed to articulationParameterIdPartAttachedToArray - added NavigationInfo transitionType MFString, default "ANIMATE" - added solid field to Text, ArcClose2D, Circle2D, Disk2D, Rectangle2D, TriangleSet2D 16 December 2005 ecer, brutzman - X3DSoundSourceNode duration_changed type changed to SFTime - CylinderSensor rotation_changed type changed to SFRotation - IntegerTrigger triggerValue type changed to SFInt32 - LOD center type changed to SFVec3f - PointLight location type changed to SFVec3f - Rectangle2D size type changed to SFVec2f - SphereSensor rotation_changed type changed to SFRotation - SpotLight location, direction type changed to SFVec3f - TimeTrigger triggerTime type changed to SFTime - ROUTE fromField, toField type changed to xs:NMTOKEN - GeoElevationGrid xSpacing, zSpacing type basis changed to SFDouble, default set to 1 - GeoLOD center type changed to SFVec3d - GeoLOD range type changed to SFFloat 4 December 2005 hudson, brutzman - make X3D version required rather than optional - added EspduTransform fields collisionType, detonationLocation, detonationRelativeLocation, detonationResult, eventApplicationID, eventEntityID, eventNumber, eventSiteID 20 November 2005 victor, ecer, brutzman - EspduTransform firingRange type changed from SFInt32 to SFFloat - DirectionalLight direction type changed from MFVec3f to SFVec3f 14 November 2005 brutzman - added CADGeometry component, matching 3.1 specification - added enumeration value for CADInterchange Profile, matching 3.1 specification 22 October 2005 brutzman - added enumeration type x3dVersion to allow or "3.0" in x3d-3.1.xsd. also refactored x3d-3.0.xsd as enumeration, continue to only allow "3.0" as allowed value. - relaxed order of GeoElevationGrid children (GeoOrigin, Color, Normal, TextureCoordinate) - corrected GeoViewpoint child GeoOrigin to be a reference, allowing proper validation of Geospatial scenes - relaxed GeoMetadata content model to permit zero child nodes - added FontStyle to allowed content for field, fieldValue, ProtoBody (SceneGraphFragmentContentModel) - added speed attribute to MovieTexture - rounded up pi/2 maxInclusive values to 1.5708 21 October 2005 brutzman - added CAD profile: X3DProductStructureChildNode, CADAssembly, CADFace, CADLayer, CADPart, IndexedQuadSet, QuadSet - Node signature for 32.4.2 CADFace missing bbox fields and X3DBoundedObject interface, bug posted 21 October 2005 brutzman - updated x3d-3.0.xsd (schema version 3.0.0) as x3d-3.0.xsd (schema version 3.0.1), incorporating all changes to date. This will become the X3D Amendment 1 version of the X3D 3.0 schema. - The X3D Amendment 1 schema itself is fully backwards compatible and can validate but also adds additional v3.1 nodes. It is provided separately as x3d-3.1.xsd (schema version 3.1.1). - Thus the second digit in each schema version is the X3D amendment supported for validation, and the last digit in each schema version is the X3D amendment revision of the schema. 21 October 2005 grieve, brutzman - moved otherInterfaces attribute (used to indicate multiple inheritance) into appinfo annotation, rather than as an improper attribute. These multiple interfaces are informational for application/API generation tools, since complexType doesn't allow definition of multiple interfaces. A more verbose (but probably more confusing) approach would be to rename the complexType definitions. In any case, each complexType does include all attributes and child-element content defined by each of the implemented interfaces. 10 October 2005 brutzman - MetadataSet choice of children maxOccurs changed from 0 to unbounded - Refactored AppearanceChildContentModelLooseNoProtoInstance inside AppearanceChildContentModelLoose - added MultiTextureTransform to AppearanceChildContentModelLooseNoProtoInstance - added Appearance to ChildContentModelInterchange - bound X3DNode type to ChildContentModelCore (Metadata nodes) and single child Metadata-node choice - added ChildContentModelCore (Metadata nodes) to SceneGraphFragmentContentModel, field and fieldValue - rearranged definitions for HAnimHumanoid and ChildContentModelHumanoidAnimation for proper validation - rearranged definitions for SceneGraphFragmentContentModel and SceneGraphFragmentWithPrototypeDeclarationsContentModel for proper validation - Provided NurbsPatchSurface with content model Coordinate, CoordinateDouble, TextureCoordinate, TextureCoordinateGenerator,NurbsTextureCoordinate, ProtoInstance - added uClosed, vClosed to X3DNurbsSurfaceGeometryNode - added Coordinate, CoordinateDouble to NurbsCurve, NurbsOrientationInterpolator, NurbsPositionInterpolator, NurbsSurfaceInterpolator - added Contour2D to GeometryContentModelNurbs, also added default containerField trimmingContour - added NurbsCurve, ContourPolyline2D as content model for Contour2D - NurbsCurve: added closed field, removed controlPoint attribute - NurbsCurve2D: added closed field, changed controlPoint to MFVec2d - NurbsSet: corrected content model to contain NurbsSurface nodes, proper interfaces - NurbsTextureCoordinate: added controlPoint - NurbsSweptSurface: added one (ContourPolyline2D, NurbsCurve2D) node and one NurbsCurve node to content model - NurbsSwungSurface: added two (ContourPolyline2D, NurbsCurve2D) nodes to content model - NurbsTextureCoordinate: changed weight to MFFloat - NurbsTrimmedSurface: added content model Contour2D, Coordinate, CoordinateDouble, TextureCoordinate, TextureCoordinateGenerator, NurbsTextureCoordinate 2 October 2005 brutzman - began work on schema corrections to better validate under XMLSpy and other tools - AppearanceChildContentModel is problematic due to combinatoric explosion of design pattern for FillProperties, LineProperties, ImageTexture, PixelTexture, MovieTexture, TextureTransform, and ProtoInstance - replaced model for Appearance with AppearanceChildContentModelLoose, which only validates legitimate child nodes but does not prevent duplicate entries. This is an unfortunate limitation of XML Schema deterministic content model requirements. - Removed AppearanceChildContentModel from schema since it creates problems for schema validation tools, copied here for archival purposes AppearanceChildContentModel is the child-node content model corresponding to X3DAppearanceChildNode. AppearanceChildContentModel can first contain optional FillProperties and/or LineProperties, then any-order Material, ImageTexture, MovieTexture, MultiTexture, PixelTexture, TextureTransform, MultiTextureTransform. No more than one instance of any single node type is allowed. 26 November 2004, Steffen Nowacki - removed duplicate entry for bottomUrl in utility simpleType "inputOutputAccessTypes" 2 October 2004, brutzman - children in GeoMetadata changed to be optional 16 September 2004, puk, brutzman - added ContentModel type descriptions from specification as annotations (used for autogenerating X3D Encoding of Nodes in XML Encodings specification) - corrected secondary node type for Collision node to X3DSensorNode 15 September 2004, brutzman and X3D Specification Team - URL for revisions to Web3D Extensions: http://www.web3d.org/x3d-content/x3d-3.0-Web3dExtensionsPublic.xsd 14 September 2004, brutzman - x3d-3.0-Web3dExtensionsPublic.xsd (including LatticeXVL node) and x3d-3.0-Web3dExtensionsPrivate.xsd schemas added - revised version number to 3.0.0 16 July 2004, dabrowski, brutzman - Renamed Lineset field 'lineCount' to 'vertexCount' 11 July 2004, brutzman - corrected additional internal structural errors in ColorNormalTexCoordContentModel and ColorCoordinateNormalTexCoordContentModel - GeoElevationGrid child content made optional 8 July 2004, brutzman - removed Event - renamed the looser AppearanceChildContentModel alternative as AppearanceChildContentModelLoose - NurbsTextureCoordinate now extends X3DTextureCoordinateNode vice X3DNode - ColorNormalTexCoordContentModel and ColorCoordinateNormalTexCoordContentModel modified to permit TextureCoordinateGenerator, MultiTextureCoordinate and NurbsTextureCoordinate as alternatives to TextureCoordinate - Successfully generated documentation using XMLSPY, placed in c:/www.web3d.org/x3d/content/X3dSchemaDocumentation/x3d-3.0.html http://www.web3d.org/x3d/content/X3dSchemaDocumentation/x3d-3.0.html but then IndexedFaceSet began crashing it, likely due to more complex ColorCoordinateNormalTexCoordContentModel 8 July 2004, brutzman - Tool bug: alternative simplified AppearanceChildContentModel provided to avoid ambiguous child content errors from xjc (jaxb) schema validation. Commented sections have to be swapped when using schema to generate data bindings since AppearanceChildContentModel appears too complicated for tools otherwise. - Tool bug: attribute name="class" has to be commented for xjc (jaxb) to build API classes [ERROR] Attempt to create a property having the same name as the reserved word "Class". line 1139 of x3d-3.0.xsd - Corrected content model for GeoMetadata to include MFNode 'data' field, which can only refer to other GeoSpatial nodes. - Moved attribute name="class" back into attributeGroup globalAttributes with corrected type="xsd:NMTOKEN" (not type="xsd:string") - Eliminated SFFloatPositive and SFFloatNonNegative. Example redefinition: Saved prior regex definitions, for information purposes: 7 July 2004, brutzman - restructured ChildContentModel, SceneGraphStructureContentModel and SceneGraphFragmentContentModel to avoid nondeterminism ambiguities 1 July 2004, brutzman - change AppearanceChildContentModel for LineProperties, FillProperties to avoid ambiguous child content errors from jaxb schema validation 27 June 2004, brutzman - changed SFFloat to instead of - removed duplicative Metadata node declarations from ChildContentModeCore since already provided in X3DNode - removed erroneous declarations from ChildContentModeCore - removed extraneous CoordinateInterpolator2D from ChildContentModelImmersive - updated X3D Specification base url from http://www.web3d.org/specifications/ISO-IEC-19775/Part01 to http://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01 - removed redundant Metadata* nodes from MetadataSet since they are already provided by X3DNode - removed redundant ColorCoordinateNormalTexCoordContentModel from IndexedFaceSet content model, since already provided by X3DComposedGeometryNode - X3DScriptNode made a separate base type since it can contain mixed (CDATA text) content, which means that it can't inherit from X3DNode. Thus added metadata children to precede field tags. Script already in ChildContentModelImmersive. - Cannot have a trailing ProtoInstance or two ProtoInstances represent FillProperties/LineProperties, restricted AppearanceChildContentModel slightly to preclude nondeterministic combinations of child content - Eliminated redundant GeoLocation from content model for GeoLocation, GeoLOD - Restricted HAnimDisplacer to only appear under HAnimSite, not as any ChildNode - Similarly restricted HAnimJoint, HAnimSegment, HAnimSite to not appear as any ChildNode ============================================================================= change summary prior to 27 June 2004: Nodes with different attributes/interfaces/names than VRML 97: - Anchor: implement X3DTouchSensorNode (and thus SensorNodeType) interface, add attributes enabled, isActive, isOver, touchTime - Collision: implement X3DEnvironmentalSensorNode (and thus SensorNodeType) interface, add attributes enabled, isActive - Joint: implement X3DBoundedObject interface, attributes bboxCenter, bboxSize - KeySensor: new node - IndexedLineSet: new attribute lineWidth - LOD: children (instead of level), implement X3DBoundedObject interface for bboxCenter, bboxSize - PointSet: new attribute pointSize - Scene: integrates functionality of VRML 97 Script node's Browser class - Site: implement X3DBoundedObject interface, attributes bboxCenter, bboxSize - StringSensor: new node - Switch: children (instead of choice), might implement X3DBoundedObject interface - Viewpoint: new (experimental) attribute examine (rotation used when active NavigationInfo is in EXAMINE mode) - No attributes are designated as eventIn, eventOut, field, exposedField since all are treated equivalently (by design decision at 1999 summit). Prototype fields can indicate fieldHint via attribute vrml97Hint for backwards compatibility using X3D-to-VRML-97 translators. - Routing events via field-name prefix set_ (or suffix _changed) is no longer required. Ought to be designated as a deprecation so that X3D implementations are forgiving. X3dToVrml97.xslt needs to be updated to support proper backwards translation automatically. ============================================================================= X3D design work completed: - Removed profile attributes for all nodes. - Verify all nodes, attributes and relationships using DTD. - Verify node types against latest interface hierarchy. - Verify summary of attribute additions relative to VRML 97 specification. - Verify attribute distribution among node types using SAI version 1. - Resolve X3DNode and base type relationships and naming conventions. - Added StringsUrl type to allow further pattern restrictions on valid url values, with expectation that further detail needs to be specified that is compatible with URNs. StringsUrl maps to VRML 97 MFStrings. - Multiple interfaces for Anchor, Collision, MovieTexture, TimeSensor: have verified there is no native Schema approach available for directly indicating multiple simultaneous types. Thus an otherInterfaces attribute is provided in combination with explicit repetition of attributes for these other interfaces. This allows proper autogeneration of multiple IDL and API interfaces by XSLT stylesheets. - Verify there are no other multiple interface nodes. - Extract tooltips from X3D-Edit to augment annotation->appinfo text. - Ensure setup and configuration files properly documented and available online as part of X3D-Edit distribution. - VRML 97's Script node Browser class (for values exposed to a browser) is being provided via attributes on Scene node (and thus a Scene interface). Also need to update DTD, X3D-Edit tooltips profile and X3dToVrml97.xsl translation stylesheet. - Use attributeGroup for any attributes contained in complexType (meaning NodeType definitions) so that multiple-interface repetitions can refer to the proper attributeGroup rather than explicitly repeating each attribute. - SceneGraphStructureType interface identifies scene-related nodes that are not renderable nodes in the scene graph (X3D, Header, Scene, ROUTE etc.). - Scene Authoring Interface (SAI) Java bindings for interfaces in org/web3d/x3d/sai/SceneAuthoringInterface.java are autogenerated from X3dSchemaDraft.xml by BuildInterfacesFromSchema.xsl - Enumeration types originally converted to Java interfaces, now converted into fully functional utility classes. - Can X3D element be formally designated as root node? Apparently not, according to revised Schema recommendation. Nevertheless, structured relationships of the node typing rules makes X3D the root. No further action required. - SceneGraphStructureNodeType nodes (X3D, Scene, Header, Prototype* etc.) changed from Full profile to either Base or Core profile as appropriate. - Updated to match final 2001 XML Schema Recommendation revisions. - Investigate restrictions on use of abstract="true" for element content as described in http://www.w3.org/2000/05/12-xmlschema-lcissues.html#abstract-types - Profile renaming: Core to Interchange profile CoreInteractive to Interactive profile BaseLine to Immersive profile Full stays Full profile DisJavaVrml to DIS profile GeoVrml to GeoSpatial profile - Wrapper tag issues: http://www.web3D.org/x3d/ComposingSceneGraphAlternatives.html - Color: naming collision between X3DField 'color' and node interface 'Color' avoided by distinct naming conventions for field type and field name. - xsd:choice minOccurs/maxOccurs attributes moved to parent xsd:group when used by reference (SoundChildContentModel, TextureBackgroundChildContentModel) - regex patterns for SFVec2d, MFVec2d, SFVec3d, MFVec3d, MFVec3f - Can SubstitutionGroup be used for deprecated node labels like LOD-level (now LOD-children) and Switch-choice (now Switch-children)? No. - Add source urls for annotations appinfo/documentation once specification addresses are stable. Initially using VRML 97 specification URLs for clarity. Updating to XLink urls into VRML 200x is the eventual goal. - Update the x3d-compact.dtd to precisely match names used for node types (e.g. GroupingNode). - Can USE be substituted anywhere? XML Schema substitutionGroup? Wildcard? Answer: USE no longer allowed due to type ambiguity, redundancy. - Consider optionalAttributes for appropriate fields in Interchange profile nodes that are only guaranteed at higher profile levels (or else just annotate them and leave optional implementation silent as an implementer choice). Answer: no. - Is it possible for this schema to differentiate profile-optional attributes (e.g. Anchor.target, IndexedFaceSet.convex etc.) in the same way that the DTD allows strict or loose checking of different-profile attributes? This is a bit tricky since browsers can optionally support Immersive-related attributes even when operating in a Interchange profile mode. Answer: no. - Relax ROUTE to appear within a scene/prototype, not solely at the end: ROUTE is a child node type. - Can FloatNonNegative pattern restrictions instead be added on a localized node-by-node basis? Probably too verbose, but at least that preserves base-type definitions. Answer: no, poor design choice. - Require ROUTE attributes. ============================================================================= X3D Schema design work in progress: - Using XSV validator to check the internal consistency of the schema. - Still need to automate regression testing for schema-based validation of content suites, a few esoteric schema warnings remain from xsqc and xsv. - Update source urls for annotations appinfo/documentation once specification addresses are stable. - How to identify simple types as X3DField and X3DArrayField? - Need X3DTexture3DNode? Probably keep Extrusion, [Geo]ElevationGrid as X3DGeometryNode - Need regex patterns for BoundingBoxSize, other special boundary constraints - Add additional type restrictions such as FloatNonNegative etc. ? Consider whether this can be codified as further base types or included as range restrictions on existing base types. - Need constraint or pattern on TriangleFanSet fanCount and TriangleStripSet stripCount (3 or more values) - is there some way to apply a restriction that only one child of Collision can have containerField="proxy" ? - Augment H-Anim 1.1 with H-Anim 2001. Decide if 1.1 can be included compatibly (as with DTD). - Matching interfaces with org.w3c.dom Element, Attr and Event types. Mapping to SAI X3DNode, X3DField and Event respectively. Under evaluation as part of Scene Authoring Interface (SAI) development. - Can deprecations be encoded as allowable options, or alternate/duplicate attributes? Stylesheets can capture and propagate the deprecations if consistently defined. - Patterns for multifield types need to be completed? - Establish different namespace scopes using key/keyRef for DEF/USE ID/IDREFs (and ROUTE/IS) inside ProtoDeclare. - Establish different namespace scopes for node and ProtoDeclare names. Or at least forbid reserved node names in prototypes. - Insert namespace prefixes (xsd: etc.) on X3D element - may need to use ref. See next section of this documentation for example implementation details. - Is restricting values on fields with accessType inputOnly/outputOnly possible? - Need to integrate CoordinateDouble and ColorRGBA into content models ============================================================================= Future work with namespaces and 'xsd:' qualifiers for non-X3D schema elements/datatypes, once software tools are namespace aware: xmlns ="http://www.w3.org/2000/10/XMLSchema" xmlns:xsd="http://www.w3.org/2000/10/XMLSchema" xmlns:x3d="http://www.web3d.org/specifications/x3d-3.0.xsd" targetNamespace="http://www.web3d.org/specifications/x3d-3.0.xsd" DTD processing approach to namespaces: X3dSchemaDraft.xml entity declaration section (i.e. document subset) which goes inside the DOCTYPE tag at the top of this schema: ] Caution: Xeena and JAXP do not yet support document subset or namespaces, so the preceding document subset fragment listed here will get clobbered if inserted inside DOCTYPE. ============================================================================= XSV validator server: http://www.w3.org/2001/03/webdata/xsv Actual schema public ID: -//W3C//DTD XMLSCHEMA 200102//EN Web address schema DTD: http://www.w3.org/2001/XMLSchema.dtd Local address X3D schema: C:\www.web3d.org\specifications\x3d-3.0.xsd =============================================================================