Exemple
DITA (Darwin Information Typing Architecture) est un langage XML utilisé dans la rédaction de documents techniques. Soit la procédure DITA suivante (respirationCirculaire.xml) :
<task>
<title>La respiration circulaire</title>
<taskbody>
<steps>
<step>
<cmd>Commencez à souffler dans votre instrument.</cmd>
</step>
<step>
<cmd>Quand vous arrivez à bout de souffle, gonflez légèrement les joues tout en continuant à souffler, afin de constituer une réserve d'air.</cmd>
</step>
<step>
<cmd>En inspirant brièvement par le nez, expulsez l'air en vidant les joues.</cmd>
</step>
<step>
<cmd>Une fois les poumons à nouveau remplis, reprenez une expiration normale.</cmd>
</step>
</steps>
</taskbody>
</task>
Un schéma XML, défini par exemple dans le langage DTD, permet de contrôler la structuration d'un document XML. Soit la DTD suivante (task.dtd, simplifiée par rapport à DITA) :
<!ELEMENT task (title, taskbody)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT taskbody (context, steps, result?)>
<!ELEMENT context (#PCDATA)>
<!ELEMENT steps (step+)>
<!ELEMENT step (cmd, substeps*)>
<!ELEMENT cmd (#PCDATA | keyword)*>
<!ELEMENT keyword (#PCDATA)>
<!ELEMENT substeps (steps*)>
<!ELEMENT result (#PCDATA)>
La procédure précédente est valide par rapport à ce schéma. Notons que l'élément racine (task) n'est pas précisé dans la DTD mais au niveau de la déclaration du type de document (DOCTYPE) dans le fichier XML.
Les templates XSL suivants permettent de transformer la procédure au format HTML :
<xsl:template match="task">
<h1><xsl:value-of select="title/text()"/></h1>
<xsl:apply-templates select="taskbody"/>
</xsl:template>
<xsl:template match="taskbody">
<xsl:apply-templates select="context"/>
<ol>
<xsl:for-each select="steps/step">
<xsl:apply-templates select="."/>
</xsl:for-each>
</ol>
<xsl:apply-templates select="result"/>
</xsl:template>
<xsl:template match="step">
<li>
<xsl:apply-templates select="cmd"/>
<xsl:if test="substeps">
<ol>
<xsl:for-each select="substeps/step">
<xsl:apply-templates select="."/>
</xsl:for-each>
</ol>
</xsl:if>
</li>
</xsl:template>

DITA permet également de répertorier les procédures dans une map (techniquesEtendues.map) :
<map>
<title>Les techniques de jeu étendues</title>
<topicref href="pianoPrepare.xml"/>
<topicref href="slapTongue.xml"/>
<topicref href="respirationCirculaire.xml"/>
</map>
Par ailleurs, la procédure peut être référencée dans une autre map (techniquesImpro.map) :
<map>
<title>Les techniques d'improvisation</title>
<topicref href="respirationCirculaire.xml"/>
<topicref href="musiqueModale.xml"/>
<topicref href="gammeParTons.xml"/>
</map>
À l'aide de deux transformations XSL différentes, ces maps pourraient être publiées au format HTML d'une part, sous la forme d'une liste de liens vers chacune des procédures ; et au format PDF d'autre part, dans une publication où toutes les procédures sont les unes à la suite des autres :

