recursal/MDN huggingface dataset:
XHTML
=====

HTML peut voyager sur le réseau vers un navigateur soit en syntaxe HTML soit en syntaxe XML appelée XHTML.

HTML5 et HTML/XHTML
-------------------

La norme HTML5 définit ces deux syntaxes. Le type MIME (envoyé dans l'en-tête HTTP `Content-Type`) indique le choix de la syntaxe : pour XHTML, le type MIME sera `application/xhtml+xml`, sinon `text/html`.

Cet exemple montre un document HTML et un document XHTML inclus dans l'en-tête HTTP :

### Document HTML


```html
HTTP/1.1 200 OK Content-Type: text/html

<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <title>HTML</title>
  </head>
  <body>
    <p>Je suis un document HTML</p>
  </body>
</html>
```

### Document XHTML


```xml
HTTP/1.1 200 OK
Content-Type: application/xhtml+xml

<html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>XHTML</title>
  </head>
  <body>
    <p>Je suis un document XHTML</p>
  </body>
</html>
```

Type MIME contre DOCTYPE
------------------------

Avant HTML5, les deux spécifications distinctes définissaient les deux syntaxes ( HTML 4.01 et XHTML 1.0 ). Selon la norme XHTML1, vous pouvez utiliser XHTML en déclarant un DOCTYPE spécial. Cependant, aucun navigateur n'a jamais implémenté cela, et la norme HTML5 a inversé la décision. **Si votre page est envoyée en tant que `texte/html`, vous n'utilisez pas XHTML**.

Au lieu de cela, le type MIME correct doit être présent dans l'en-tête HTTP `Content-Type`. Si vous ne mettez que le type MIME dans une balise meta HTML comme = `<meta http-equiv...>`, il sera ignoré et traité comme du `texte/html`.

Si vous diffusez vos pages en tant que `texte/html` et que vous croyez que vous écrivez XHTML, vous pouvez rencontrer plusieurs problèmes, comme décrit dans ces articles :

* No to XHTML un excellent article de Spartanicus
* Beware of XHTML par David Hammond
* Sending XHTML as text/html Considered Harmful par Ian Hickson
* XHTML's Dirty Little Secret par Mark Pilgrim
* XHTML - What's the Point? par Henri Sivonen
* XHTML is not for Beginners par Lachlan Hunt
Prise en charge
---------------

La plupart des navigateurs prennent actuellement en charge XHTML, y compris Firefox, Chrome, Safari, Opera et Internet Explorer (depuis IE 9). (Les navigateurs Internet Explorer 8 et plus anciens affichent à la place une boîte de dialogue de téléchargement pour les types de fichiers inconnus lorsqu'ils voient un document XHTML avec le type MIME XHTML correct.)

Sachez également que de nombreuses bibliothèques et outils de développement JavaScript populaires ont un support limité ou inexistant pour XHTML.

Différences avec HTML
---------------------

Voir Utilisation correcte de CSS et JavaScript dans les documents XHTML pour une liste partielle des différences entre HTML et XHTML.

Outils
------

* Outils de création conformes aux normes
Voir aussi
----------

* HTML
* Namespaces
beacon
======

Un **beacon** Web est un petit objet, tel qu'un gif de 1 pixel, intégré au balisage, utilisé pour communiquer des informations au serveur Web ou à des serveurs tiers. Les beacons sont généralement inclus pour fournir des informations sur l'utilisateur à des fins statistiques. Les beacons sont souvent inclus dans des scripts tiers pour collecter des données utilisateur, des mesures de performance et des rapports d'erreurs.

Il existe un projet de spécification de beacon W3C pour standardiser le beacon en tant qu'interface pour transférer de manière asynchrone des données HTPP de l'agent utilisateur vers un serveur Web avant le chargement de la page sans impact négatif sur les performances.

Voir aussi
----------

* Surveillance des utilisateurs réels (RUM)
Ligature
========

Une **ligature** est une fusion de deux caractères en un seul nouveau caractère. Par exemple, en français, "œ" est une ligature de "oe".

Vous pouvez implémenter les ligatures dans vos pages web avec `font-variant-ligatures`.

Voir aussi
----------

### Culture générale

* Ligature sur Wikipédia
QUIC
====

**Quick UDP Internet Connection**, ou **QUIC**, est un protocole de transport multiplexé expérimental implémenté sur UDP. Il a été développé par Google comme un moyen d'expérimenter des moyens d'améliorer TCP et la livraison d'applications Web. Comme TCP est intégré au noyau de nombreux systèmes d'exploitation, être capable d'expérimenter des changements, de les tester et d'implémenter des modifications est un processus extrêmement lent. La création de QUIC permet aux développeurs de mener des expériences et d'essayer de nouvelles choses plus rapidement.

QUIC a été conçu pour prendre en charge la sémantique de HTTP / 2. Il fournit le multiplexage, le contrôle de flux, la sécurité et le contrôle de la congestion.

Les principales caractéristiques de QUIC comprennent:

* Réduction du temps d'établissement de la connexion.
* Meilleur contrôle de la congestion.
* Multiplexage sans blocage de tête de ligne.
* Correction d'erreur avant.
* Migration de connexion.

La prise en charge du navigateur et du serveur pour QUIC est aujourd'hui limitée.

### Ressources

* Documentation des projets Chromium
* Projet IETF
Voir aussi
----------

* HTTP/2
Breadcrumb
==========

Un **breadcrumb**, ou fil d'Ariane, est une aide à la navigation qui est généralement placée entre l'en-tête d'un site et le contenu principal, affichant soit une hiérarchie de la page actuelle par rapport à la structure du site, du niveau supérieur à la page actuelle, soit une liste des liens suivis par l'utilisateur pour accéder à la page en cours, dans l'ordre visité.

Un breadcrumb d'emplacement pour ce document peut ressembler à ceci :

MDN > Glossaire > Breadcrumb

Les fils d'Ariane permettent aux utilisateurs de connaître leur emplacement sur un site Web. Ce type de navigation, s'il est effectué correctement, aide les utilisateurs à savoir où ils se trouvent sur un site et comment ils y sont arrivés. Ils peuvent également aider un utilisateur à revenir là où il était auparavant et réduire le nombre de clics nécessaires pour accéder à une page de niveau supérieur.
Robot d'indexation
==================

Un robot d'indexation est un programme, souvent appelé bot ou robot, qui parcourt de manière systématique le Web pour collecter des données à partir des pages web. Les moteurs de recherche utilisent généralement des robots d'indexation pour construire leurs index.

Voir aussi
----------

* Robot d'indexation sur Wikipédia
Reflow
======

Le **reflow** se produit quand un navigateur doit réarranger et redessiner tout ou partie d'une page web, par exemple, après une mise à jour sur un site interactif.

Voir aussi
----------

* Google article "Minimizing browser reflow" (en)
Microsoft Internet Explorer
===========================

Internet Explorer (ou IE) est un navigateur graphique gratuit maintenu par Microsoft pour conserver une compatibilité avec son utilisation en entreprise. Microsoft Edge est actuellement le navigateur par défaut sous Windows.

Microsoft a d'abord inclus IE dans Windows en 1995 en tant que composant de l'extension appelée "Microsoft Plus!". Aux alentours de 2002, Internet Explorer est devenu le navigateur le plus utilisé au monde, mais a depuis perdu du poids face à Chrome, Firefox, Edge et Safari.

IE a évolué au fur et à mesure de nombreuses versions et en est actuellement à la 11.0.12, avec des déclinaisons sur ordinateur de bureau, appareils mobiles et console Xbox. Les versions pour Mac et UNIX, qui étaient autrefois disponibles, ont été abandonnées par Microsoft en 2003 et 2001 respectivement.

Pour en savoir plus
-------------------

### Culture générale

* Internet Explorer sur Wikipédia
* Historique d'Internet Explorer sur Wikipédia
* Versions d'Internet Explorer sur Wikipédia
### À propos d'Internet Explorer

* http://windows.microsoft.com/fr-fr/internet-explorer/download-ie
* http://windows.microsoft.com/fr-fr/windows7/getting-started-with-internet-explorer-9
* http://windows.microsoft.com/fr-fr/internet-explorer/internet-explorer-help
* http://windows.microsoft.com/fr-fr/internet-explorer/make-ie-default-browser#ie=ie-11
### Référence technique

* http://windows.microsoft.com/fr-fr/internet-explorer/products/ie-8/system-requirements
* http://windows.microsoft.com/fr-fr/internet-explorer/products/ie-9/system-requirements
* http://support.microsoft.com/kb/969393
Directive de document
=====================

Les **directives de document** **CSP** sont utilisées dans un en-tête de `politique de sécurité de contenu` et régissent les propriétés d'un document ou l'environnement des "worker" auxquels la politique s'applique.

Les directives du document ne reviennent pas à la directive `default-src`.

Ces directives CSP sont des directives de document :

* `base-uri`
* `plugin-types`
* `sandbox`
* `disown-opener`
Voir aussi
----------

* `Politique de sécurité de contenu`
* Autres types de directives :
    + Directive de récupération
    + Directive de navigation
    + Directive de rapport
Injection SQL
=============

L'injection SQL tire parti des applications web qui ne parviennent pas à valider les entrées utilisateur. Les pirates peuvent transmettre des commandes SQL via l'application web de manière malveillante pour exécution par une base de données principale.

L'injection SQL peut obtenir un accès non autorisé à une base de données ou récupérer des informations directement à partir de la base de données. De nombreuses violations de données sont dues à l'injection SQL.

![](/fr/docs/Glossary/SQL_Injection/sql_inj_xss.gif)

Comment ça marche ?
-------------------

![](/fr/docs/Glossary/SQL_Injection/updates_loginscreen.png)

Après l'entrée du nom d'utilisateur et du mot de passe, derrière l'interface graphique, les requêtes SQL fonctionnent comme suit :
```

"SELECT Count(*) FROM Users WHERE Username=' " + txt.User.Text+" ' AND Password=' "+ txt.Password.Text+" ' ";
```


Supposons maintenant que l'utilisateur entre le nom d'utilisateur : admin et le mot de passe : mdp123, puis après avoir cliqué sur le bouton Connexion, la requête SQL s'exécutera comme suit:
```

"SELECT Count(*) FROM Users WHERE Username=' admin ' AND Password=' mdp123 ' ";
```


Si les informations d'identification sont correctes, l'utilisateur est autorisé à se connecter, c'est donc un mécanisme très simple (et non sécurisé). Les pirates utilisent cette insécurité pour obtenir un accès non autorisé.

Les pirates utilisent une chaîne simple appelée chaîne magique, par exemple :

**Utilisateur : *admin***

**Mot de passe : *anything 'or'1'='1***

Après avoir cliqué sur le bouton de connexion, la requête SQL fonctionnera comme suit :
```

"SELECT Count(*) FROM Users WHERE Username=' admin ' AND Password=' anything 'or'1'='1 ' ";
```


Regardez de plus près la section mot de passe de la requête ci-dessus.
```

Password=' anything 'or'1'='1 '
```


Le mot de passe n'est pas 'anything' (*n'importe quoi*), par conséquent mot de passe = tout aboutit à FAUX (*false*), mais '1' = '1' est une instruction VRAIE et renvoie donc une valeur VRAI (*true*). Enfin, en raison de l'opérateur OR, la valeur (FALSE OR TRUE) est TRUE, de sorte que l'authentification est contournée avec succès. Juste en raison d'une chaîne simple (chaîne magique) la base de données entière est compromise.

Comment l'empêcher ?
--------------------

Avant d'exécuter les requêtes pour les informations d'identification de l'utilisateur, apportez les modifications suivantes :
```

$id = $_GET['id']

(1) $id = Stripslashes($id)

(2) $id = mysql_real_escape_String($id)
```


Ainsi, en raison de (1) chaque guillemet simple (') dans la chaîne d'entrée est remplacé par des guillemets ("), et en raison de (2) avant chaque (') est ajouté un (/). La chaîne magique contrôlée échoue à contourner l'authentification et votre base de données reste sécurisée.

Voir aussi
----------

### Culture générale

* Injection SQL sur Wikipédia
* Explication de l'injection SQL sur OWASP (Open Web Application Security Project) (en)
URN
===

Un URN (Uniform Resource Name) est un URI dans un format standardisé faisant référence à une ressource sans spécifier son emplacement ni si elle existe. L'exemple suivant est issu de la RFC3986 : `urn:oasis:names:specification:docbook:dtd:xml:4.1.2`

Voir aussi
----------

### Culture générale

* URN sur Wikipédia
Contexte de navigation
======================

Un **contexte de navigation** est l'environnement dans lequel un navigateur affiche un `document`. Dans les navigateurs modernes, il s'agit généralement d'un onglet, mais il peut s'agir d'une fenêtre ou encore seulement des parties d'une page, comme une `<frame>` ou une `<iframe>`.

Chaque contexte de navigation possède une origine spécifique, l'origine du document actif, ainsi qu'un historique qui énumère dans l'ordre tous les documents affichés.

La communication entre les contextes de navigation est sévèrement restreinte. Entre des contextes de la même origine, il est possible d'ouvrir et utiliser un canal `BroadcastChannel`.

Voir aussi
----------

### Référence technique

* Context de navigation sur WHATWG
* Contexte de navigation sur W3C
Canvas
======

L'élément HTML *`<canvas>`* fournit une zone graphique vide sur laquelle des API JavaScript spécifiques peuvent dessiner (telles que des Canvas 2D ou du WebGL) .

Voir aussi
----------

* L'élément `<canvas>` sur Wikipédia
* Tutoriel Canvas sur MDN
* L'élément `<canvas>` sur MDN
* La documentation générale des Canvas sur MDN
* `CanvasRenderingContext2D`: l'API pour dessiner des canvas 2D
* Spécification API Canvas 2D
Ramasse-miettes
===============

**Ramasse-miettes** est un terme utilisé en programmation informatique pour décrire le processus de recherche et de suppression des objets qui ne sont plus référencés par d'autres objets. En d'autres termes, le ramasse-miettes est le processus de suppression de tous les objets qui ne sont plus utilisés par d'autres objets. Souvent abrégé "GC" (pour Garbage Collection en anglais), le ramasse-miettes est un élément fondamental du système de la gestion de la mémoire utilisé par JavaScript.

Pour approfondir
----------------

### Culture générale

* Gestion de la mémoire sur Wikipédia
* Ramasse-miettes sur Wikipédia
### Référence technique

* Ramasse-miettes dans le guide JavaScript du MDN.
* Gestion de la mémoire en JavaScript
TLS
===

Transport Layer Security (TLS), comme son prédécesseur Secure Sockets Layer (SSL), est un protocole utilisé par les applications pour communiquer de manière sécurisée à travers un réseau, tout en prévenant la falsification et l'interception des courriels, navigations web, messageries et autres protocoles.

Tous les navigateurs modernes supportent le protocole TLS, nécessitant l'envoi par le serveur d'un certificat numérique valide pour confirmer son identité afin de pouvoir établir une connexion sécurisée. Il est possible pour le client et le serveur de s'authentifier mutuellement, si chacune des deux parties fournit son propre certificat numérique individuel.

Voir aussi
----------

### Culture générale

* Transport Layer Security (en-US)
* OWASP: Transport Layer Protection Cheat Sheet
* *Transport Layer Security* sur Wikipédia
### Spécifications

* RFC 5246 (The Transport Layer Security Protocol, Version 1.2)
Origine de style
================

En CSS, il existe trois catégories de sources pour les changements de style. Ces catégories sont appelées **origines de style**. Il s'agit de l'**origine de l'agent utilisateur**, de l'**origine de l'utilisateur** et de l'**origine de l'auteur**.

Origine de l'agent utilisateur

L'origine de l'agent utilisateur est l'origine du style composé des styles par défaut utilisés par le navigateur web de la personne qui consulte le site. Si aucun autre style n'est appliqué au contenu, les styles d'origine de l'agent utilisateur sont utilisés lors du rendu des éléments.

Origine de l'utilisateur

L'origine de l'utilisateur est l'origine du style contenant tout CSS que l'utilisateur du navigateur web a ajouté. Ceux-ci peuvent provenir de l'ajout de styles à l'aide d'un outil de développement ou d'une extension de navigateur qui applique automatiquement des styles personnalisés au contenu, tels que Stylus ou Stylish.

Origine de l'auteur

L'origine de l'auteur est l'origine du style qui contient tous les styles qui font partie du document, qu'ils soient intégrés dans le HTML ou chargés à partir d'un fichier de feuille de style externe.

Les origines de style sont utilisées pour déterminer où arrêter de revenir en arrière (ou de revenir en arrière) à travers la cascade de styles qui ont été appliqués à un élément lors de la suppression de styles, par exemple lors de l'utilisation de mots-clés `unset` ou `revert`.

Voir aussi
----------

* Cascade et héritage CSS : origines en cascade (en)
Grille
======

Une grille *CSS* est définie en utilisant la valeur `grid` de la propriété `display` ; vous pouvez définir les colonnes et les lignes de votre grille en utilisant les propriétés `grid-template-rows` et `grid-template-columns`.

La grille que vous définissez avec ces propriétés est décrite comme une *grille explicite*.

Si vous placez du contenu en dehors de cette grille explicite, ou si vous comptez sur le placement automatique, l'algorithme de grille doit créer une piste (*track*) de ligne ou de colonne supplémentaire pour contenir éléments de grille (*grid items*), des pistes supplémentaires seront alors créées dans la grille implicite. La grille implicite est la grille créée automatiquement en raison de l'ajout de contenu en dehors des pistes définies.

Dans l'exemple ci-dessous, nous avons créé une grille explicite de 3 colonnes et 2 lignes. La troisième ligne de la grille est une piste de ligne de grille implicite, formée en raison des 2 éléments en plus, par rapport aux 6 qui remplissent les pistes explicites.

Exemple
-------
```

\* {
  box-sizing: border-box;
}

.wrapper {
  border: 2px solid #f76707;
  border-radius: 5px;
  background-color: #fff4e6;
}

.wrapper > div {
  border: 2px solid #ffa94d;
  border-radius: 5px;
  background-color: #ffd8a8;
  padding: 1em;
  color: #d9480f;
}
```



```css
.wrapper {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  grid-template-rows: 100px 100px;
}
```



```html
<div class="wrapper">
  <div>One</div>
  <div>Two</div>
  <div>Three</div>
  <div>Four</div>
  <div>Five</div>
  <div>Six</div>
  <div>Seven</div>
  <div>Eight</div>
</div>
```

Voir aussi
----------

### Références de la propriété

* `grid-template-columns`
* `grid-template-rows`
* `grid`
* `grid-template`
### En lire plus

* Guide des grilles CSS : *Les concepts de base des grilles CSS*
Media
=====

Le terme **média** est surchargé quand on parle du Web ; il prend des significations différentes selon le contexte.

Média (CSS)
Dans le contexte de CSS (Cascading Style Sheets), le terme ***média*** fait référence à la destination vers laquelle le document doit être dessiné par le rendering engine. Il s'agit généralement d'un écran—mais il peut également s'agir d'une imprimante, d'un synthétiseur vocal, d'un afficheur Braille ou d'un autre type de périphérique.
Apprendre plus
--------------

* Média sur Wikipédia
Immuable
========

 Un objet immuable est un objet dont le contenu ne peut pas être modifié.
 Un objet peut être immuable pour diverses raisons, par exemple :

* Pour améliorer les performances (aucune modification future de l'objet n'est prévue)
* Pour réduire la consommation mémoire (des références d'objet sont faites au lieu de cloner l'objet entier)
* Thread-safety (plusieurs threads peuvent référencer le même objet sans qu'ils n'interfèrent entre eux)
Voir aussi
----------

### Culture générale

* Immuable sur Wikipédia
RIL
===

Le RIL (Radio Interface Layer) est un élément du système d'exploitation mobile qui fait communiquer le logiciel de l'appareil avec le matériel du téléphone, radio ou modem.

Voir aussi
----------

### Culture générale

* Radio Interface Layer sur Wikipédia
### Référence technique

* Architecture de Firefox OS : L'architecture des processus de l'espace utilisateur
Piste de grille
===============

Une **piste de grille** est l'espace entre deux lignes de grille (lines). Elle est définie dans la *grille explicite* avec les propriétés `grid-template-columns` et `grid-template-rows` ou les propriétés raccourcies `grid` ou `grid-template`. Les pistes sont aussi créées dans une *grille implicite* en positionnant un élément de grille en dehors des pistes créées dans la grille explicite.

L'image ci-dessous montre la première piste de ligne de la grille.

![Diagram showing a grid track.](/fr/docs/Glossary/Grid_Tracks/1_grid_track.png)

Taille de piste sur une grille explicite
----------------------------------------

Lors de la définition de pistes de grille avec `grid-template-columns` et `grid-template-rows`, vous pouvez utiliser n'importe quelle unité de longueur, ainsi que l'unité flexible, qui indique une partie de l'espace disponible dans le conteneur de la grille. L'exemple ci-dessous montre une grille avec trois pistes de colonnes, l'une de 200 pixels, la seconde de 1fr, la troisième de 3fr. Une fois que les 200 pixels ont été soustraits de l'espace disponible dans le conteneur de la grille, l'espace restant est divisé en 4. Une partie est donnée à la colonne 2, 3 parties à la colonne 3.

Exemple
-------
```

\* {
  box-sizing: border-box;
}

.wrapper {
  border: 2px solid #f76707;
  border-radius: 5px;
  background-color: #fff4e6;
}

.wrapper > div {
  border: 2px solid #ffa94d;
  border-radius: 5px;
  background-color: #ffd8a8;
  padding: 1em;
  color: #d9480f;
}
```



```css
.wrapper {
  display: grid;
  grid-template-columns: 200px 1fr 3fr;
}
```



```html
<div class="wrapper">
  <div>One</div>
  <div>Two</div>
  <div>Three</div>
  <div>Four</div>
  <div>Five</div>
</div>
```

Taille de piste dans la grille implicite
----------------------------------------

Les pistes créées dans la grille implicite ont une taille définie automatiquement par défaut, cependant, vous pouvez définir la taille de ces pistes en utilisant les propriétés `grid-auto-rows` et `grid-auto-columns`.

Voir aussi
----------

### Références de propriété

* `grid-template-columns`
* `grid-template-rows`
* `grid-auto-rows`
* `grid-auto-columns`
### En lire plus

* Guide des grilles CSS : Les concepts de base des grilles CSS
* Définition des pistes de grille dans la spécification CSS Grid Layout
POO
===

La **POO** (Programmation Orientée Objet) est un paradigme de programmation qui consiste à encapsuler les données et les traitements en relation avec ces données dans des **objets**. Les algorithmes consistent alors à orchestrer les opérations sur ces objets et non plus sur ce qui les compose.

Le langage JavaScript est massivement orienté objet. Il suit un modèle basé sur le **prototypage** (contrairement au modèle de classes).

Voir aussi
----------

### Culture générale

* Programmation orientée objet sur Wikipédia
* Introduction à JavaScript orienté objet
GPL
===

La (GNU) GPL (General Public License) est une licence de logiciel libre copyleft publiée par la Free Software Foundation. Les utilisateurs d'un programme sous licence GPL se voient attribuer les libertés de l'utiliser, de lire son code source, de le modifier et de redistribuer les modifications qu'ils ont réalisées, à condition de redistribuer le programme (modifié ou non) sous la même licence.

Pour en savoir plus
-------------------

* FAQ sur les licences GNU
* GNU GPL sur Wikipédia
* Texte de la licence GPL
Point de code
=============

Un *point de code* est un nombre attribué pour représenter un caractère abstrait dans un système de représentation de texte (tel que Unicode). En Unicode, un point de code est exprimé sous la forme `U+1234` où `1234` est le numéro attribué. Par exemple, le caractère « A » se voit attribuer un point de code `U+0041`.

Les formes de codage de caractères, telles que UTF-8 et UTF-16, déterminent comment un point de code Unicode doit être codé sous la forme d'une séquence d'octets : par exemple, le caractère cyrillique « Ф », dont le point de code est `U+0424`, est codé en tant que `0xd0a4` en UTF-8 et en tant que `0x0424` en UTF-16.

Voir aussi
----------

* Le standard Unicode : points de code et caractères (en anglais)
* Le point de code sur Wikipédia