The Multipurpose Internet Mail Extensions (MIME) is used to indicate the media type of the requested file. The web server typically uses the file extension as the indicator of the media type of the file. It is possible to have several different file extensions mapping to the same MIME type. The MIME type is the key that a web browser uses to correctly interpret the bytes in a file. It is critical that the MIME type correctly reflect the media and encoding of the file. The MIME standard is defined in RFC 2077 (see Reference #1).
For example, the file extensions '.html' and '.htm' are both mapped to the MIME type 'text/html'. The portion of the MIME type preceding the slash is the media type (text in the case of HTML). The portion following the slash indicates the encoding of the file.
The MIME type for VRML97 is model/vrml with a file extension of '.wrl'. (The use of gzip is discussed below.) These are the same MIME types and file extensions for VRML 1.0. (Apache also allows a file extension of '.vrml' as a legitimate file extension of VRML97 files.) The X3D encoding specification sent to ISO for review in January 2003 continued using the same MIME types and file extensions.
The World Wide Web Consortium (W3C) has established a standard for XML files. This standard is contained in RFC 3023 (see #2). XML content is identified by the basic media type and encoding expressed with the regular MIME type and a separate suffix identifying the file as XML. This is indicated by '+xml'.
Several problems were pointed out with this proposal. Most notably, existing VRML97 browsers (Cortona, Contact, CosmoPlayer) could not play X3D files because of the different header and nodes. Also, nothing in the specification requires X3D browsers to be able to play VRML97 files, although both existing X3D browsers (Flux and Xj3D) can do so.
After an extensive discussion and research within the World Wide Web Consortium (W3C), a new set of file extensions and MIME types have been proposed. Existing VRML97 content will continue to be playable with existing VRML97 browsers; and X3D content will not cause VRML97 browsers to attempt to play the world.
The new MIME type is model/x3d. The various X3D encodings will use the XML suffix convention to indicate the specific encoding. The following table summarizes the file extension, MIME type, and X3D encoding:
X3D EncodingFile ExtensionMIME Type
Note that there might be some slight modifications to the MIME type. The proposal needs to be submitted to the Internet Engineering Task Force (IETF) for approval and implementation. The file extensions and MIME types are first subject to approval at the ISO Editors' Meeting.
VRML97 also supported gzip compression of the plain text file. The official file extension was '.wrl.gz'. This mechanism did not always work and led to shorthand versions that used '.wrz' and '.wrl'. This also led to substantial complications that have only really been solved by including 'gzip' in every VRML97 browser.
The standard mechanism for indicating gzipped files is for the web server to set a special header field called 'Content-Encoding'. This field indicates if the content has been encoding beyond that present in the media. This is the field that is used to indicate that the file has been compressed with gzip. When the web browser detects this field, it is responsible for gunzipping the file prior to passing it to the X3D browser.
To support the standard gzip tools and Windows File System, two file extensions have been established for gzip for each X3D encoding. Following the standards set by W3C and the Scalable Vector Graphics (SVG); the following file types have been proposed:
X3D EncodingFile Extensions
The '.*.gz' file extension supports standard gzip tools. The '*z' file extension cleanly supports Windows File System and file extension assignments.