| ## X3D Specifications: Schema and DOCTYPE Validation |

X3D Specifications Schema and DOCTYPE assets are commonly used for XML validation of X3D scenes.
In-depth documentation for all node and field relationships illustrates correct scene-graph construction for correct quality assurance (QA).

> Recommended XML Validation Assets | Autogenerated Products | Design Considerations | Feedback | Glossary | JSON | License | List of All Assets | References and Resources | X3D Quality Assurance (QA) | X3D Resources | X3D Scene Authoring Hints | X3D Tooltips | X3DUOM | Contact

These X3D Specifications assets include the latest versions of recommended XML/JSON Schemas and DOCTYPEs (DTDs) for the X3D International Standards, maintained by Web3D Consortium's X3D Working Group. Technical details are found in the Recommended X3D Standards.

#### Recommended XML Validation and Implementation Assets X3D XML Schema x3d-4.0.xsd and documentation (latest) XML DOCTYPE x3d-4.0.dtd and documentation (latest) x3d-schema-changelog.txt and x3d-dtd-changelog.txt X3D Node Inventory Comparison spreadsheet (.pdf) shows node-by-node implementation coverage of the X3D Architecture Specification. Current entries include validation using X3D Schema, X3D DOCTYPE, and X3D Schematron; X3D Tooltips and VRML97 node sets; plus selected open-source implementations: FreeWrl, X3DOM, X_ITE, view3dscene (Castle Game Engine), X3D-Edit, Xj3D. Features Comparison X3D4 glTF2 (.pdf) spreadsheet shows full design interoperability with glTF rendering. | X3D Graphics Standards Relationships shows current and planned specifications. (.pdf) | X3D Application Stack - Presentation Layer Alternatives shows various ways that developers can build and use X3D models. (.pdf)

#### Autogenerated Products

The X3D schema contains complete information about the X3D scene graph and object hierarchy. Since the schema is expressed as an XML document, XSLT stylesheets can produce corresponding HTML documents or even source code for X3D APIs in full detail.

- X3D Unified Object Model (X3DUOM) is autogenerated from X3D XML Schema.
  - Available at X3dUnifiedObjectModel-4.0.xml X3dUnifiedObjectModel-3.3.xml X3dUnifiedObjectModel-3.2.xml X3dUnifiedObjectModel-3.1.xml and X3dUnifiedObjectModel-3.0.xml
  - Under development: X3dUnifiedObjectModel-4.1.xml
  - Initial experimentation: JSON export using Altova XMLSpy as X3dUnifiedObjectModel-4.0.json
  - Historic: originally named Object Model for X3D (OM4X3D).
  - Example simple inventory: AllX3dElementsAttributes4.0.xml (produced by production stylesheet BuildSpecificationXmlEncodingFromSchema.xslt)
  - Example simple conversion: AllX3dElementsAttributes4.0.txt (produced by exemplar stylesheet AllX3dElementsAttributesTextTemplate.xslt)
- X3D Java Scene Access Interface Library (X3DJSAIL) utilizes X3DUOM as the basis for design and implementation.
- X3D Python Scene Access Interface Library (X3DPSAIL) utilizes X3DUOM as the basis for design and implementation.
- Support for autogenerating X3D Part 1: XML encoding specification: Clause 6 Encoding of nodes and Encoding of statements.
- Support for autogenerating X3D Part 2: ClassicVRML encoding specification: Clause 6 Encoding of nodes.
- Support for autogenerating X3D Java Binding specification: Annex B Node type interfaces (formerly Abstract node interfaces) and Annex C Node interfaces (formerly Concrete node interfaces).
- Production tools: build.xml, BuildSpecificationXmlEncodingFromSchema.xslt, BuildSpecificationVrmlEncodingFromSchema.xslt and BuildSpecificationLanguageBindingJava.xslt (version control)

#### Design Considerations

X3D DTD. The X3D DTD (DOCTYPE) has simple expressive power.

- Able to validate element names and attribute names are correct.
- Able to validate element parent-child relationships are correct.
- Able to validate DEF/USE name uniqueness (XML ID/IDREF types) are correct.
- Attributes are treated as strings, and so attribute values usually cannot be validated as correct.

X3D Schema. The X3D Schema has significant expressive power and includes a complete object model.

- Able to validate element names and attribute names are correct.
- Able to validate element parent-child relationships are correct.
- Able to validate DEF/USE name uniqueness (XML ID/IDREF types) are correct.
- Strict typing of fields and addition of value bounds can validate attribute values are correct.
- Node types, access types and enumeration values are defined.
- Annotations, application information (appinfo) and documentation links provide essential guidance.
- Object-model level of detail is sufficient to support autogeneration of comprehensive codebases and application programming interfaces (APIs).

