XSLT
Les documents XML peuvent avoir dans leur prologue une instruction de traitement xml-stylesheet. Cette instruction de traitement indique au navigateur ou trouver la feuille de style associée au document. Si dans IE 5 „default.xsl” est le nom de fichier qui contient la feuille XSL.
LINUX Pilotes de Périfériques Rubini Alessandro Corbet Jonathan O'Reilly JAVA and XML McLaughlin Brett O'Reilly
Une feuille de style est un document XML, elle doit avoir une déclaration XML. stylesheet est l'élément racine de ce document. L'élément stylesheet ainsi que tous les autres éléments XSLT sont dans l'espace de noms Cet espace de nom est généralement attaché au prefixe xsl. version est l'attribut obligatoire de l'élément stylesheet. Une feuille de style minimale Le contenu de tous les éléments sera affiché (voir 1.xsl) A l'intérieur de l'élément stylesheet peuvent se trouver des sous-éléments ou section xsl:template. L'élément template possède l'attribut match dont la valeur désigne les éléments du document XML source qui serons transformer.
Le motif le plus simple est le nom de l'élément Voir (2.xsl) Le nom de l'élément est "nom" À chaque fois qu'un élément nom sera trouvé dans le document XML le processeur XSLT émettra le texte Le nom de l'élément est "nom". On peut également créer des balises dans le document de sortie. Par exemple HTML. Le restriction qui concerne les balises est qu'elle doivent êtres bien formée. Le nom de l'élément est "nom" Voir (3.xsl)
xsl:value-of L'élément xsl:value-of permet de calculer la valeur textuelle d'un élément particulier en entrée et l'insère dans le résultat. Le contenu de l'attribut select de l'élément xsl:value-of permet d'identifier l'élément. (voir 4.xsl)
xsl:apply-templates Par défaut le processeur XSLT lit le document XML d'entrée de haut en bas: à partir de l'élément racine il parcoure toute l'arborescence en suivant l'ordre d'apparition des éléments. Les modèles (templates) sont activés dans l'ordre d'apparition des éléments. Cet instruction, si elle est écrite sans aucun attribut, elle signifie "choisissez tous les enfants du nœud courant dans l'arbre source, et, pour chacun, trouvez la règle modèle correspondante dans la feuille de style, puis instanciez-la".
(Voir 5.xsl) Avec cette feuille de style, le processeur XSLT affichera : titre de livre et éditeur (Voir 6.xsl) Avec cette feuille de style, le processeur XSLT affichera : titre de livre, nom, prenom éditeur
L'élément xsl:apply-templates donne la possibilité de changer l'ordre de traitement des éléments de l'arbre. Le contenu de l'attribut select de l'élément xsl:apply-templates permet d'identifier l'élément à traiter. (Voir 7.xsl) Le "." retourne la valeur textuelle du nœud courant.
Le type de nœuds Il existe sept type de nœuds dans un document XML : nœud racine - dans un document il existe un seul nœud racine. nœud élément - représente la valeur de toutes les données caractères analysables trouvées dans l'élément lui-même et tous ces descendants nœud attribut - représente la valeur de l'attribut du nœud courant nœud texte - représente le texte contenu dans le nœud courant nœud commentaire - représente le texte contenu dans le commentaire nœud instruction de traitement - représente une instruction de traitement nœud espace de noms - Représente URI désignant l'espace de noms
Ces nœuds permettent de naviguer dans l'arborescence d'un document et surtout de sélectionner des éléments, attributs, commentaires ….
Filtre de noeuds Les filtres permet de préciser le type de noeuds à sélectionner.
Filtre comment() renvoie true si un nœud commentaire est trouvé. Filtre text() renvoie true si un nœud textuelle est trouvé. Puisque ni le nœud commentaire ni le nœud textuel n'ont pas de nom, les filtres text() et comment() localise le nœud textuel ou commentaire, qui est l'enfant direct du nœud contextuel. Par défaut, les feuilles de style XSLT traitent tous les nœuds de texte mais non les commentaire. Filtre processing-instruction() renvoie true si une instruction de traitement est trouvé. Sans argument le filtre processing-instruction() localise l' instruction de traitement, qui est l'enfant direct du nœud contextuel. Si il a un argument elle sélectionne uniquement les instruction de traitement spécifié par l'argument.
(voir 8.xsl) Jokers Les jokers permettent de sélectionner différents éléments et types de nœuds en même temps. *Correspond à tout nœud d'élément quelque soit son à tous les nœuds d'attribut (Voir 9.xsl) node()Correspond à tous les nœuds sauf les noeuds attribut et racine (Voir 10.xsl)
Sélections multiples avec | Grâce à | il est possible de sélectionner plus d'un type d'élément ou d'attribut. Voir(11.xsl) Ce modèle sélectionnera l'attribut ref et le sous élément titre de l'élément livre
Construction des chemins de localisation composés / permet de descendre dans l'arborescences des éléments. Si le chemin commence par / la descente début à partir de l'élément racine si non c'est à partir du nœud contextuel. // permet de sélectionner parmi tous les descendant, si les deux barres se trouvent au début de l'expression la sélection se fait à partir de l'élément racine, si les // suivent le nom d'un élément, la sélection concernent tous éléments contenu dans élément en question (élément//sous-élément).. Permet de sélectionner l'élément parent. Permet de sélectionner le nœud courrant (Voir 12.xsl)
Predicat Le predicat permet de sélectionner dans un ensemble un sous ensemble de nœuds. Un predicat contient une expression booléennes qui seront testées pour chaque nœud dans la liste de nœuds contextuelle. Si l'expression est fausse, le nœud est retiré de la liste. Ceci donne Rubini Alessandro Une expression entre crochets spécifie plus précisément un élément. Un nombre entre crochets donne la position d'un élément dans le jeu sélectionné. La fonction last() sélectionne le dernier élément. (Voir 13.xsl)
Chemins de localisation non abrégés /people/person syntaxe abrégée /child::people/child::person syntaxe non abrégée Toute étape de localisation XPath se déplace le long d'un axe depuis le nœud contextuel. Les différents axes divisent le document en plusieurs ensembles se chevauchant.
Child : contient les enfants du nœud contextuel Parent : contient le parent du nœud courrant Ancestor : tous les nœuds d'élément contenant le nœud contextuel, parent, les parents des parents … jusqu'au nœud racine. Following-sibling : contient tous les nœuds frères qui suivent le nœud contextuel (ayant le même élément parent). Preceding-sibling : contient tous les nœuds frères qui précédent le nœud contextuel (ayant le même élément parent). Following : tous les nœuds suivant le noeud contextuel. Preceding : tous les nœuds précédant le noeud contextuel. Namespace : tous les espaces de noms de nœud contextuel. Descendent : tous les descendants du nœud contextuel mais pas ce dernier. Ancestor-or-self : nœud contextuel et tous ses ancêtres. descendant-or-self : contient le nœud contextuel et ses descendants (voir 14.xsl)
A B 87 D C ancestor parent preceding Preceding-sibling following Following -sibling child descendant
Les opérateurs Ne peuvent pas être utilisée dans l'attribut match de l'élément xsl:template. Elle peuvent être utilise comme valeur de l'attribut select de l'élément xsl:value-of et dans les predicats
Les opérateurs arithmétiques de base + addition - Soustraction *Multiplication divDivision modmodulo (reste de la division)
Les opérateurs booléens orreprésente un OU logique Andreprésente un ET logique not()est une négation |permet de sélectionner plusieurs motifs =égalité !=différent de <inférieur de <=inférieur ou égale >=supérieur ou égale >Supérieur Après un test entre deux opérandes on récupère une valeur true ou false
Les fonctions XPath
Chaines de caractères string(arg) : convertit son argument d'un type quelconque en une chaine de caractère. starts-with(arg1,arg2) : retourne vrai si chaine que contient arg1 commence par la chaine que contient arg2. contains(arg1,arg2) : retourne vrai si le premier argument contient le second substring-before(arg1,arg2) : retourne la sous-chaine de premier argument qui précède la première occurrence de second argument. Si non elle retourne une chaine vide. substring-after(arg1,arg2) : retourne la sous-chaine de premier argument qui suit la première occurrence de second argument. Si non elle retourne une chaine vide. substring(arg1,arg2,arg3) : arg1 contient la chaine de caractère, arg2 indique la position de laquelle la sous chaine sera extraite, arg3 le nombre de caractère à extraire.
string-length(arg) : retourne le nombre qui indique la longueur de la chaine passée dans argument arg normalize-space(arg) : normalise les blancs qui se trouvent dans une chaine de caractère
Fonctions nodales Ces fonctions renvoient différents caractéristiques sur des ensemble de nœuds count(arg) retourne le nombre de nœud dans l'ensemble de noeuds passé en argument current()retourne le nœud courant last()retourne le nombre de nœuds de la liste de nœuds contextuelle position()retourne un nombre représentant la position du nœud courant à l'intérieur du nœud parent Id(arg)sélectionne l'élément dans le nœud courant par son identifiant. Plusieurs identifiants sont autorisés et doivent être séparés par des blancs. Ce sont les nœuds avec des attributs déclarés de type ID dan la DTD (voir exemple rec_element.xml avec 14.xsl) (voir exemple livres.xml avec 1.xsl dans C:\dessnice\kursxml\przyklady\xml_dtd)
namespace-uri(arg)prend en argument un ensemble de nœuds et retourne l'URI d'espace de noms du premier de ces nœuds dans l'ordre du document. name(arg)prend en argument un ensemble de nœuds et retourne le nom préfixé du premier de ces nœuds dans l'ordre du document. local-name(arg)retourne la partie locale du nom étendu du nœud dans l'ensemble de nœuds passé en argument qui est le premier dans l'ordre du document renvoie href renvoie renvoie xlink:href
Booléens boolean(arg) convertit son argument en booléen et retourne le resultat si arg = nœud vide la fonction retourne faux talse() retourne la valeur logique false true() retourne la valeur logique true not(arg) inverse la valeur booléen de son argument
Nombres number(arg)convertit l'argument en un nombre celling(arg)retourne le plus petit entier qui n'est pas inférieur que le nombre passé en argument floor(arg)retourne le plus grand entier qui n'est pas supérieur que le nombre passé en argument round(arg)arrondit son argument au plus proche entier sum(arg)retourne la somme de tous les nœuds après que chaque nœud ait subit une transformation en une valeur numérique (Voir 16.xsl)
Xsl:if L'élément permet d'appliquer un test conditionnel dans la structure d'une feuille de style/ …………… Xsl:for-each Permet d'appliquer des règles de style sur chaque nœud identique d'un template.
Xsl:choose Xsl:when Xsl:otherwise Ces trois éléments permettent de construire des tests conditionnels instruction ……. ……. instructions……..
Variables La déclaration des variables se fait grace à l'élément Valeur Ou Si la variable est déclarer dans l'élément, alors elle serait visible dans l'ensemble de la feuille. Si la variable est déclarer dans l'élément, alors elle est locale. La variable est appelée par l'intermédiaire de son nom qui doit être précédé de signe $. (voir 14.xsl)