Difference between revisions of "Using URIs in COLLADA"

From COLLADA Public Wiki
Jump to: navigation, search
(URI syntax: a little clarification)
(URI syntax: some editing)
Line 9: Line 9:
  
 
URIs are either absolute or relative:
 
URIs are either absolute or relative:
*An ''absolute URI'' contains a ''scheme'' and an ''authority''.  
+
*An ''absolute URI'' contains a scheme and an authority.  
*A ''relative URI'' is any URI that does not contain a ''scheme'' and ''authority''. A relative URI can be a relative path, an absolute path, or just a fragment.
+
*A ''relative URI'' is any URI that does not contain both a scheme and an authority. A relative URI can be a relative path, an absolute path, or just a fragment.
  
The ''fragment'' portion identifies elements by using their COLLADA ''id'' attribute.  This attribute references an element that can be found within the same document as the URI. An example of this:
+
The ''fragment'' portion identifies elements by their COLLADA ''id'' attribute.  The ''id'' attribute references an element that can be found within the same document as the URI. An example of this:
 
  #redMaterial
 
  #redMaterial
  
For example:
+
Example of an absolute URI that references a file named <code>document.dae</code> on the localhost found in <code>c:/path</code>; it refers to an element with an ''id'' of "Geo_01".
 
  file:///c:/path/document.dae#Geo_01
 
  file:///c:/path/document.dae#Geo_01
is an absolute URI that references a file named <code>document.dae</code> on the localhost found in <code>c:/path</code>; it references an element with an ''id'' of "Geo_01".
 
  
 
Examples of relative path URIs:
 
Examples of relative path URIs:

Revision as of 00:15, 25 May 2007

COLLADA uses URIs exclusively to reference resources or files. The URIs must be of the correct standard format to work correctly. A common mistake is to use Windows or Linux paths as URIs. This article describes the correct standardized URI and gives examples.

URI syntax

A file path needs to be converted to a file scheme URI before being passed to the COLLADA DOM. ((EDITOR: This page needs the following improvement: This also applies to COLLADA, not just the DOM, right? ))


The basic URI file scheme syntax is:

scheme://authority/filepath?query#fragment

URIs are either absolute or relative:

  • An absolute URI contains a scheme and an authority.
  • A relative URI is any URI that does not contain both a scheme and an authority. A relative URI can be a relative path, an absolute path, or just a fragment.

The fragment portion identifies elements by their COLLADA id attribute. The id attribute references an element that can be found within the same document as the URI. An example of this:

#redMaterial

Example of an absolute URI that references a file named document.dae on the localhost found in c:/path; it refers to an element with an id of "Geo_01".

file:///c:/path/document.dae#Geo_01

Examples of relative path URIs:

./path/document.dae
../../../path/document.dae#elementID
document.dae#Geo_01

Normalizing relative URIs

A base URI is needed to normalize relative URIs. Absolute URIs do not require a separate base URI.

Assuming a base URI of

file:///c:/A/B/C/D/doc.dae

here are some examples of how the following URIs are normalized:

Original URI Normalized URI
./path/document.dae                   
file:///c:/A/B/C/D/path/document.dae
../../../path/document.dae#elementID  
 file:///A/path/document.dae#elementID
/c:/path/document.dae#Light01         
file:///c:/path/document.dae#Light01
c:/path/document.dae                  
 file:///c:/A/B/C/D/c:/path/document.dae

Windows paths and URIs

A Windows absolute path must be preceded by a forward slash character '/'. An example:

/c:/path/document.dae#Light01

Note: Windows file paths are not proper URIs.

Only the slash (/) character is used as a path delimeter in URIs. Windows uses the backslash (\) to delimit path segments. Using the backslash can result in incorrect URI processing. "A\B\C" is considered one path segment. If using "file:///A\B\C" as a base URI and trying to resolve "../doc.dae" the result will be "file:///doc.dae" and not "file:///A\B\doc.dae" as one might have expected.

The following are some examples of converting a file path to a URI.

Example Description File Path URI
Windows absolute path
C:\folder\file.dae 
file:///C:/folder/file.dae
Windows relative path
..\folder\file.dae  
../folder/file.dae
UNC path
\\remoteMachine\folder\file.dae 
file://///remoteMachine/folder/file.dae
Linux absolute path
/folder/file.dae 
file:///folder/file.dae
Linux relative path
../folder/file.dae
../folder/file.dae

See also