X3D Schematron. The X3D Schematron ruleset provides additional expressive power for checking X3D-specific rules and requirements. See X3D Schematron Validation and Quality Assurance (QA) for further detail.

#### Glossary Terms and Definitions

- X3D 4.0 Part 1, Architecture and base components, clause 3 Definitions, acronyms, and abbreviated terms
- Acronyms and Glossary html page is autogenerated from excerpts in X3DUOM glossary.xml, which in turn is derived from XML Schema glossary.xsd
- Collaboration is ongoing with Metaverse Standards Forum (MSF) through Web3D Consortium participation in MSF Standards Register Working Group
- Metaverse Standards Forum Multi-Lingual Glossary of Terms (MLGT) is the searchable authoritative glossary for the Metaverse Standards Forum.

#### JavaScript Object Notation (JSON) Validation

- X3D to JSON Stylesheet Converter and X3D JavaScript Object Notation (JSON) Encoding demonstrate draft capabilities in detail.
- coderextreme/X3DJSONLD (demonstration): X3D JSON loader and node.js express web server for serving files from localhost.
- Manually maintained JSON schema for X3D (documentation) and possible X3DUOM autogeneration
- Reference: Roy Walmsley, Don Brutzman and John Carlson, A JSON Encoding for X3D ACM SIGGRAPH Web3D 2016 Conference, Anaheim California USA, 22-24 August 2016 (presentation, .pdf).

#### List of All Assets

Current contents of this archive directory follow.

- AllX3dElementsAttributes4.1.txt and AllX3dElementsAttributes4.1.xml (latest)
- AllX3dElementsAttributes4.0.txt and AllX3dElementsAttributes4.0.xml
- AllX3dElementsAttributes3.3.txt and AllX3dElementsAttributes3.3.xml
- ECMA-262_13th_edition_june_2022.pdf is the ECMAScript (JavaScript) specification, 13th Edition June 2022
- ECMA-404_2nd_edition_december_2017.pdf is the JSON data interchange syntax, 2nd Edition December 2019
- OasisXmlCatalogX3D.xml
- X3dRegularExpressions.html and X3dRegularExpressionTests.txt (latest)
- X3dNodeInventoryComparison.xlsx (.pdf), description above (latest)
- X3dNodeInventoryComparison-X3dInteractiveMpeg4Interactive.pdf
- X3dDoctypeDocumentation3.0.html
- X3dDoctypeDocumentation3.1.html
- X3dDoctypeDocumentation3.2.html
- X3dDoctypeDocumentation3.3.html
- X3dDoctypeDocumentation4.0.html
- X3dDoctypeDocumentation4.1.html (latest)
- X3dSchemaDocumentation3.0.html
- X3dSchemaDocumentation3.1.html
- X3dSchemaDocumentation3.2.html
- X3dSchemaDocumentation3.3.html
- X3dSchemaDocumentation4.0.html
- X3dSchemaDocumentation4.1.html (latest)
- X3dSchemaDocumentation3.0.zip
- X3dSchemaDocumentation3.1.zip
- X3dSchemaDocumentation3.2.zip
- X3dSchemaDocumentation3.3.zip
- X3dSchemaDocumentation3.3.zip
- X3dSchemaDocumentation4.0.zip
- X3dSchemaDocumentation4.1.zip
- build.xml for project maintenance
- catalog.dtd
- glossary.xml, glossary.html, glossary.xsd
- contents.html (this page)
- license.html
- license.txt
- x3d-3.0-InputOutputFields.dtd
- x3d-3.0-Web3dExtensions.dtd
- x3d-3.0-Web3dExtensionsAmendment1.dtd
- x3d-3.0-Web3dExtensionsAmendment1.profile.xml
- x3d-3.0-Web3dExtensionsAmendment1.xsd
- x3d-3.0-Web3dExtensionsPrivate.dtd
- x3d-3.0-Web3dExtensionsPrivate.profile.xml
- x3d-3.0-Web3dExtensionsPrivate.xsd
- x3d-3.0-Web3dExtensionsPublic.Specification.dtd
- x3d-3.0-Web3dExtensionsPublic.Specification.xsd
- x3d-3.0-Web3dExtensionsPublic.dtd
- x3d-3.0-Web3dExtensionsPublic.xsd
- x3d-3.0.dtd
- x3d-3.0.xsd
- x3d-3.1-InputOutputFields.dtd
- x3d-3.1-Web3dExtensionsPrivate.dtd
- x3d-3.1-Web3dExtensionsPrivate.xsd
- x3d-3.1-Web3dExtensionsPublic.Specification.dtd
- x3d-3.1-Web3dExtensionsPublic.Specification.xsd
- x3d-3.1-Web3dExtensionsPublic.dtd
- x3d-3.1-Web3dExtensionsPublic.xsd
- x3d-3.1.dtd
- x3d-3.1.xsd
- x3d-3.2-InputOutputFields.dtd
- x3d-3.2-Web3dExtensionsPrivate.dtd
- x3d-3.2-Web3dExtensionsPrivate.xsd
- x3d-3.2-Web3dExtensionsPublic.Specification.dtd
- x3d-3.2-Web3dExtensionsPublic.Specification.xsd
- x3d-3.2-Web3dExtensionsPublic.dtd
- x3d-3.2-Web3dExtensionsPublic.xsd
- x3d-3.2.dtd
- x3d-3.2.xsd
- x3d-3.3-InputOutputFields.dtd
- x3d-3.3-Web3dExtensionsPrivate.dtd
- x3d-3.3-Web3dExtensionsPrivate.xsd
- x3d-3.3-Web3dExtensionsPublic.Specification.dtd
- x3d-3.3-Web3dExtensionsPublic.Specification.xsd
- x3d-3.3-Web3dExtensionsPublic.dtd
- x3d-3.3-Web3dExtensionsPublic.xsd
- x3d-3.3.dtd
- x3d-3.3.xsd
- x3d-4.0-InputOutputFields.dtd
- x3d-4.0-Web3dExtensionsPrivate.dtd
- x3d-4.0-Web3dExtensionsPrivate.xsd
- x3d-4.0-Web3dExtensionsPublic.Specification.dtd
- x3d-4.0-Web3dExtensionsPublic.Specification.xsd
- x3d-4.0-Web3dExtensionsPublic.dtd
- x3d-4.0-Web3dExtensionsPublic.xsd
- x3d-4.0.dtd (latest)
- x3d-4.0.xsd (latest)
- x3d-4.1-InputOutputFields.dtd
- x3d-4.1-Web3dExtensionsPrivate.dtd
- x3d-4.1-Web3dExtensionsPrivate.xsd
- x3d-4.1-Web3dExtensionsPublic.Specification.dtd
- x3d-4.1-Web3dExtensionsPublic.Specification.xsd
- x3d-4.1-Web3dExtensionsPublic.dtd
- x3d-4.1-Web3dExtensionsPublic.xsd
- x3d-4.1.dtd (under development)
- x3d-4.1.xsd (under development)
- x3d-3.0.validation.zip
- x3d-3.1.validation.zip
- x3d-3.2.validation.zip
- x3d-3.3.validation.zip
- x3d-4.0.validation.zip
- x3d-4.1.validation.zip
- x3d.all.validation.zip
- x3d-dtd-changelog.txt (latest)
- x3d-schema-changelog.txt (latest)
- X3dSchemaDtd-XmlSpyProject.spp
- x3d-3.3-JSONSchema.json (experimental)
- x3d-3.3-JSONSchema documentation (experimental)
- X3dJsonSchemaDocumentation3.3.zip (experimental)
- X3dUnifiedObjectModel-4.1.xml (under development)
- X3dUnifiedObjectModel-4.0.xml (latest)
- X3dUnifiedObjectModel-3.3.xml
- X3dUnifiedObjectModel-3.2.xml
- X3dUnifiedObjectModel-3.1.xml
- X3dUnifiedObjectModel-3.0.xml
- X3D Java Scene Access Interface Library (X3DJSAIL) Javadoc

