It is a common situation that you have a neat [UML] document in one
application but you would like to use that same model with another tool
as well. [XMI] is an [XML] based standard stream format (usually used
for files) that can be used in such situations.

XMI support in modelling tools provides such handy advantages as:
* Data interchange between modelling tools so that you are not dependent on a single product and you can recycle your models between projects using different tools

* You can import your model to the code generators that will then automatically write skeletons for your objects (database, programming language)

* You can create different kind of documents for different kind of purposes using the same model using [XSL] as described later on this article.

!XMI-XSL intergration

[XSL] can be used together with XMI because technically it is just an XML
document. It is a small effort to produce quite reasonable set of documents
for different purposes by using all these techniques together. The main
idea is that we are always having just one UML model for the system and
then we have several XSLs to view different things in different formats.
For instance we might want some class overviews for our Javadocs in HTML,
some some plain text lists of modules for our project management documents
and some field tables for database schemas.

Read [Objects by Design|http://www.objectsbydesign.com/projects/xmi_to_html.html] for further documentation about the usage of XSL with XMI.

Original author: [Asser]