# Transclusion

En informatique, la transclusion est l'inclusion par référence d'un document ou une partie d'un document dans un autre document.
La transclusion est exécutée sur demande quand est ouvert un document faisant référence à un autre et est normalement automatique et transparente à l'utilisateur. Le résultat semble être un seul document intégré bien que ses parties aient été assemblées en utilisant plusieurs documents séparés provenant d'ordinateurs différents situés en des lieux différents.
Le terme a été inventé en 1963 par Ted Nelson, un pionnier de l'Hypertexte.

## Considérations techniques
### Neutralité de contexte

La transclusion est plus efficace lorsque les sections de texte sont indépendantes, pour que la signification et la validité du texte soient indépendants du contexte dans lequel il apparaît. Par exemple, des formulations telles que « comme expliqué dans la section précédente » sont problématiques, parce que la section de texte d'une transclusion peut apparaître dans un contexte différent, causant la confusion. Ce qui constitue du texte « contextuellement neutre » peut varier, mais inclut souvent des boilerplate (en).

### Paramétrisation

Dans certaines circonstances et dans quelques contextes techniques, les sections de texte d'une transclusion peuvent ne pas exiger l'adhésion stricte au principe de « neutralité de contexte », dans ce cas il est possible de paramétrer la transclusion. Le paramétrage implique la possibilité de modifier certaines parties ou les subdivisions du texte d'une transclusion selon des variables qui peuvent être changées indépendamment du contexte. Ceci est habituellement fait en utilisant un texte contenant une ou plusieurs marques substitutives. Ces marques substitutives sont alors remplacées par la valeurs des variables correspondantes avant le rendu final.

## Histoire et mise en œuvre par le Projet Xanadu

Ted Nelson a inventé le terme transclusion dans son livre de 1982, Literary Machines (en). Le concept de transclusion faisait déjà partie de sa description de l'Hypertexte.
Le système hypertexte Projet Xanadu développé par Ted Nelson utilise le concept de transclusion.

## Mise en œuvre sur le Web

Le protocole de transmission HTTP a des fonctionnalités rudimentaires pour la transclusion via le service d'octet (spécifiant un byte range (en) dans la requête HTTP).
La transclusion peut arriver avant (côté serveur) ou après (côté client) la transmission. Par exemple :
* Un document HTML peut être pré-composé par le serveur avant la livraison au client, en utilisant les inclusions (ou une application) du côté serveur.
* L'analyse syntaxique des Entités XML ou des Objets HTML peut être faite par le client, en demandant les ressources correspondantes séparément du document principal.
* Un navigateur Web peut mettre en cache les éléments en utilisant ses propres algorithmes, qui peuvent opérer sans directives explicites dans le balisage du document.
* AngularJS emploie la transclusion pour l'opération directives emboîtées.

### Côté client

HTML définit les éléments du côté client (Client side) pour la transclusion des images, du code HTML, des feuilles de style, du Framing (en) et des autres types de médias.
Avec des techniques comme Ajax, le code associé à un document HTML peut charger un navigateur Web de modifier le document.
Les serveurs proxy peuvent employer la transclusion pour réduire les transmissions superflues de ressources couramment demandées.

### Côté serveur

La transclusion peut être accomplie côté serveur, avec les Server Side Includes et les références d'Entité de caractère. C'est une caractéristique de la substitution de modèle Web (en).

### Dans le code source

La transclusion du code source dans la conception de logiciel et la référence, permettent au code source d'être présenté dans un document, sans être interprété dans le cadre du document, préservant la cohérence sémantique du code inséré par rapport à sa source.