DOM guide: Introduction: Difference between revisions

From COLLADA Public Wiki
Jump to navigation Jump to search
Elf (talk | contribs)
Overview: sounded as if structures are generated from schema on the fly, but not--they're generated by sony & apps use them
Elf (talk | contribs)
reworking
Line 2: Line 2:


==Overview==
==Overview==
The COLLADA DOM is a comprehensive framework for the development of COLLADA applications. The DOM provides a C++ programming interface to load, query, and translate COLLADA instance data. The DOM loads COLLADA data into a [[DOM runtime database|runtime database]] consisting of structures that mirror those defined in the [[COLLADA schema]]. Sony's [[code generator]] generates these runtime structures for delivery with the DOM from the current COLLADA schema, eliminating inconsistency and error.
The COLLADA DOM is a comprehensive framework for the development of COLLADA applications. The DOM provides a C++ programming interface to load, query, and translate COLLADA instance data. The DOM loads COLLADA data into a [[runtime database]] consisting of structures that mirror those defined in the [[COLLADA schema]].  


==Design Considerations==
An application can query and manipulate the loaded COLLADA instance data either directly in the runtime database using the DOM's built-in objects and methods, or use [[integration template]]s to move the data into the application's own data structures and use its own querying and manipulation functions.
The COLLADA DOM takes into account the following design considerations, which provide some of the desirable features of the DOM.
 
==Design Advantages==
The COLLADA DOM's design provides several desirable features.


===Simple Data Transformation===
===Simple Data Transformation===
The COLLADA DOM provides a means for users to write translation code to transform data loaded into the COLLADA runtime database into data structures native to their own tools or engines. The API provides plugin points to eliminate the need to understand the underlying framework in order to write this translation.
The COLLADA DOM provides a means for users to write translation code to transform data loaded into the COLLADA runtime database into data structures native to their own tools or engines. The API provides plug-in points to eliminate the need to understand the underlying framework in order to write this translation.


===Replaceable Backend===
===Replaceable Backend===
The DOM has implemented a repository-neutral strategy to allow for future uses of the COLLADA DOM with database systems based on XML or binary data representations. In this way, the COLLADA DOM eliminates any dependence on a particular underlying specification format.
The DOM uses a repository-neutral strategy that allows future use of the COLLADA DOM with database systems based on XML or binary data representations. In this way, the COLLADA DOM eliminates any dependence on a particular underlying specification format.


===Schema Driven===
===Schema Driven===
The COLLADA DOM [[DOM guide: Object Model|Object Model]] uses structures derived directly from the COLLADA schema. The C++ definitions of these structures are generated automatically and are therefore always consistent and accurate. This correspondence means that the DOM can be kept in sync with the COLLADA schema as it is further developed.
The COLLADA DOM [[object model]] uses structures derived directly from the [[COLLADA schema]]. Sony's [[code generator]] generates the C++ definitions of these runtime structures automatically so that they are always consistent and accurate. This correspondence means that the DOM can be kept in sync with the COLLADA schema as it is further developed.


==COLLADA DOM Advantages==
===COLLADA-Specific Parser===
In addition to the preceding advantages, the COLLADA DOM provides several other advantages over using a standard XML DOM parser to read [[COLLADA instance document]]s.
The COLLADA DOM provides several advantages over using a standard XML DOM parser to read [[COLLADA instance document]]s:
*With the COLLADA DOM, you need concern yourself only with the specific elements that you want to use or modify. The other elements in an instance document are automatically preserved and are written back to the document when the data is saved.
*With the COLLADA DOM, you need concern yourself only with the specific elements that you want to use or modify. The other elements in an instance document are automatically preserved and are written back to the document when you save the data.
*The COLLADA DOM automatically resolves URIs upon loading a COLLADA instance document; there is no need to write your own resolver or to search through the data to find referenced [[URI]]s.
*The COLLADA DOM automatically resolves URIs upon loading a COLLADA instance document; there is no need to write your own resolver or to search through the data to find referenced [[URI]]s.
*The API converts text strings within the COLLADA instance document into their appropriate binary forms. For example, it converts the text form of a number such as “1.345” into a C++ floating-point number.
*The API converts text strings within the COLLADA instance document into their appropriate binary forms. For example, it converts the text form of a number such as “1.345” into a C++ floating-point number.


