OpenLLM-France/wikimedia huggingface dataset:
# Mathématiques avec Python et Ruby/Triplets pythagoriciens en Python
## Ruby

[ Modifier le sommaire ]
L'énoncé du problème est simple, sa solution avec Python aussi:
Trouver tous les triplets pythagoriciens (x,y,z) tels que $x+y+z=1000$; autrement dit, on demande les triangles rectangles de périmètre 1000 dont les côtés sont entiers.
En considérant x, y et z comme classés dans l'ordre croissant, on va faire une boucle sur y (le plus grand des côtés de l'angle droit), et à l'intérieur de celle-ci, une autre boucle sur x. Enfin on calcule l'hypoténuse z, puis le périmètre du triangle. Et si celui-ci vaut 1000, on affiche le triplet:
Le script nous apprend qu'il n'y a qu'un seul triplet pythagoricien de somme 1000.
# Mathématiques avec Python et Ruby/Triplets pythagoriciens en Ruby
## Ruby

[ Modifier le sommaire ]
L'énoncé du problème est simple, sa solution avec Ruby aussi:
Trouver tous les triplets pythagoriciens (x,y,z) tels que $x+y+z=1000$; autrement dit, on demande les triangles rectangles de périmètre 1000 dont les côtés sont entiers.
On apprend qu'il n'y a qu'un triplet de somme 1000.
# Mathématiques avec Python et Ruby/Vecteurs en Ruby
## Ruby

[ Modifier le sommaire ]
Un vecteur peut être défini par ses deux coordonnées ou avec deux points (son origine et son extrémité). La seconde technique a été abordée dans le chapitre précédent; on utilisera donc ici la définition par les coordonnées:

## Définition

Le vecteur sera donc ici une classe Vecteur:
Créer un vecteur, c'est donc lui donner une abscisse et une ordonnée. Comme on l'a vu dans le chapitre précédent, on peut maintenant en créer en Ruby avec

## Coordonnées

On gère les coordonnées et l'affichage comme avec les points; il y a beaucoup de ressemblance entre les vecteurs et les points, ce sont les méthodes qui ne seront pas les mêmes.

### Abscisse

Pour lire ou modifier l'abscisse d'un vecteur u, on invoque u.x.

### Ordonnée
## Affichage

Il suffit pour afficher un vecteur u, de faire

## Norme

La norme d'un vecteur se calcule avec le théorème de Pythagore:
On a utilisé la norme d'un vecteur pour calculer des distances au chapitre précédent.

## Opérations

Il n'est pas d'usage de calculer le milieu de deux vecteurs, mais par contre, on n'additionne pas les points d'habitude (sauf avec GeoGebra). Mais les vecteurs, eux, on les additionne:

### Somme

La somme de deux vecteurs est définie par la somme des coordonnées:
La notation est infixée ce qui fait que la somme de deux vecteurs u et v se note tout simplement u+v.

### Produits

Il y a deux multiplications intéressantes:

#### Par un nombre

