.
- SGMLParser()
- La classe SGMLParser est instanciée sans arguments.
L'analyseur est codé en dur pour reconnaître les concepts
suivants :
- Balises ouvrantes et fermantes de la forme
"<balise attr="valeur" ...>" et
"</balise>", respectivement.
- Appels de caractères numériques de la forme "&#nom;".
- Appels d'entité de la forme "&nom;".
- Commentaires SGML de la forme "<!--texte-->". Notez que les
espaces, tabulations et retours à la ligne sont autorisés entre le
">" final et le "--" le précédent.
Les instances de SGMLParser ont les méthodes d'interface
suivantes :
reset()
- Ré-initialise l'instance. Perd toutes les données non analysées.
Celle-ci est appelée implicitement au moment de l'instantiation.
setnomoretags()
- Arrête l'analyse des balises. Traite toute la suite de l'entrée
comme une entrée littérale (CDATA). (Ceci est seulement fourni pour
que la balise HTML
<PLAINTEXT> puisse être réalisée.)
setliteral()
- Entre en mode littéral (CDATA mode).
feed(donnee)
- Introduit du texte dans l'analyseur. Il est analysé tant qu'il
consiste en des éléments complets; les données incomplètes sont
gardées en mémoire jusqu'à ce que d'autres données soient fournies ou
que close() soit appelée.
close()
- Force l'analyse de toutes les données mémorisées comme si elles
étaient suivies par une marque de fin de fichier. Cette méthode
peut être redéfinie par une classe dérivée pour définir des
traitements additionnels à la fin de l'entrée, mais la version
redéfinie devrait toujours appeler close().
get_starttag_text()
- Renvoie le texte de la plus récente balise de début ouverte. Ceci ne
devrait normalement pas être nécessaire pour un traitement structuré,
mais peut être utile en travaillant avec HTML ``comme déployé'' ou
pour recréer l'entrée avec des changements minimes (espaces blancs
entre les attributs peuvent être conservés, etc.).
handle_starttag(balise, methode, attributs)
- Cette méthode est appelée pour gérer les balises de début pour
lesquelles une méthode start_balise() ou
do_balise() a été définie. L'argument balise est
le nom de la balise converti en minuscule, et l'argument
methode est la méthode attachée qui devrait être utilisée pour
fournir l'interprétation sémantique de la balise de début. L'argument
attributs est une liste de paires
(nom, valeur)
contenant les attributs trouvés à l'intérieur des signes <> de
la balise. Le nom a été converti en minuscule et les
guillemets et les barres inversées dans la valeur ont été interprétés.
Par exemple, pour la balise <A HREF="http://www.cwi.nl/">,
cette méthode serait appelée par "unknown_starttag('a', [('href',
'http://www.cwi.nl/')])". L'implémentation d'origine exécute tout simplement
methode avec attributs comme unique argument.
handle_endtag(balise, methode)
- Cette méthode est utilisée pour gérer les balises de fin pour
lesquelles une méthode end_balise() a été définie.
L'argument balise est le nom de la balise converti en
minuscule, et l'argument methode est la méthode attachée qui
devrait être utilisée pour fournir l'interprétation sémantique de la
balise de fin. Si aucune méthode end_balise() est définie
pour l'élément fermant,
ce gestionnaire n'est pas appelé. L'implémentation d'origine exécute
tout simplement methode.
handle_data(donnee)
- Cette méthode est appelée pour traiter des données quelconque. Elle
est là dans l'intention d'être surchargée par une classe dérivée ;
l'implémentation d'origine de la classe ne fait rien.
handle_charref(ref)
- Cette méthode est utilisée pour traiter un appel de caractère de la
forme "&#ref;". Dans l'implémentation d'origine,
ref doit être un nombre décimal dans l'intervalle 0-255. Elle
convertit le caractère en ASCII et appelle la méthode
handle_data() avec le caractère en argument. Si ref
est non valide ou hors de l'intervalle, la méthode
unknown_charref(ref) est appelée pour gérer l'erreur.
Une sous-classe doit surcharger cette méthode pour fournir un support
pour les entités à caractères nominatifs.
handle_entityref(ref)
- Cette méthode est utilisée pour traiter un appel d'entité général de
la forme "&ref;" où ref est un appel d'entité général.
Elle cherche ref dans la variable d'instance (ou de classe)
entitydefs qui devrait être une table associative des noms
d'entité vers une traduction correspondante. Si une traduction est
trouvée, elle appelle la méthode handle_data() avec la
traduction; autrement, elle appelle la méthode
unknown_entityref(ref). La valeur par défaut de entitydefs
définit les conversions pour &, &apos,
>, <, et ".
handle_comment(commentaire)
- Cette méthode est appelée quand un commentaire est rencontré.
L'argument commentaire est une chaîne de caractères contenant
le texte entre les délimiteurs "<!--" et "-->", mais sans
les délimiteurs eux-mêmes. Par exemple, le commentaire
"<!--texte-->" suscitera l'appel de la méthode avec l'argument
'text'. La méthode par défaut ne fait rien.
report_unbalanced(balise)
- Cette méthode est appelée quand une balise de fin est rencontrée qui
ne correspond à aucun élément ouvert.
unknown_starttag(balise, attributs)
- Cette méthode est utilisée pour traiter une balise de début inconnue.
Cette méthode est prévue pour être surchargée dans une classe dérivée ;
l'implémentation de la classe initiale ne fait rien.
unknown_endtag(balise)
- Cette méthode est utilisée pour traiter une balise de fin inconnue.
Cette méthode est prévue pour être surchargée dans une classe dérivée ;
l'implémentation de la classe initiale ne fait rien.
unknown_charref(ref)
- Cette méthode est utilisée pour traiter les appels de caractères
numériques insolubles. Reportez-vous à handle_charref() pour
connaître ce qui est géré par défaut. Cette méthode est prévue pour
être surchargée dans une classe dérivée ;
l'implémentation de la classe initiale ne fait rien.
unknown_entityref(ref)
- Cette méthode est utilisée pour traiter un appel d'entité inconnue.
Cette méthode est prévue pour être surchargée dans une classe dérivée ;
l'implémentation de la classe initiale ne fait rien.
Mis à part la surcharge ou l'extension des méthodes listées ci-dessus,
les classes dérivées peuvent aussi définir des méthodes de la forme
suivante pour définir le traitement de balises spécifiques. Les noms
des balises dans le flux d'entrée sont indépendants de la casse ; la
balise apparaissant dans les noms des méthodes doit être
minuscule.
start_balise(attributs)
- Cette méthode est utilisée pour traiter une balise ouvrante
balise. Elle est prend la priorité sur do_balise().
L'argument attributs a la même signification que celle décrite
dans handle_starttag() ci-dessus.
do_balise(attributs)
- Cette méthode est utilisée pour traiter une balise ouvrante balise
qui ne vient pas avec une balise fermante appariée.
L'argument attributs a la même signification que celle décrite
dans handle_starttag() plus haut.
end_balise()
- Cette méthode est utilisée pour traiter une balise fermante
balise.
Notez que l'analyseur maintient une pile des éléments ouverts
pour lesquels aucune balise de fin n'a encore été trouvée. Seules les
balises traitées par start_balise() sont déposées sur
cette pile. La définition d'une méthode end_balise()
est facultative pour ces balises. Pour des balises traitées par
do_balise() ou par unknown_tag(), aucune
méthode end_balise() ne doit être définie; si définie,
elle ne sera pas utilisée. Si les deux méthodes
start_balise() et do_balise() existent
pour une balise, la méthode start_balise() prend la
priorité.