#### References and Resources

- X3D MIME types
- X3D Part 1: Architecture and base components, Annex Z, Version content provides a record of X3D versions (3.0, 3.1 etc.) when each node and field was added.
- X3D Scene Authoring Hints: Validation shows legal syntax for XML validation of .x3d scenes
- X3D Recommended Specifications and X3D International Standards
  - X3D Abstract Specification provides authoritative guidance for all X3D node and field definitions.
  - X3D XML Encoding defines the corresponding XML syntax which the X3D DTD and X3D Schema check.
- X3D Resources: Authoring Support also links DTD and Schema documentation
- X3D Resources: Security list potential vulnerabilities and corresponding protections
- X3D Schematron Validation and Quality Assurance (QA)
- X3D Tooltips provide multi-lingual authoring tips, hints and warnings
- X3D Validator performs all Quality Assurance (QA) tests
- KML 2.2 schemas, OGC schema documentation and Google Extension schema documentation
- W3C Validator for XML Schema (now retired) provided online validation support for testing the X3D 3.0, 3.1, 3.2, 3.3 (recommended) and 4.0 (experimental) schemas

#### Contact

Questions, suggestions and comments about these resources are welcome. Please send them to Don Brutzman (brutzman at nps.edu)

Available online at https://www.web3d.org/specifications

Version control of these master X3D DTD and Schema assets is maintained at
https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/specifications

See the changelog files or subversion archives for detailed records of DTD and Schema updates. Contained assets are released following review and approval by Web3D Consortium members and the X3D Working Group.

Updated: 22 December 2025