==Architecture Modules==
==Architecture Summary==
The COLLADA DOM framework includes three basic components:
The COLLADA DOM framework includes these basic components:
*Object Model. Includes the Digital Asset Exchange (DAE) Object Model, which is a [[reflective object system]] allowing for easy creation, manipulation, reading, and writing of COLLADA elements; and the [[COLLADA Object Model]], a custom C++ DOM based on the DAE Object Model and the [[COLLADA schema]].
*Object Model. Includes:
*[[DOM runtime database]]. Manages COLLADA elements. A reference implementation is provided via the Standard Template Library (STL). The Runtime Database includes the C++ structures for specific instances of the COLLADA Object Model, a mechanism for converting COLLADA Object Model elements to user-defined data structures, and a database query manager.
**The ''digital asset exchange (DAE) object model'', which is a [[reflective object system]] that allows easy creation, manipulation, reading, and writing of COLLADA elements.
*Backend: The COLLADA backend consists of the components responsible for translating external COLLADA instance data into C++ runtime COLLADA objects.
**The [[COLLADA object model]], a custom C++ DOM based on the DAE object model and the [[COLLADA schema]].
*[[DOM runtime database]]. Manages COLLADA elements. A reference implementation is provided via the standard template library (STL). Includes:
**The C++ structures for specific instances of the COLLADA object model.
**A mechanism for converting COLLADA object model elements to user-defined data structures.
**A database query manager.
*Backend: Components responsible for translating external COLLADA instance data into C++ runtime COLLADA objects. {{editor| what = where is the STL?}}


These components are described in more detail in [[DOM guide: Architecture]].
These components are described in more detail in [[DOM guide: Architecture]].

Revision as of 21:25, 11 April 2007

The COLLADA Document Object Model (DOM) is an application programming interface (API) that provides a C++ object representation of a COLLADA XML instance document.

Overview

The COLLADA DOM is a comprehensive framework for the development of COLLADA applications. The DOM provides a C++ programming interface to load, query, and translate COLLADA instance data. The DOM loads COLLADA data into a runtime database consisting of structures that mirror those defined in the COLLADA schema.

An application can query and manipulate the loaded COLLADA instance data either directly in the runtime database using the DOM's built-in objects and methods, or use integration templates to move the data into the application's own data structures and use its own querying and manipulation functions.

Design Advantages

The COLLADA DOM's design provides several desirable features.

Simple Data Transformation

The COLLADA DOM provides a means for users to write translation code to transform data loaded into the COLLADA runtime database into data structures native to their own tools or engines. The API provides plug-in points to eliminate the need to understand the underlying framework in order to write this translation.

Replaceable Backend

The DOM uses a repository-neutral strategy that allows future use of the COLLADA DOM with database systems based on XML or binary data representations. In this way, the COLLADA DOM eliminates any dependence on a particular underlying specification format.

Schema Driven

The COLLADA DOM object model uses structures derived directly from the COLLADA schema. Sony's code generator generates the C++ definitions of these runtime structures automatically so that they are always consistent and accurate. This correspondence means that the DOM can be kept in sync with the COLLADA schema as it is further developed.

COLLADA-Specific Parser

The COLLADA DOM provides several advantages over using a standard XML DOM parser to read COLLADA instance documents:

  • With the COLLADA DOM, you need concern yourself only with the specific elements that you want to use or modify. The other elements in an instance document are automatically preserved and are written back to the document when you save the data.
  • The COLLADA DOM automatically resolves URIs upon loading a COLLADA instance document; there is no need to write your own resolver or to search through the data to find referenced URIs.
  • The API converts text strings within the COLLADA instance document into their appropriate binary forms. For example, it converts the text form of a number such as “1.345” into a C++ floating-point number.

Architecture Summary

The COLLADA DOM framework includes these basic components:

  • Object Model. Includes:
  • DOM runtime database. Manages COLLADA elements. A reference implementation is provided via the standard template library (STL). Includes:
    • The C++ structures for specific instances of the COLLADA object model.
    • A mechanism for converting COLLADA object model elements to user-defined data structures.
    • A database query manager.
  • Backend: Components responsible for translating external COLLADA instance data into C++ runtime COLLADA objects.

((EDITOR: This page needs the following improvement: where is the STL? ))


These components are described in more detail in DOM guide: Architecture.

Template:DOM tutorial