--- title: Paramètres des instructions de traitement slug: Web/XSLT/PI_Parameters tags: - XSLT translation_of: Web/XSLT/PI_Parameters original_slug: Web/XSLT/Paramètres_des_instructions_de_traitement ---
XSLT permet de passer des paramètres à une feuille de style lors de son exécution. C'était déjà possible depuis quelques temps dans l'XSLTProcessor sous JavaScript, mais pas lors de l'utilisation de l'instruction de traitement (PI, pour Processing Instruction) <?xml-stylesheet?>
.
Pour résoudre cela, deux nouvelles PI (Instructions de traitement) ont été implémentées dans Firefox 2 (voir {{ Anch("Versions supportées") }} plus bas pour plus de détails), <?xslt-param?>
et <?xslt-param-namespace?>
. Ces deux PI peuvent contenir des « pseudo attributs » de la même manière que la PI (Instruction de traitement) xml-stylesheet
.
L'exemple suivant passe les deux paramètres color
et size
à la feuille de style style.xsl :
<?xslt-param name="color" value="blue"?> <?xslt-param name="size" select="2"?> <?xml-stylesheet type="text/xsl" href="style.xsl"?>
Notez que ces PI n'ont aucun effet lorsque la transformation est faite à l'aide de l'objet XSLTProcessor
en JavaScript.
Les attributs des PI xslt-param
et xslt-param-namespace
sont analysés en utilisant les règles définies dans xml-stylesheet. Tous les attributs non reconnus sont ignorés. L'analyse d'un attribut n'échouera pas à cause de la présence d'un attribut non reconnu tant que cet attribut respecte la syntaxe définie dans xml-stylesheet
.
Les deux instructions de traitement xslt-param
et xslt-param-namespace
doivent apparaître dans le prologue du document, c'est-à-dire avant la balise du premier élément. Toutes les PI du prologue sont exécutées, celles présentes avant une PI xml-stylesheet
comme celles présentes après.
S'il existe plusieurs PI xml-stylesheet
les paramètres s'appliquent à toutes les feuilles de style, conséquence du fait que selon la spécification XSLT, toutes les feuilles de style sont importées concaténées en une seule feuille.reference? Notez que les PI XSLT xml-stylesheet
multiples ne sont pas supportées par Firefox à l'heure actuelle.
La PI xslt-param
accepte quatre attributs :
Si l'attribut name est absent ou vide, la PI est ignorée.
Si l'attribut namespace est absent ou vide, l'espace de nommage null
est utilisé.
Spécifier un nom de paramètre qui n'existe pas dans la feuille de style (ou qui soit une variable dans la feuille de style) n'est pas une erreur. La PI est simplement ignorée dans ce cas.
Si les attributs value et select sont tous deux présents (ou absents) la PI est ignorée.
Notez que value="..."
n'est pas strictement égal à select="'...'"
car value peut contenir à la fois des caractères apostrophe et des caractères guillemet.
Le paramètre color
contient la chaîne red
:
<?xslt-param name="color" value="red"?>
Le paramètre columns
contient 2
:
<?xslt-param name="columns" select="2"?>
Le paramètre books
contient l'ensemble de noeuds qui regroupe tous les éléments <book>
de l'espace de nommage null
:
<?xslt-param name="books" select="//book"?>
Le paramètre show-toc<code> contient le booléen <code>true
:
<?xslt-param name="show-toc" select="true()"?>
Le contexte suivant est utilisé pour analyser et évaluer l'expression de l'attribut select.
xslt-param-namespace
, voir ci-dessous.Si l'attribut select ne peut pas être analysé ou exécuté, la PI est ignorée (en particulier, l'attribut value ne sera pas utilisé comme valeur de secours).
xslt-param-namespace
accepte deux attributs :
Une PI xslt-param-namespace
affecte l'expression de l'attribut select de tous les xslt-param
qui la suivent. Cela s'applique même s'il y a d'autres nœuds tels que des commentaires ou d'autres PI entre les PI xslt-param-namespace
et xslt-param
.
Utiliser le même préfixe pour plusieurs instructions de traitement n'est pas une erreur, chaque nouvelle PI ne fait que changer l'espace de nommage vers lequel le préfixe renvoie.
Si prefix est absent, vide ou égal un à NCName invalide, la PI est ignorée.
Si namespace est absent, la PI est ignorée. Si namespace est vide, le mappage du préfixe est supprimé.
Le paramètre books
contient l'ensemble de noeuds qui regroupe tous les éléments <book>
de l'espace de nommage http://www.example.org/myNamespace
:
<?xslt-param-namespace prefix="my" namespace="http://www.example.org/myNamespace"?> <?xslt-param name="books" select="//my:book"?>
Supportées depuis Firefox 2.0.0.1. Dans la version 2, l'attribut value est supporté mais l'attribut select provoque des plantages pour certaines expressions.
Devons-nous autoriser n'importe quelle fonction XSLT dans les expressions ? document()
semble utile, mais il semble difficile de conserver le fait que generate-id()
devrait produire la même chaîne pour un même document.
Interwiki Language Links