SAX est une recommandation de fait (issue des listes de discussion Monthly Archives for xml-dev), qui permet d'interfacer des programmes avec un "reader XML" fournissant, au travers d'un API, un séquence d'événements issus des objets rencontrés dans le fichier XML.

Ces événements sont de type : début d'élément, attribut, fin d'élément. SAX repose donc, à la différence de DOM et de XSLT qui présupposent un arbre d'objets typés et valués, sur une vision séquentielle et événementielle de l'information.

Recommandations (attention, cette partie est maintenue de façon occasionnelle)
pictos/enflag.gif 
SAX: The Simple API for XML
- Recommandation, 29-01-2002, version 2.0.1
- accès à l'historique des versions
Objectifs

L'objectif de SAX est de fournir une API simple, permettant d'accéder au contenu d'un document XML. Pour ce faire, la liste de discussion xml-dev, a défini une spécification, basée sur une lecture séquentielle de ces documents, permettant d'agir sur chaque événement rencontré lors de cette lecture.

XML
Principes

Dans sa version 2, SAX propose un ensemble d'interfaces permettant d'accéder à tous les événements disponibles lors de la lecture séquentielle d'un document XML. On y trouve des notions de début et de fin de document ou d'élément, d'attributs et de valeurs d'attribut, de contenus textuels, d'entités, de processing instructions, etc. On y trouve aussi un certain nombre de fonctionnalités permettant de contrôler le comportement du "reader".

Par nature événementiel, le gros intérêt d'une telle spécification est d'être adapté au traitement de gros documents XML. En effet, les approches DOM, voire XSLT, reposent sur la manipulation d'arbres et, du coup, nécessitent toutes deux de charger tout le document en mémoire, avant de pouvoir effectuer quelle que manipulation que ce soit.

La communauté des développeurs et des éditeurs de logiciels ne s'y est pas trompée, qui utilise alternativement DOM ou SAX, en fonction du type de manipulation à réaliser.

D'un point de vue technique, un regret est que les acteurs SAX ne fasse pas la différence entre une spécification et une implémentation d'une spécification. En effet, sur les sites dédiés à SAX, on ne trouve pas de spécification en tant que telle : on trouve des interfaces SAX pour Java, pour Python, pour... Le risque est alors que les spécifications évoluent en parallèle et qu'il existe autant de SAX que d'implémentations.

FR EN
puce 
SAX "parseur" XML, Didier Ferment, 22/12/2000, édité par Université de Picardie Jules Vernes, France
puce 
Free Library, édité par PerfectXML.com
Extraits d'ouvrages publiés sur le sujet
puce 
SAX2, David Brownell, 01/2002, édité par O'Reilly
Livre, 240 pages.
puce 
Should I use SAX or DOM?, Nazmul Idris, 05/1999, édité par developerlife.com

Valid XHTML + RDFa