En multipliant un vecteur par un nombre, on obtient un vecteur:
Seulement on est obligé de mettre le nombre après le vecteur (u*3 pour avoir le triple de u, alors que d'habitude on fait plutôt le contraire: 3u), et ce produit est moins intéressant que le suivant:

#### Par un vecteur

En multipliant un vecteur par un vecteur, on obtient un nombre. Comme les nombres sont disposés comme les barreaux d'une échelle, on appelle cette multiplication, le produit scalaire des deux vecteurs:
On écrit u*v pour avoir le produit scalaire de u par v.

## Tests
### De colinéarité

Pour savoir si deux vecteurs sont colinéaires, on compare deux produits:
Pour savoir si u et v sont colinéaires, on entre
qui donnera true ou false selon que les vecteurs sont, ou non, colinéaires.

### D'orthogonalité

Pour savoir si deux vecteurs sont orthogonaux, on compare leur produit scalaire à 0:

## Exemple

Dans l'exemple du chapitre précédent, le produit scalaire permet plus rapidement de vérifier que le triangle ABC est rectangle:
# Mathématiques avec Python et Ruby/Vecteurs en Python
## Ruby

[ Modifier le sommaire ]
Géométriquement, un vecteur peut être défini à partir de deux points (son origine et son extrémité) mais aussi par ses coordonnées. C'est le choix qui sera fait ici.

## Définition

Encore une fois, on va être classe sur ce coup-là :
Lors de son instanciation, un vecteur n'aura donc que deux propriétés : ses coordonnées.

## Coordonnées
### Abscisse

L'abscisse de u s'obtiendra par u.x

### Ordonnée

L'ordonnée de u s'obtiendra par u.y
La classe Vecteur se résume donc pour l'instant à ceci :

# Affichage

Pour afficher un vecteur, on fait comme avec les points (on colle ses coordonnées entre parenthèses, séparées par un point-virgule, après les avoir converties en chaînes de caractères avec str) :

## Norme

Pour calculer la norme d'un vecteur, on utilise le théorème de Pythagore sous la forme de la fonction hypot. Celle-ci doit être importée du module math:
La norme du vecteur se calcule donc par

## Opérations

Python offre un grand confort, en permettant d'utiliser les signes d'opérations pour les vecteurs. Ainsi, en voyant un signe moins devant un vecteur, Python sait qu'il ne doit pas calculer l'opposé d'un nombre puisque c'est un vecteur, et non un nombre, qui suit ce signe moins. Alors on peut définir (c'est laissé en exercice) une méthode __neg__ pour les vecteurs, et c'est elle qui sera utilisée quand Python verra le signe moins. À moins bien entendu que ce soit une soustraction, auquel cas la méthode __sub__ sera utilisée (cette méthode aussi sera laissée en exercice).

### Addition

Pour additionner deux vecteurs, on redéfinit la méthode __add__ :
Alors pour avoir la somme de deux vecteurs u et v, il suffit d'entrer u+v. C'est exactement comme ça que fonctionnent les modules fractions et cmath.

### Multiplications
#### Par un réel

En multipliant un vecteur par un réel, on obtient un vecteur. Pour ne pas interférer avec la méthode suivante, on va mettre le réel en deuxième et utiliser la méthode multiplication à l'envers qui est notée __rmul__ (comme reverse multiplication) :
Pour calculer le triple du vecteur u, on entre 3*u et, pour l'afficher, (3*u).affichage.

#### Par un autre vecteur

En multipliant un vecteur par un vecteur, on obtient un nombre, ou scalaire. Aussi cette multiplication est-elle appelée produit scalaire des deux vecteurs (en fait il y a bien une multiplication vectorielle qui donne un vecteur, mais celle-ci est définie pour les vecteurs de l'espace, et ne sera donc pas abordée ici). On peut donc implémenter le produit scalaire de deux vecteurs self et v par
Pour calculer le produit scalaire de u par v, on entre juste u*v.

## Tests
### Vecteurs colinéaires

Pour savoir si deux vecteurs sont colinéaires, on compare deux produits en croix :
Ce test retourne un booléen, en entrant u.colin(v).

### Vecteurs orthogonaux

Pour savoir si deux vecteurs sont orthogonaux, on compare leur produit scalaire à 0 :

## Exemple

Pour l'exercice du chapitre précédent, on peut calculer un produit scalaire pour vérifier que ABC est rectangle :
# Metasploit/Troubleshooting

* Introduction
* Installation
* Écriture d'exploit sous Windows
* Utilisation avancée
* Troubleshooting
* Introduction
* Installation
* Écriture d'exploit sous Windows
* Utilisation avancée
* Troubleshooting
[ Modifier le sommaire ]

## Web Server Uses Plain-Text Form Based Authentication

Un mot de passe envoyé en clair du client au serveur peut se faire intercepter par des sniffeurs de paquets (attaque de l'homme du milieu).
Il convient donc de crypter ce mot de passe, par exemple en SSL.

## Web Directories Listable Vulnerability

Il faut utiliser la directive Apache :
# Metasploit/Installation

* Introduction
* Installation
* Écriture d'exploit sous Windows
* Utilisation avancée
* Troubleshooting
* Introduction
* Installation
* Écriture d'exploit sous Windows
* Utilisation avancée
* Troubleshooting
[ Modifier le sommaire ]

## Pré-requis

Pré-requis techniques
* Quelques connaissances sur l'utilisation du framework Metasploit.
* Quelques connaissances en programmation (des connaissances en Ruby sont utiles mais pas forcément requises).
* Quelques notions sur la gestion de la mémoire par Windows (tas, pile, registres).
Pré-requis matériels
* Le framework Metasploit installé et fonctionnel
* Une plate-forme Windows
* Un débogueur
* Un éditeur de texte

## Installation

Les sources du framework sont sur https://github.com/rapid7/metasploit-framework, et un binaire d'installation se télécharge gratuitement depuis le site officiel : http://www.metasploit.com/ (186 Mo).
Il demande ensuite de couper son antivirus le temps de l'installation, car ce dernier pourrait y trouver plusieurs chevaux de Troie. Mais l'antivirus peut également en trouver ensuite.
Une fois terminée, l'interface graphique est accessible par https://localhost:3790/.
La première fois, il nécessite d'entrer une licence d'activation récupérable en créant un compte gratuit, en proposant également une version pro payante qui possède plus de fonctionnalités.

## Références

* ↑ Débogueurs Windows gratuits : http://home.t-online.de/home/Ollydbg/ http://www.microsoft.com/whdc/devtools/debugging/default.mspx
* ↑ https://community.rapid7.com/docs/DOC-2281
# Microcontrôleur exemples
## Exemples d'utilisation de microcontrôleurs
### Détecteur d'obstacle pour voiture téléguidée

Des diodes émettrices sont activées tour à tour, en même temps que le phototransistor de réception correspondant est interrogé, si ce dernier reçoit un signal en retour, c'est que le faisceau lumineux de la diode se réfléchi sur un obstacle, on exécute alors une action codée dans le programme, ainsi que l'allumage d'une diode électroluminescente sur le panneau de contrôle.
Composition :
* Pic 16f84,
* Diodes Infrarouges émettrices,
* Phototransistors infrarouges récepteurs,
* Résistances,
* Condensateurs,
* Un Quartz tournant à 4MHz,
* Un programme pour le microcontrôleur.
# Microsoft Access/Actualisation d'un sous-formulaire
## Problème d'actualisation d'un sous-formulaire

Il arrive dans Microsoft Access qu'un sous-formulaire ne s'actualise pas automatiquement après le choix d'une valeur dans une liste déroulante du formulaire principal. Il est alors nécessaire de fermer-ouvrir le formulaire ou de passer à l'enregistrement suivant et de revenir à l'enregistrement de travail. Ces deux manipulations ne sont pas pratiques.
Le code suivant peut être utilisé pour résoudre le problème :
# Metasploit/Introduction

* Introduction
* Installation
* Écriture d'exploit sous Windows
* Utilisation avancée
* Troubleshooting
* Introduction
* Installation
* Écriture d'exploit sous Windows
* Utilisation avancée
* Troubleshooting
[ Modifier le sommaire ]
Page dédiée au projet Metasploit pour les francophones, le freeware open-source de sécurité informatique.

## Avant-propos

Ce livre explique comment écrire un exploit Windows pour le Metasploit framework version 3.x, mais il n'explicite pas comment trouver des vulnérabilités (pour cela se reporter à la page Fuzzing). Par ailleurs ce programme fonctionne également sous Linux.
Le framework Metasploit permet d'écrire des exploits fiables facilement et rapidement, il utilise le langage Ruby.
# Metasploit

Consultez également ces pages dans d’autres projets Wikimedia :
* Ressources multimédia sur Commons.
* Article encyclopédique sur Wikipédia.
Page dédiée au projet Metasploit pour les francophones, le freeware open-source de sécurité informatique.

## Avant-propos

Ce livre explique comment écrire un exploit Windows pour le Metasploit framework version 3.x, mais il n'explicite pas comment trouver des vulnérabilités (pour cela se reporter à la page Fuzzing). Par ailleurs ce programme fonctionne également sous Linux.
Le framework Metasploit permet d'écrire des exploits fiables facilement et rapidement, il utilise le langage Ruby.

## Sommaire

* Introduction
* Installation
* Écriture d'exploit sous Windows
* Utilisation avancée
* Troubleshooting

## Voir aussi

* https://freescan.qualys.com : un autre logiciel gratuit de test d'intrusion qui ne nécessite aucune installation ni configuration
# Metasploit/Sommaire

* Introduction
* Installation
* Écriture d'exploit sous Windows
* Utilisation avancée
* Troubleshooting
# OpenBSD/Programmation

OpenBSD fournit un environnement de développer stable et fiable. Dans ce chapitre, nous verrons les bases du développement Bourne Shell (sh) et Korn Shell (ksh). Nous ne verrons pas le développement avec le Bourne Again Shell (bash) qui n'est pas installé par défaut sous OpenBSD. Puis nous verrons un aperçu du développement en C sous OpenBSD avec des exemples de codes.
# OpenBSD/Quelques Utilitaires Pratiques

Cette page est en travaux. Tant que cet avis n'aura pas disparu, veuillez en considérer le plan et le contenu encore incomplets, temporaires et sujets à caution. Si vous souhaitez participer, il vous est recommandé de consulter sa page de discussion au préalable, où des informations peuvent être données sur l'avancement des travaux.

## Introduction à mg

mg est un éditeur de texte développé par l'équipe d'OpenBSD basé sur emacs. Il possède le même jeu de raccourcis qu'Emacs, en étant beaucoup plus léger. Quelques raccourcis pour l'utiliser rapidement (le C majuscule veux dire Ctrl, le "-" suivit de ainsi qu'une lettre):
| Commande | Résultat |
| C-x C-s | Sauvegarder le fichier courant |
| C-x C-f | Ouvrir un fichier en édition |
| C-d | Supprimer un caractère |
| C-k | Supprimer une ligne |
| C-x C-w | Ecrire le fichier |
| C-x C-c | Quitter l'éditeur |

## Introduction à Tmux

Tmux est un démultiplexeur de terminal, c'est à dire qu'il peut créer plusieurs terminaux dans une fenetre et ainsi en assurer la gestion avec des commandes. Il offre entre autre la possibilité de se "détacher" et de se "réattacher", ce qui a pour conséquence de sauvegarder une sessions... Vous pouvez utiliser 2 types de raccourcis, les raccourcis type Vi ou type Emacs. Par défaut, les raccourcis type Emacs sont utilisé.

## Introduction à DWM

DWM (Dynamic Windows Manager) est une interface graphique dynamique et minimal. Elle remplace facilement des interfaces graphiques plus lourdes tel que Gnome ou KDE.
# OpenOffice.org Calc/Format
## Largeur de colonne

Les titres des livres dépassent des cellules.
Déplacez le curseur sur le bord droit du nom de la colonne pour qu'il prenne la forme d'une barre verticale avec une double flèche et réalisez double clic.
La largeur de la colonne s'ajuste automatiquement.

## Fusion de cellules

Cliquez sur l'outil Fusionner les cellules de la barre d'outil Formatage.
# OpenBSD/Configuration

Cette page est en travaux. Tant que cet avis n'aura pas disparu, veuillez en considérer le plan et le contenu encore incomplets, temporaires et sujets à caution. Si vous souhaitez participer, il vous est recommandé de consulter sa page de discussion au préalable, où des informations peuvent être données sur l'avancement des travaux.

## Les commandes vitales
### man(1)

La commande pour avoir accès au manuel:
Pour rechercher des documentations dans la base de données, il suffit d'utiliser l'argument -k et le terme désiré:
Les pages du manuel sont regroupé par section, par convention, et identique aux autres distributions de type Unix/Linux.
* Section 1: Les Commandes générales (tel que ls, cd, pwd...)
* Section 2: Les Appels système (tel que le retour d'erreur des sockets)
* Section 3: Les Sous routines (tel que les librairies du C )
* Section 4: Les fichiers spéciaux (tel que les fichiers contenu dans /dev)
* Section 5: Les formats de fichiers (tel que les fichiers de structures)
* Section 6: Les jeux (les jeux sous openbsd!)
* Section 7: Les macros et conventions ( ainsi que les autres documentations)
* Section 8: Les commandes de maintenance (tel que mount, fsck, dump...)
* Section 9: Les interface du Kernel (tel que les structures de données ou les variables)
Pour chercher dans une rubrique particulière, il suffit d'utiliser la commande de cette façon:

### apropos(1)

apropos(1) est un utilitaire permettant de trouver les manuels installés. Il suffit de lancer apropos(1) de cette façon:

### locate
## Configurer le matériel
### Configuration de Xenocara (X11)
## Configurer le réseau
### Configurer une connexion PPP
## Configurer Packet Filter (Pare-feu)
### Configuration avancée
#### Configuration d'un NAT
#### Configuration avec un IDS (Snort)

Snort est un système de détection d'intrusion qui permet un téléchargement multiplateforme.

## Références

* ↑ https://www.snort.org/downloads
# OpenBSD/Introduction

Cette page est en travaux. Tant que cet avis n'aura pas disparu, veuillez en considérer le plan et le contenu encore incomplets, temporaires et sujets à caution. Si vous souhaitez participer, il vous est recommandé de consulter sa page de discussion au préalable, où des informations peuvent être données sur l'avancement des travaux.
L'histoire d'OpenBSD commence en 1995 avec la séparation de Théo De Raadt vis-à-vis du projet NetBSD. Le projet OpenBSD a pour but :
* de fournir la meilleure plateforme de développement possible,
* d'intégrer du code correctement écrit venant de copyright acceptable tel que la licence BSD,
* de fournir un système à jour et sécurisé,
* de fournir une plus grande intégration des logiciels cryptographiques,
* de suivre les normes ANSI et POSIX,
* de rendre le code source indépendant de l'architecture,
* d'un choix technique plutôt que politique,
* d'une orientation développeur,
* de fournir une plateforme de développement pour la compilation croisée,
* de régler le maximum de problèmes importants.
Vous pouvez retrouver tous ces principes sur le site officiel (http://www.openbsd.org/fr/goals.html).

## Un système qui fonctionne par défaut

OpenBSD a la particularité de "juste fonctionner" après une installation. C’est-à-dire que le système contient tout ce qui est nécessaire à l'utilisateur, une interface graphique (le serveur X ainsi que xdm et twm), des éditeurs de textes (vi et mg), des services réseaux (dhcp, http, dns...), des outils pour les développeurs (gcc, gdb...) ainsi que la documentation complète d'OpenBSD.

## Un système sécurisé

OpenBSD a une volonté de sécurité au niveau du système. Le projet OpenBSD a mis d'ailleurs en place de nombreuses solutions par défaut pour pallier aux problèmes de sécurité. Par exemple, les services utilisés couramment tel que le serveur web apache, sont directement livrés avec OpenBSD et offrant des améliorations intéressantes tel que le chrooting par défaut pour apache et bind.

## Une documentation importante

Le principal avantage que l'on peut trouver sur les distributions libres est une documentation libre de droit, importante et surtout présente par défaut. OpenBSD ne déroge pas à la règle et offre à ses utilisateurs une vaste documentation via la commande man.
# OpenOffice.org Calc/Outils

On peut personnaliser son environnement de travail en choisissant les barres d'outils et les outils que l'on utilise le plus fréquemment.

## Les barres d'outils
### Afficher/Masquer

Utilisez le menu Afficher - Barre d'outils et cliquez sur le nom de la barre d'outils à afficher ou à masquer.

### Déplacer

Cliquez sur la poignée de déplacement (le curseur se transforme en croix) et déplacez la barre à l'endroit souhaité.
La barre devient alors une barre d'outils flottante que l'on peut redimensionner.

### Fixer

Faites un double clic sur la barre de titre de la barre d'outils flottante.

### "Les plus utilisées"

* Standard
* Formatage

## Les outils
### Afficher/Masquer

* 1ère solution
    Cliquez sur le bouton à la droite de la barre d'outils, choisissez boutons visiles et sélectionnez les outils concernés.
* 2ème solution
    Cliquez sur le bouton à la droite de la barre d'outils, choisissez Personnalisez la barre d'outils... .
    Sélectionnez les outils concernés.
# OpenBSD/Bibliographie

Cette page est en travaux. Tant que cet avis n'aura pas disparu, veuillez en considérer le plan et le contenu encore incomplets, temporaires et sujets à caution. Si vous souhaitez participer, il vous est recommandé de consulter sa page de discussion au préalable, où des informations peuvent être données sur l'avancement des travaux.

## Liens

Le site officiel d'OpenBSD : (anglais) http://www.openbsd.org Le site officiel d'OpenBSD en français : (français) http://www.openbsd.org/fr/ Le site de la communauté OpenBSD France : (français) http://openbsd-france.org/

## Livres

Absolute OpenBSD de Michael Lucas The Book of PF - A No-Nonsense Guide to the OpenBSD Firewall de Peter N. M. Hansteen Secure Architectures with OpenBSD de Brandon Palmer, Jose Nazario.
# OpenOffice.org Calc/Fonctions
## Fonction somme

Pour calculer le total TTC de la commande il faut faire la somme de la colonne des totaux :
* Activez la cellule immédiatement en dessous du total à effectuer
* Choisissez la fonction somme ∑ de la barre de formule
* Vérifiez que les cellules sélectionnées sont justes (sinon on peut déplacer voire redimensionner la zone, ou faire une modification dans le champ de saisie de la barre de formule)
* Validez la formule à l'aide de la touche Entrer
# Programmation XML/Introduction

* Introduction
* Structure d'un document XML
* Espace de nom
* Définition de Type Document
* Interprétation du XML
** SAX
** DOM
* XPath
Applications fondamentales
* XSLT
* XML Schema
* XLink
* XPointer
* XForms
* XQuery
Applications finales
* WML
* XSL-FO
* SOAP
* XML Signature
* SMIL
* SVG
* MusicXML
* SyncML
* MathML
* VoiceXML
* X3D
* XMI
* XUL
* Introduction
* Structure d'un document XML
* Espace de nom
* Définition de Type Document
* Interprétation du XML
** SAX
** DOM
* XPath
Applications fondamentales
* XSLT
* XML Schema
* XLink
* XPointer
* XForms
* XQuery
Applications finales
* WML
* XSL-FO
* SOAP
* XML Signature
* SMIL
* SVG
* MusicXML
* SyncML
* MathML
* VoiceXML
* X3D
* XMI
* XUL
[ Modifier le sommaire ]

## Présentation

XML est l'acronyme d'eXtended Markup Language, soit « langage de balise étendu » en français. XML permet la structuration et la manipulation de toutes sortes de données dans un format se voulant le plus indépendant possible des plates-formes et des logiciels. Sa principale alternative est JSON.
La technologie XML vise à devenir le standard d'échange principal entre systèmes hétérogènes. XML hérite de SGML et à ce titre est un cousin de HTML. C'est un langage de balises comme HTML mais extensible et strict.
À partir de XML, il est possible de dériver des langages spécialisés comme XHTML ou MathML, ou tout autre langage, et ceci grâce au fait que les noms des balises peuvent être réinventés (étendus) en fonction des besoins.

## Histoire de XML

* Juillet 1997 : Création du groupe de travail XML par le W3C
* 10 février 1998 : Publication de la spécification XML 1.0
* 4 février 2004 : XML (3eme édition) 1.0
* 4 février 2004 : spécification XML 1.1 (français)
# Programmation XML/Interprétation du XML

* Introduction
* Structure d'un document XML
* Espace de nom
* Définition de Type Document
* Interprétation du XML
** SAX
** DOM
* XPath
Applications fondamentales
* XSLT
* XML Schema
* XLink
* XPointer
* XForms
* XQuery
Applications finales
* WML
* XSL-FO
* SOAP
* XML Signature
* SMIL
* SVG
* MusicXML
* SyncML
* MathML
* VoiceXML
* X3D
* XMI
* XUL
* Introduction
* Structure d'un document XML
* Espace de nom
* Définition de Type Document
* Interprétation du XML
** SAX
** DOM
* XPath
Applications fondamentales
* XSLT
* XML Schema
* XLink
* XPointer
* XForms
* XQuery
Applications finales
* WML
* XSL-FO
* SOAP
* XML Signature
* SMIL
* SVG
* MusicXML
* SyncML
* MathML
* VoiceXML
* X3D
* XMI
* XUL
[ Modifier le sommaire ]
Il existe de nombreuses API permettant d'interpréter un document XML. La plupart sont conçues pour un langage particulier :
* Dom4J (Java)
* JDOM (Java)
* SimpleXML (PHP)
* PyXML (Python)
Tous ces interpréteurs peuvent être de deux types normalisés :
* DOM (créé par le W3C) : un arbre de nœuds complet est construit à partir du document XML.
* SAX (créé par David Megginson) : l'interpréteur appelle certaines fonctions de l'application en fonction de chacun des éléments de base rencontrés dans le document XML (ouvertures de balise, fermetures, données, commentaires, ...).

## Références

* ↑ http://pyxml.sourceforge.net/topics/

## Voir aussi

* Programmation Python/XML
* Programmation Java/XML
# Programmation XML/Sommaire

* Introduction
* Structure d'un document XML
* Espace de nom
* Définition de Type Document
* Interprétation du XML
** SAX
** DOM
* XPath
Applications fondamentales
* XSLT
* XML Schema
* XLink
* XPointer
* XForms
* XQuery
Applications finales
* WML
* XSL-FO
* SOAP
* XML Signature
* SMIL
* SVG
* MusicXML
* SyncML
* MathML
* VoiceXML
* X3D
* XMI
* XUL