HTML dans le code wiki

De Salve Regina

Il est possible d'insérer des codes HTML dans le code wiki, ce qui peut s'avérer pratique pour les personnnes habituées au HTML. Toutefois, le rendu ne sera pas toujours identique à celui du code wiki ; le code HTML est à utiliser surtout lorsque le code wiki ne suffit plus.

HTML autorisé

Les éléments HTML suivants sont actuellement autorisés par MediaWiki :


L'extrait suivant de Sanitizer.php montre quels attributs sont permis.

Mise à jour : depuis la version 1.4rc1, la fonction removeHTMLtags se trouve dans Parser.php
Mise à jour : depuis la version 1.5, la fonction removeHTMLtags se trouve dans Sanitizer.php.

Pour de nombreux éléments HTML, il existe un code wiki disponible, plus facile à utiliser ; voir Aide:Syntaxe wiki. D'un autre côté, les éléments HTML autorisent la création d'un attribut "id" utiles pour les ancres.

	/* private */ function removeHTMLtags( $text )
	{
		wfProfileIn( "OutputPage::removeHTMLtags" );
		$htmlpairs = array( # Tags that must be closed
			"b", "i", "u", "font", "big", "small", "sub", "sup", "h1",
			"h2", "h3", "h4", "h5", "h6", "cite", "code", "em", "s",
			"strike", "strong", "tt", "var", "div", "center",
			"blockquote", "ol", "ul", "dl", "table", "caption", "pre",
			"ruby", "rt" , "rb" , "rp"
		);
		$htmlsingle = array(
			"br", "p", "hr", "li", "dt", "dd"
		);
		$htmlnest = array( # Tags that can be nested--??
			"table", "tr", "td", "th", "div", "blockquote", "ol", "ul",
			"dl", "font", "big", "small", "sub", "sup"
		);
		$tabletags = array( # Can only appear inside table
			"td", "th", "tr"
		);

		$htmlsingle = array_merge( $tabletags, $htmlsingle );
		$htmlelements = array_merge( $htmlsingle, $htmlpairs );

		$htmlattrs = array( # Allowed attributes--no scripting, etc.
			"title", "align", "lang", "dir", "width", "height",
			"bgcolor", "clear", /* BR */ "noshade", /* HR */
			"cite", /* BLOCKQUOTE, Q */ "size", "face", "color",
			/* FONT */ "type", "start", "value", "compact",
			/* For various lists, mostly deprecated but safe */
			"summary", "width", "border", "frame", "rules",
			"cellspacing", "cellpadding", "valign", "char",
			"charoff", "colgroup", "col", "span", "abbr", "axis",
			"headers", "scope", "rowspan", "colspan", /* Tables */
			"id", "class", "name", "style" /* For CSS */
		);

Par exemple, l'élément "a" n'est pas autorisé dans le code wiki :

<a href="meta.wikimedia.org/wiki/Main_Page">Main Page</a>

donne le code :

&lt;a href="meta.wikimedia.org/wiki/Main_Page"&gt;Main Page&lt;/a&gt;

qui est rendu tel quel sans créer de lien.

Éléments span / font / div

span

Span est autorisé maintenant. Cette balise sert à :

  • Régler le style CSS pour un bout de texte.
  • Régler la langue pour une partie du texte.
  • Régler la direction du texte.
  • Éviter certaines balises comme "s" et "strike".
  • Éviter les balises "font".
  • Insérer des attributs "class" et "id".

Il est aussi possible d'utiliser <div style="display:inline"> à la place mais, curieusement, seulement dans une liste :

*a <div style="display:inline; color:red">red </div> word

#a <div style="display:inline; color:red">red </div> word

a <div style="display:inline; color:red">red </div> word

donne

  • a
    red
    word
  1. a
    red
    word
a
red
word

En dehors d'une liste, "display:inline" est en effet désactivé.

font

Pour certains attributs comme la couleur, il est aussi possible d'utiliser :

a <font style="color: red">red</font> word

ou

a <font color=red>red</font> word.

donnant respectivement

a red word

a red word

L'élément font peut aussi remplacer span, par exemple :

une hauteur de 20 000 <font title="30.48 cm" class="title">pieds</font> au dessus du niveau de la mer

donnant

une hauteur de 20 000 pieds au dessus du niveau de la mer

(notez l'info-bulle au-dessus de "pieds").

Utilisez une ligne CSS comme

.title {color: red; }

Pour voir quel texte a une info-bulle.

div

Pour assigner, par exemple, la classe "red" à un texte, on peut utiliser :

<div class="red">texte d'exemple</div>
qui donne
texte d'exemple
qui est en rouge si la ligne CSS
.red {color:red}

est appliquée.

Ceci est utilisable si la couleur est voulue rouge ; s'il s'agit juste de mettre en évidence le texte, un attribut plus général pour la classe serait plus approprié, puisque le CSS permet d'autres méthodes de mise en valeur (couleurs, gras, large...)

Certains lecteurs n'auront pas le code CSS ".red {color:red}", donc il n'est pas possible de faire une référence comme "le texte rouge ci-dessus".

Voir aussi

Liens externes


Modèle:H:f

Outils personnels
Récemment sur Salve Regina