Using URIs in COLLADA
URIs in COLLADA must be of the correct standard format to work correctly.
The base URI syntax is:
An absolute URI contains a scheme and an authority. If the authority is left empty than
localhost is used. For example:
is a URI that references a file named
document.dae on the localhost found in
The fragment portion is used to identify elements by using their "id" attribute. The previous example references an element with an id "Geo_01".
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.
Examples of relative path URIs:
./path/document.dae ../../../path/document.dae#elementID document.dae#Geo_01
A Windows absolute path must be preceded by a forward slash character '/'. An example:
A fragment identifier references an element that can be found within the same document as the URI. An example of this:
A base URI is needed to normalize relative URIs. Absolute URIs do not require a separate base URI.
Assuming a base URI of
here are some examples of how the following URIs will be normalized:
|Original URI||Normalized URI|
Note: Windows file paths are not proper URIs!
Note also that only the slash (/) character is used as a path delimeter. 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.
A common mistake is to use a Windows or Linux file path. Both COLLADA and the COLLADA DOM use URIs exclusively to reference resources or files. A file path needs to be converted to a file scheme URI before being passed to the COLLADA DOM. 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