- From: Don Brutzman <brutzman@nps.navy.mil>
- Date: Tue, 21 Nov 2000 01:35:02 -0800
- To: xmlschema-dev@w3.org
I'm happy to report that the first draft of the X3D Schema is available.
http://www.web3D.org/TaskGroups/x3d/translation/X3dSchemaDraft.xml
Schema for the Extensible 3D (X3D) tagset representing the
draft Virtual Reality Modeling Language (VRML) 200x.
Revised: 21 November 2000
Author: Don Brutzman
Acknowledgements:
Thanks for insights and assistance from Len Bullard, Rick Goldberg,
Chris Lilley, Joe Williams.
Summary:
- Schemas define XML tagsets in depth using a native-XML format.
- Schemas are an alternative to Document Type Definitions (DTDs).
- This X3D Schema matches the functionality of the X3D DTD and
provides significant further capabilities, such as strong type
checking of attribute values and stylesheet autogeneration of
the Scene Authoring Interface (SAI).
Design patterns:
- VRML base types have clarified names (MFFloat becomes Floats etc.)
and are represented by Schema simpleTypes.
- List types are used to augment Schema simple types and create arrays of
VRML base types (integerList etc) for further use by Schema simpleTypes.
- VRML node types match the interface hierarchy, capture strong-typing,
and collect common attributes shared by nodes for use by API interfaces.
VRML Node types are represented by Schema complexTypes.
- Non-node VRML fields using base types are represented by XML attributes.
- VRML nodes implement node types and are represented by XML elements.
Version plan:
- 0.4 Nodes for Core and Baseline profiles (20 November 2000)
- 0.5 Nodes for DisJavaVrml, GeoVrml, H-Anim, Nurbs, any others in Full profile
- 0.6 Autogenerated Scene Authoring Interface (SAI) in various formats including
Interface Description Language (IDL), Java interfaces, and eponymous
matching Java classes that implement the Java interfaces
- 0.7 Resolution of compromise/compact representations (wrapper tags) and
DTD internal parameter-entity names updated to match interface hierarchy
naming scheme
- 0.8 Exemplar content and authoring tools correspond to Schema tagset
- 0.9 Public review and Xj3D open-source implementation version
- 1.0 X3D Task Group consensus for inclusion in VRML 200x specification
- 1.1 Web3D Consortium endorsement
References:
- This schema: http://www.web3D.org/TaskGroups/x3d/translation/X3dSchemaDraft.xml
- X3D tagset DTDs: http://www.web3D.org/TaskGroups/x3d/translation/x3d-compromise.dtd
http://www.web3D.org/TaskGroups/x3d/translation/x3d-compact.dtd
http://www.web3D.org/TaskGroups/x3d/translation/DisJavaVrml.dtd
http://www.web3D.org/TaskGroups/x3d/translation/GeoVrml.dtd
http://www.web3D.org/TaskGroups/x3d/translation/H-Anim.dtd
http://www.web3D.org/TaskGroups/x3d/translation/Nurbs.dtd
- interface hierarchy: http://www.hypermultimedia.com/Xj3D/x3d_candidate_fig.txt
- Wrapper tag issues: http://www.web3D.org/TaskGroups/x3d/ComposingSceneGraphAlternatives.html
- Schema DTD: http://www.w3.org/2000/10/XMLSchema.dtd
- Datatypes DTD: http://www.w3.org/2000/10/datatypes.dtd
- Schema schema: http://www.w3.org/2000/10/XMLSchema.xsd
- Datatypes schema: http://www.w3.org/2000/10/datatypes.xsd
- Schema Primer: http://www.w3.org/TR/2000/WD-xmlschema-0-20000922
- Schema Structures: http://www.w3.org/TR/2000/WD-xmlschema-1-20000922
- Schema Datatypes: http://www.w3.org/TR/2000/WD-xmlschema-2-20000922
- Schema group: http://www.w3.org/XML/Schema
- Schema validator: http://www.w3.org/2000/09/webdata/xsv
- 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/TaskGroups/x3d/translation/XMLSchema.profile
- X3D-Edit: http://www.web3D.org/TaskGroups/x3d/translation/README.X3D-Edit.html
- X3D-Schema-Edit: http://www.web3D.org/TaskGroups/x3d/translation/X3D-Schema-Edit.bat
XmlSchema.dtd revisions:
- Modified two Schema DTD entries (for documentation and appinfo) from
ANY to (#PCDATA) in order to allow text nodes as documentation content.
This matches the semantics of XMLSchema.xml schema.
- Post XmlSchema.dtd modifications to xmlschema-dev as a bug fix.
X3D work in progress:
- Verify correct profile attributes for all nodes.
- Verify node types against latest interface hierarchy.
- Verify attribute distribution among node types using SAI version 1.
- Verify all nodes, attributes and relationships using DTD.
- Produce summary of attribute additions relative to VRML 97 specification.
- Designate optionalAttributes for appropriate fields in Core profile nodes.
- Using XSV validator to check the internal consistency of the schema.
- Insert namespace prefixes (xsd: etc.) once Xeena editing permits.
- 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:
apparently 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.
- Are there any other multiple interface nodes?
- 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. Challenge
is getting FloatNonNegative to map to Float externally while still
providing range-checking of attribute values.
- 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.
- Can deprecations be encoded as allowable options, or alternate/duplicate
attributes? Stylesheets can capture and propagate the deprecations if
consistently defined.
- Can SubstitutionGroup be used for deprecated node labels like
LOD-level (now LOD-children) and Switch-choice (now Switch-children)?
- Patterns for multifield types need to be completed.
- Establish different namespace scopes for DEF/USE (and ROUTE/IS)
inside ProtoDeclare.
- Establish different namespace scopes for node and ProtoDeclare names.
- Extract tooltips from X3D-Edit for initial annotation->appinfo text.
- Ensure setup and configuration files properly documented and available
online as part of X3D-Edit distribution.
- Update the x3d-compromise.dtd and x3d-compact.dtd to precisely match
the internal names used for node types (e.g. GroupingNode).
- Add source urls for annotations appinfo/documentation once specification
addresses are stable. Initially VRML 97 specification URLs for clarity.
Updating to XLink urls into VRML 200x is the eventual goal.
- Can X3D be designated as root node? Apparently not in revised Schema
recommendation.
- Can USE be substituted anywhere? XML Schema substitutionGroup? Wildcard?
- Consider adding Browser class for values exposed to a browser. Perhaps
best provided via attributes on Scene node (and thus a Scene interface).
Comments welcome. Apologies if the verbose cut & paste seems excessive.
This is (cough cough) my first schema so doubtless there some things to
fix/improve/etc. Thanks in advance for any help.
all the best, Don
--
Don Brutzman Naval Postgraduate School, Code UW/Br Root 200 work 831.656.2149
Monterey California 93943-5000 USA fax 831.656.3679
Virtual worlds/underwater robots/Internet http://web.nps.navy.mil/~brutzman
Received on Tuesday, 21 November 2000 04:36:55 UTC