Ogre .mesh.xml Document Type Definition (DTD) as of 2007-03-30
<!ELEMENT mesh (sharedgeometry?, submeshes,
skeletonlink?, boneassignments?, levelofdetail?, submeshnames?, poses?, animations?, extremes?)>
<!ELEMENT sharedgeometry (vertexbuffer+)>
<!ATTLIST sharedgeometry
vertexcount CDATA #REQUIRED>
<!ELEMENT submeshes (submesh+)>
<!ELEMENT submesh (textures?,faces,geometry?,boneassignments?)>
<!ATTLIST submesh
material CDATA #REQUIRED
usesharedvertices (true|false) "true"
use32bitindexes (true|false) "false"
operationtype (triangle_list|triangle_strip|triangle_fan) "triangle_list">
<!ELEMENT textures (texture+)>
<!ELEMENT texture EMPTY>
<!ATTLIST texture
alias CDATA #REQUIRED
name CDATA #REQUIRED>
<!ELEMENT faces (face+)>
<!ATTLIST faces
count CDATA #REQUIRED>
<!ELEMENT face EMPTY>
<!ATTLIST face
v1 CDATA #REQUIRED
v2 CDATA #IMPLIED
v3 CDATA #IMPLIED>
<!ELEMENT geometry (vertexbuffer+)>
<!ATTLIST geometry
vertexcount CDATA #REQUIRED >
<!ELEMENT skeletonlink EMPTY>
<!ATTLIST skeletonlink
name CDATA #REQUIRED>
<!ELEMENT boneassignments (vertexboneassignment+)>
<!ELEMENT vertexboneassignment EMPTY>
<!ATTLIST vertexboneassignment
vertexindex CDATA #REQUIRED
boneindex CDATA #REQUIRED
weight CDATA "1.0">
<!ELEMENT levelofdetail ( (lodmanual|lodgenerated)+ )>
<!ATTLIST levelofdetail
numlevels CDATA #REQUIRED
manual (true|false) "false">
<!ELEMENT lodmanual EMPTY>
<!ATTLIST lodmanual
fromdepthsquared CDATA #REQUIRED
meshname CDATA #REQUIRED>
<!ELEMENT lodgenerated (lodfacelist)>
<!ATTLIST lodgenerated
fromdepthsquared CDATA #REQUIRED
meshname CDATA #REQUIRED>
<!ELEMENT lodfacelist (face)+>
<!ATTLIST lodfacelist
submeshindex CDATA #REQUIRED
numfaces CDATA #REQUIRED>
<!ELEMENT vertexbuffer (vertex+)>
<!ATTLIST vertexbuffer
positions (true|false) "false"
normals (true|false) "false"
colours_diffuse (true|false) "false"
colours_specular (true|false) "false"
texture_coords (0|1|2|3|4|5|6|7|8) "0"
texture_coord_dimensions_0 (0|1|2|3) "2"
texture_coord_dimensions_1 (0|1|2|3) "2"
texture_coord_dimensions_2 (0|1|2|3) "2"
texture_coord_dimensions_3 (0|1|2|3) "2"
texture_coord_dimensions_4 (0|1|2|3) "2"
texture_coord_dimensions_5 (0|1|2|3) "2"
texture_coord_dimensions_6 (0|1|2|3) "2"
texture_coord_dimensions_7 (0|1|2|3) "2"
tangents (true|false) "false"
binormals (true|false) "false">
<!ELEMENT vertex (position, normal?, tangent?, binormal?, colour_diffuse?, colour_specular?,
texcoord*)>
<!ELEMENT position EMPTY>
<!ATTLIST position
x CDATA #REQUIRED
y CDATA #REQUIRED
z CDATA #REQUIRED >
<!ELEMENT normal EMPTY>
<!ATTLIST normal
x CDATA #REQUIRED
y CDATA #REQUIRED
z CDATA #REQUIRED >
<!ELEMENT tangent EMPTY>
<!ATTLIST tangent
x CDATA #REQUIRED
y CDATA #REQUIRED
z CDATA #REQUIRED >
<!ELEMENT binormal EMPTY>
<!ATTLIST binormal
x CDATA #REQUIRED
y CDATA #REQUIRED
z CDATA #REQUIRED >
<!ELEMENT colour_diffuse EMPTY>
<!ATTLIST colour_diffuse
value CDATA #REQUIRED>
<!ELEMENT colour_specular EMPTY>
<!ATTLIST colour_specular
value CDATA #REQUIRED>
<!ELEMENT texcoord EMPTY>
<!ATTLIST texcoord
u CDATA #REQUIRED
v CDATA "0"
w CDATA "0" >
<!ELEMENT submeshnames (submeshname+)>
<!ELEMENT submeshname EMPTY>
<!ATTLIST submeshname
name CDATA #REQUIRED
index CDATA #REQUIRED >
<!ELEMENT poses (pose+)>
<!ELEMENT pose (poseoffset+) >
<!ATTLIST pose
target (mesh|submesh) #REQUIRED
index CDATA "0"
name CDATA "">
<!ELEMENT poseoffset EMPTY>
<!ATTLIST poseoffset
index CDATA #REQUIRED
x CDATA #REQUIRED
y CDATA #REQUIRED
z CDATA #REQUIRED >
<!ELEMENT animations (animation+)>
<!ELEMENT animation (tracks)>
<!ATTLIST animation
name CDATA #REQUIRED
length CDATA #REQUIRED >
<!ELEMENT tracks (track+)>
<!ELEMENT track (keyframes)>
<!ATTLIST track
target (mesh|submesh) #REQUIRED
index CDATA "0"
type (morph|pose) #REQUIRED>
<!ELEMENT keyframes (keyframe*)>
<!ELEMENT keyframe (position*, poseref*)>
<!ATTLIST keyframe
time CDATA #REQUIRED >
<!ELEMENT poseref EMPTY>
<!ATTLIST poseref
poseindex CDATA #REQUIRED
influence CDATA "1.0">
<!ELEMENT extremes (submesh+)>
<!ELEMENT submesh_extremes (position+)>
<!ATTLIST submesh_extremes
index CDATA #REQUIRED>