initial X3D Schema draft now available

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