C créant du XML selon XSL. Utilisation du langage de transformation XSLT. Convertir un document en vue avec des objets de formatage

Bonne journée!

Préface

Un jour, je voulais mieux connaître Rails, mais je ne savais pas par où commencer jusqu'à ce que cet article attire mon attention. Ensuite, vous verrez la traduction mélangée à propre expérience et les tournures lexicales et phraséologiques qui me caractérisent. Alors, allons-y.

Introduction

J'ai beaucoup d'expérience avec PHP, mais je travaille maintenant en tant que développeur Rails. Le plus grand défi pour la plupart des personnes qui tentent d’apprendre quelque chose de nouveau est le processus d’apprentissage lui-même. Lorsque vous maîtrisez un langage ou un framework et que vous le connaissez parfaitement, passer à quelque chose de nouveau ne semble pas nécessaire.

Cependant, apprendre Ruby on Rails est assez simple. Il s'agit d'un cadre incroyablement puissant qui bénéficie d'une énorme communauté qui le fait avancer. La question que nous nous posons est donc : quelle est la meilleure façon d’apprendre Rails ? Le voici : le plan de cours.

Cet article est plan complet les leçons nécessaires pour vous familiariser avec Rails et commencer à travailler avec lui dans les plus brefs délais. Tout ce que vous avez à faire est de suivre les étapes ci-dessous, répertoriées dans l’ordre.

Point 1 : travailler avec des exercices dans Try Ruby

Vous pourriez penser qu’apprendre Ruby est la meilleure chose ici étape importante, mais ce n'est pas vrai. Certains de ceux qui commencent à étudier Ruby en détail arrêtent d'étudier et continuent simplement à travailler avec langue actuelle et le cadre. Ne fais pas ça !. N'ayez pas peur d'apprendre cette langue (ou toute autre). Ruby est une langue amusante, géniale et facile à apprendre. De plus, n’oubliez pas que vous n’êtes pas obligé de l’étudier à 100 %. Il vous suffit de connaître les bases.

L'outil le plus recommandé pour se plonger dans la syntaxe Ruby est le site Web TryRuby. Il fournit un environnement interactif qui vous permet d'essayer la syntaxe en action. Si vous composez aide, vous serez invité à regarder un tutoriel d'une quinzaine de minutes qui vous apprendra les bases. N'oubliez pas que le manuel comporte deux chapitres, que vous pouvez lire en tapant aide 2.

Si vous travaillez bien sur ces tâches pendant un certain temps, vous aurez bonne base connaissance. Tout ce que j'ai fait d'abord, c'est d'étudier ces deux manuels. Le reste, j'ai appris en développant des sites sur Rails, ainsi qu'en recherchant sur Google et en m'exerçant avec IRB.

Point 2 : Installer Ruby et Ruby on Rails

Si vous souhaitez apprendre Rails, vous devrez sans doute l'installer sur votre ordinateur. Voici plusieurs solutions basées sur le système d’exploitation dont vous disposez. Si vous possédez un ordinateur Mac ou Linux, je vous recommande d'utiliser RVM. C'est un excellent outil pour installer Ruby. En fait, voici les instructions pour l'installation elle-même. Si vous disposez de Windows, vous devrez utiliser RubyInstaller.

L'étape suivante consiste à installer Rails lui-même. Pour ce faire, vous devez installer RubyGems. Si vous utilisez RVM, alors félicitations : RubyGems est déjà installé. Si vous avez Windows, alors je vous conseille de suivre ici. Pour installer Rails, vous devez utiliser la commande rails d'installation de pierres précieuses et puis, tout est fait !

Point 3 : Lire l'introduction à Rails de Jeffrey Way


Dans ce screencast de 40 minutes, Jeffrie Way vous explique ce que vous devez savoir pour utiliser Rails. Il contient de nombreuses informations utiles, notamment sur des sujets tels que :

  • Modèles et générateurs
  • Développement piloté par les tests (TDD)
  • Enregistrement actif
  • RSpec et Capybara
  • Partiels
et bien plus encore...

Point 4 : Suivez le cours Rails For Zombies

J'ai toujours pensé qu'apprendre par l'exemple était la meilleure solution la meilleure façon apprendre une langue ou un framework. Un cours gratuit et incroyablement puissant que vous devriez absolument consulter est Rails For Zombies, créé par les gars d'EnvyLabs. Ce cours est interactif, ce qui signifie qu'après avoir regardé chaque vidéo, vous travaillerez sur des exercices utiles et intéressants.

En attendant, je vous parlais d'outils interactifs et gratuits. Le temps des cadeaux est terminé ! Vous devriez maintenant acheter un livre intitulé Agile Web Development with Rails. Il est conçu pour vous apprendre à utiliser Rails en créant un site Web à partir de zéro. Elle passe principes fondamentaux de base, comme les contrôleurs, les modèles, les échafaudages, les tests fonctionnels, et aussi un peu d'AJAX. Achetez au moins la dernière édition.

Point 6 : Créer un blog simple

Je sais que cela semble plutôt ennuyeux (du moins pour moi) mais c'est excellent exemple, qui est utilisé partout car il est assez simple et rapide à écrire. En suivant ce chemin, vous contribuerez à consolider vos connaissances et vos compétences. Mais je vous suggère de ne pas copier-coller (vous n'obtiendrez rien en faisant cela, à part peut-être 10 minutes d'électricité gaspillée), mais d'essayer de l'écrire progressivement, de mémoire, parfois simplement en regardant le livre pour voir comment telle ou telle méthode fonctionne.

Point 7 : Ajoutez de nouvelles fonctionnalités à votre blog

Fabuleux! Avez-vous finalement construit le vôtre ? propre blog. Mais il n’a toujours pas toutes les fonctionnalités, mais ne présente que fonctions de base inhérent à chaque blog. Bon, travaillons un peu et ajoutons un système d'authentification.

En fait, je ne veux pas vous forcer à faire quelque chose de difficile pour le moment, parce que vous avez déjà travaillé dur. Vous pouvez utiliser une gemme prête à l'emploi (Omniauth, par exemple) comme système d'authentification. En même temps, vous découvrirez comment implémenter des gemmes dans votre projet.

Je recommande également de regarder ce screencast de Ryan Bates, qui décrit la création d'un système d'authentification simple à partir de zéro. Après avoir implémenté le système, vous devez ajouter la possibilité de supprimer/modifier des publications si vous ne l'avez pas déjà fait. Si la tâche est déjà terminée, il est temps de passer au point suivant.

Point 8 : créer quelque chose qui vous est propre

Sur à ce stade Il est temps pour vous de devenir plus créatif et de penser à créer une sorte de service (par exemple, l'hébergement de photos). Ne vous arrêtez pas à la conception de votre deuxième site Web. Prenez quelque chose de tout fait. Par exemple,

Écrire de ce texte L'auteur a été motivé par l'étude d'un certain nombre de choses trouvées dans Réseau mondial des matériaux qui pourraient tout à fait être désignés sous une même rubrique/étiquette : Comment j'ai appris Ruby(ou Ruby on Rails, PHP, JS, C++, etc.) dans trois jours.

Ou quelque chose comme ça. L'auteur, à son tour, a immédiatement rappelé (associations incontrôlables) un certain nombre d'anecdotes, unies à nouveau par un thème commun, qui consiste en la caractérisation évaluative d'actions qui peuvent être accomplies de manière stupide... la langue russe est puissante et incroyablement aphoristique, mais , malheureusement, il ne semble pas possible de citer ici ces chefs-d'œuvre ; Il ne reste donc plus qu’à proposer à l’attention du lecteur une version écrite personnellement du document de la série. Comment apprendre à travailler dans Ruby on Rails avec plaisir et relativement rapidement.

Un exemple fonctionnel du code décrit dans l'article, parmi d'autres exemples Rails, peut toujours être trouvé sur le blog de test de l'auteur sur herokuapp.com, bienvenue.

La technique est simple, et l'auteur ne revendique pas ici les lauriers d'un découvreur : il faut que ce soit intéressant, et les résultats ne vous feront pas attendre. Cela ne fait pas de mal d’essayer de jouer sur ses propres faiblesses, car parfois la vanité peut être bénéfique à la cause ; les résultats du développement doivent être tels qu'ils puissent être fièrement présentés aux lecteurs, amis et collègues sur Internet, déployés quelque part sur Héroku ou Amazone, aussi - pour que nous puissions y revenir encore et encore, reconstruire et améliorer, les forums et StackOwerflow nous aident tous. Alors je dis, pourquoi ne pas écrire, d'abord, votre blog sur Rubis sur Rails?

Je suggère de commencer par l'excellent dossier Getting Started with Rails ou son adaptation en langue russe de Rails pour les débutants, ainsi que de créer un blog avec Ruby on Rails, et les documents de ce blog, dont les liens se trouvent facilement dans la barre latérale gauche, peuvent aider aussi. Et puis - c'est tout, puis magie, au début tout est écrit comme sur des roulettes, ouvrez la console - et en avant... l'auteur considère de son devoir de faire juste quelques explications et recommandations techniques, conçu pour permettre à l'adepte de trouver et d'acquérir plus facilement le côté lumineux de la Force, et rien de plus. Ce n’est que votre combat, avancez avec audace et revenez victorieux.

Donc. Le pas à pas du premier manuel est parfaitement calibré et, je l'espère, ne vous posera aucun problème ; il vous suffit d'être attentif, de répéter scrupuleusement les étapes détaillées... et au bout d'une heure votre premier blog est prêt, vous pouvez faire une pause et passer au second, un peu plus intéressant. Et c'est ici que, peut-être, quelques conseils d'adieu pourraient s'avérer utiles, auxquels nous allons maintenant procéder.

Commençons par affirmer que ces méthodes sont tout à fait capables (en option) de ressembler à ce qui est montré ci-dessous, mais en aucun cas comme dans l'original :

app/controllers/posts_controller.rb

# L'action de mise à jour met à jour la publication avec les nouvelles informations def update if @post.update_attributes(post_params) flash[:notice] = "Publication mise à jour avec succès !"

redirect_to posts_path else flash[:alert] = "Erreur lors de la mise à jour de la publication !"

render:edit end end # L'action show restitue la publication individuelle après avoir récupéré l'identifiant def show end # L'action destroy supprime définitivement la publication de la base de données def destroy @post = Post.find(params[:id]) if @post . destroy flash[:notice] = "Message supprimé avec succès !" redirect_to posts_path else flash[:alert] = "Erreur lors de la mise à jour de la publication !" fin fin Mais essayez ceci et cela, pourquoi pas. Passons à autre chose. Deuxième blog, bien que plus complexe (ajout de l'éditeur d'articles CKEditeur fin fin Et concevoir , un outil flexible d'authentification dans les applications Rails), pour une raison quelconque, il n'a pas la possibilité de laisser des commentaires dans l'original. Vous devrez combler vous-même cette lacune : procédez par analogie avec la description de la création du premier blog, seules des modifications très mineures seront nécessaires : pour faire simple, au lieu de fin fin article articles

tu auras le premier blog poste tu auras le premier blog messages Mais essayez ceci et cela, pourquoi pas. Passons à autre chose. dans le deuxième blog, c’est essentiellement la différence. Soyez prudent et tout s'arrangera.

Récaptcha

Vous devrez également créer vous-même un lien vers les commentaires : oui, oui, ce n'est pas Joomla pour vous, habituez-vous. Cependant, des efforts titanesques ne sont pas nécessaires pour le processus de connexion ;< Devise::RegistrationsController before_action:one_admin_registered?, only: [:new, :create] protected def one_admin_registered? if ((Admin.count == 1) & (admin_signed_in?)) redirect_to root_path elsif Admin.count == 1 redirect_to new_admin_session_path end end end

est décrit en détail dans l'article Connecting Recaptcha in Rails application. Ensuite, il n'est pas superflu d'ajuster

de telle manière que le blog fonctionne (au moins au début !) en mode mono-utilisateur, permettant à beaucoup de ses lecteurs d'être en LECTURE SEULE, en d'autres termes, nous interdirons dans un premier temps l'enregistrement de nouveaux utilisateurs. Il existe de nombreuses recettes différentes sur Internet sur la façon de procéder, mais, à mon avis, le hack le plus compétent de ce type se trouve dans le projet Wiki, dans le document intitulé Comment : configurer le système en tant que système à utilisateur unique. . A savoir : on crée un nouveau contrôleur :

app/controllers/registrations_controller.rb :

Contrôleur d'inscriptions de classe
puis nous le remplaçons dans routes.rb, et c'est tout :

#devise_for:admins devise_for:admins, contrôleurs : ( inscriptions : "inscriptions")

CKEDITOR.editorConfig = function(config) ( // config.enterMode = 2; //désactivé

Peut-être que pour commencer, c'est vraiment tout... bon sang, j'ai presque oublié la chose la plus importante. Si vous déployez votre nouveau blog aller à Héroku- ajoutez ces trois lignes à

config/application.rb

Config.assets.precompile += Ckeditor.assets config.assets.precompile += %w(ckeditor/*) config.autoload_paths += %W(#(config.root)/app/models/ckeditor)

Sinon redirect_to posts_path else flash[:alert] = "Erreur lors de la mise à jour de la publication !" refusera de travailler pour vous dans votre nouveau lieu.

Tous les exemples ci-dessous utilisent le standard de langage XSL. Une modification plus moderne de cette norme, le langage XSL, est également largement utilisée. T, que vous pouvez lire plus en détail dans \xml\XSLTutorial ou MSDN.

Regardons un exemple simple de fichier XML (ex01.xml). Cet exemple et d’autres peuvent être trouvés dans le dossier \xml\ XSLTForBeginers sur le disque.



"Remarques sur XSL"

Si nous ouvrons ce fichier dans Internet Explorer, nous verrons le même texte que ci-dessus, ainsi que toutes les balises et informations de service. Mais nous n'avons pas besoin de balises ni d'informations sur le service ! Nous souhaitons voir uniquement les informations pertinentes pour le cas et, à l'aide de balises, nous souhaitons contrôler l'apparence de ces informations. Cette tâche peut être résolue facilement et simplement : vous devez ajouter un modèle de transformation - un fichier XSL - au fichier XML.

Réécrivons notre fichier XML sous la forme suivante (ex01-1.xml).




"Remarques sur XSL"

Et créons un fichier XSL ex01-1.xsl. Le texte du fichier est donné ci-dessous.






Si nous ouvrons maintenant le fichier ex01-1.xsl dans le navigateur Internet Explorer, nous verrons que notre problème est résolu - seules les informations dont nous avons besoin restent à l'écran, toutes les balises ont disparu. Le résultat que vous obtiendrez sur l’écran de votre navigateur est indiqué ci-dessous.

"Remarques sur XSL"

Il est également facile de voir que l'ordre dans lequel les lignes sont affichées est déterminé uniquement par le contenu du modèle de transformation - le fichier XSL. Si nécessaire, le modèle peut être facilement modifié sans modifier du tout notre fichier XML principal.

Réécrivons le fichier XML. Nous ne modifierons pas la partie information, mais nous indiquerons un modèle différent ex01-2.xml.




"Remarques sur XSL"

Créons un fichier XSL ex01-2.xsl. Le texte du fichier est donné ci-dessous.






Si nous ouvrons maintenant le fichier ex01-2.xsl dans Internet Explorer, le résultat sera différent.

"Remarques sur XSL"

Notons maintenant un point essentiel pour les développeurs de bases de données. Les informations contenues dans une page XML apparaissent généralement à la suite d'une requête dans la base de données. Interroger une base de données dans un environnement multi-utilisateurs est une opération très coûteuse. Supposons maintenant que nous n'avons pas de XML et que nous générons des pages HTML statiques standard. Dans ce cas, pour résoudre le problème de la simple transformation de la représentation externe de l'information, par exemple pour modifier le tri, nous avons deux manières de résoudre le problème : exécuter la requête et stocker les résultats dans un tampon temporaire sur le serveur, ou à chaque fois que la représentation externe change, exécutez une nouvelle requête et régénérez la page HTML.

La première méthode nécessite une programmation fastidieuse, la seconde méthode augmente considérablement la charge sur le serveur de base de données, dont les performances constituent souvent le goulot d'étranglement du système - l'utilisateur souhaite toujours obtenir des résultats plus rapidement.

XML et XSL constituent une solution complète au problème décrit ci-dessus. En fait, une page XML est un tampon temporaire pour les résultats des requêtes. Seulement, au lieu d'une programmation non standard et fastidieuse, nous utilisons désormais le mécanisme XSL standard.

Il existe une autre considération qui peut être importante pour les développeurs de bases de données. La plupart des SGBD modernes peuvent formater les résultats d'une requête de base de données sous forme de fichier XML. Autrement dit, lors de la construction d'une interface utilisateur dans le cadre de la technologie XML et XSL, nous obtenons une certaine indépendance par rapport au fournisseur de SGBD. En termes d'organisation de la production, l'indépendance est quasi totale. Et cette partie est très importante dans la plupart des systèmes d'application axés sur l'utilisation de bases de données. Bien sûr, en plus de la sortie, il existe également un traitement d'entrée et de serveur de la logique métier, mais ici, vous devrez rechercher d'autres solutions.

Premiers pas

Examinons maintenant le premier exemple plus en détail. Rappelons son texte.



"Remarques sur XSL"

La première ligne informe le navigateur que le fichier est au format XML. L'attribut version est obligatoire. L'attribut d'encodage est facultatif, mais si vous avez des lettres russes dans votre texte, vous devez alors insérer cet attribut, sinon le fichier XML ne sera tout simplement pas traité - vous recevrez un message d'erreur.

Les lignes suivantes constituent le corps du fichier XML. Il est constitué d’éléments qui forment ensemble une structure arborescente. Les éléments sont identifiés par des balises et peuvent être imbriqués les uns dans les autres.

Les éléments peuvent avoir des attributs dont les valeurs peuvent également être traitées selon le modèle.

Il y a toujours un élément au niveau supérieur d'un fichier XML. Autrement dit, un fichier comme



"Remarques sur XSL"



"Présentation du CSP"

ne seront pas traités par le navigateur. Pour convertir en un fichier XML valide, vous devez ajouter des balises d'élément de niveau supérieur, par exemple




"Remarques sur XSL"



"Présentation du CSP"


Notez que les noms de balises sont sensibles à la casse. Vous pouvez en savoir plus à ce sujet dans n'importe quel livre sur XML - les éléments et les attributs reçoivent une grande attention dans ces livres.

Passons maintenant au modèle de transformation – le fichier XSL. Le travail d'un fichier XSL est de transformer l'arborescence d'un fichier XML en une autre arborescence qui, par exemple, sera conforme au format HTML et pourra être affichée sur l'écran du navigateur en tenant compte du formatage, des choix de polices, etc.

Pour que le navigateur effectue la transformation nécessaire, vous devez spécifier un lien vers le fichier XSL dans le fichier XML


Regardons maintenant le texte du fichier XSL






La première ligne du fichier contient la balise d'élément xsl:stylesheet. Les attributs de l'élément sont le numéro de version et la référence de l'espace de noms. Ces attributs d'élément xsl:stylesheet sont obligatoires. Dans notre cas, l'espace de noms est constitué de tous les noms d'éléments et de leurs attributs pouvant être utilisés dans le fichier XSL. Pour les fichiers XSL, la référence à l'espace de noms est standard.

Notez qu'un fichier XSL est un type de fichier XML. Il ne contient pas de données utilisateur, mais son format est le même. Le fichier contient un élément de niveau supérieur xsl:stylesheet, puis une arborescence de règles de transformation.

Dans ce document, nous n'expliquerons pas en détail ce que signifie chaque élément du fichier XSL. Nous donnerons différents exemples et montrerons le résultat dans chaque exemple, ce qui permettra de comparer indépendamment les différents éléments du fichier XSL et les transformations initiées par ces éléments du fichier XML source avec les informations utilisateur. Notez également que la valeur de l'attribut sélectionner et les similaires signifiant « choisir » sont écrits dans une langue spéciale XPath, que vous pouvez lire brièvement sur le disque \xml\XPathTutorial, et plus en détail sur MSDN.

À l'avenir, nous proposerons les textes des fichiers XML et XSL en noir et blanc. Vous pouvez toujours ouvrir le vrai fichier et tout voir en couleur. Si nécessaire, commentez le lien vers le fichier XSL. La syntaxe du commentaire est la suivante -. Les caractères -- ne peuvent pas être insérés dans le texte du commentaire.

Dans le premier exemple, nous avons vu comment l'élément xsl:value-of peut être utilisé pour afficher le contenu de l'élément (texte placé entre les balises) au format HTML. Nous allons maintenant voir comment utiliser le même élément pour afficher la valeur de l'attribut d'un élément.

Considérez le fichier XML suivant ex02-1.xml

Une introduction alternative à l'utilisation des transformations XSL en PHP à l'aide de Sablotron.

Ce matériel doit être considéré comme une introduction alternative à l'utilisation de XSLT avec Sablotron en PHP.

Les termes XSL et XSLT sont proches l'un de l'autre et pour les débutants, ils peuvent être considérés comme des synonymes. Les détails des différences sont décrits dans la spécification XSL Transformations W3C.

Toute personne intéressée par les capacités de XSLT a lu l'exemple standard du manuel ou les exemples donnés dans les articles sur XSLT sur divers sites. Un exemple fonctionnel de la même série :

Railroad Tycoon II Platine stratégie économique Logiciel PopTop DIEU. jeux 2001 Grand Prix 4 simulateur de voiture Geoff Crammond et Simergy Infogrammes Divertissement 2002 "; $xslData = " Jeux

Jeux

Nom genre année promoteur éditeur
"; $xh = xslt_create(); $arguments = array("/_xml" => $xmlData, "/_xsl" => $xslData); $result = @xslt_process($xh, "arg:/_xml", " arg:/_xsl", NULL, $arguments); if ($result) print ($result); else ( print ("Une erreur s'est produite lors de la transformation XSL...n"); print ("tNuméro d'erreur : " . xslt_errno($xh) . "n"); print ("tError string: " . xslt_error($xh) . "n"); exit; ) ?>

Il existe de nombreux exemples similaires sur Internet. Tous montrent bien que la transformation XSL en PHP fonctionne, mais après les avoir lus, on ne sait toujours pas pourquoi XSL est nécessaire, ou plutôt l'inverse - pourquoi XSL n'est pas nécessaire.

« Vraiment », pensera le lecteur, « si les données sont dans la base de données, pourquoi s'embêter à créer d'abord du XML puis à le convertir via XSL ? La classe de modèle HTML fera tout aussi bien cela. »

Après cela, le programmeur déçu se désintéresse complètement de XSL et qualifie la technologie de « nerd inutile ».

Vous, chers lecteurs, avez la chance d'avoir trouvé un site aussi merveilleux que « php en détail ». Ici, vous découvrirez comment XSL peut non seulement convertir du XML en HTML, mais également comment XSL peut faciliter l'utilisation des scripts PHP.

Commencer

L’exemple ci-dessus, bien que trop simple, illustre bien comment se fait la transformation XSL en PHP.

Pour que ce code fonctionne, vous devez installer le processeur Sablotron XSLT. Sur une machine Windows, cela se fait comme ceci :

1. mettez iconv(-1.3).dll, expat.dll et sablot.dll dans C:windowsSystem (tous les fichiers sont dans la distribution php standard)
2. ouvrez C:windowsphp.ini et recherchez-y le paramètre extension_dir. Si la valeur du paramètre est "." ou quelque chose comme "./", remplacez, par exemple, "f:usrlocalphpextension" (ou l'adresse du répertoire dans lequel vous avez/aurez des extensions php). Ce sera désormais le répertoire des extensions php.
3. placez le fichier php_xslt.dll (pour la version 4.2.x de php) ou php_sablot.dll (pour la version 4.0.x) dans le répertoire des extensions
4. dans php.ini, décommentez la ligne extension=php_xslt.dll (4.2.x) ou extension=php_sablot.dll (4.0.x)

Théorie

L'utilisation de XSLT vous permet de séparer le travail de formatage et de présentation des données des scripts PHP. Il s'agit non seulement d'une réduction de la quantité de code, mais également de la suppression d'un grand nombre de constructions logiques (if, sinon, switch), et donc de faciliter le travail d'écriture et de débogage des programmes. J'ose dire que quiconque n'a pas essayé de travailler avec XSLT n'a aucune idée à quel point le codage PHP sera plus facile.

Cependant, ne vous faites pas d'illusions : si vous aviez plusieurs constructions if ... else dans un script PHP, elles apparaîtront très probablement sous le même numéro dans le fichier XSL.

Passons maintenant aux exemples.

Sortie de listes

Toutes les complications liées à la nécessité d'afficher la liste sous une forme lisible par l'homme sont transférées sur les épaules de XSL. Exemple n°2. Une liste des articles du site avec mise en évidence de l'article en cours de lecture, alternance de couleurs dans les lignes et numérotation de la liste.

2002-05-30 Détecter les erreurs en PHP Un projet vivant et un magazine mort Travailler avec MySQL. Partie 7. Arbres Tri manuel dans l'interface web Comment s'entendre entre un designer et un programmeur Détendez-vous, c'est PHP

...

... #cccccc <

Balisage personnalisé

Lors de la traduction d’un site contenant des textes (comme celui-ci) en XML, il est naturel de vouloir créer votre propre balisage d’article. Par exemple, dans le conteneur important, mettez en évidence les endroits très importants et soyez capable de les mettre en évidence pas nécessairement avec une police en gras, mais peut-être avec de la couleur, un style CSS. Ou écrivez des citations comme texte de citation et pouvoir changer leur style de conception en même temps que la conception du site.

En avançant lentement à partir du premier exemple le plus simple, beaucoup tombent sur ce problème et ne trouvent pas de solution. Après tout, si vous sélectionnez un paragraphe dans la balise Et pour en faire un modèle, à première vue, il existe trois manières d'afficher le contenu :

1. La balise xsl:value-of affiche le texte mais supprime toutes les balises du paragraphe
2. La balise xsl:copy-of affiche une copie de tout le contenu (sans possibilité d'appliquer des modèles aux enfants - balises internes) et le conteneur lui-même (ce qui n'est pas très sympa en HTML).
3. enfin, xsl:apply-templates appliquera les modèles aux enfants mais ignorera le texte

Le problème semble désespéré, mais il existe une solution. J'utilise des modèles "magiques" qui affichent à la fois le texte et les balises qu'il contient avec tous les attributs et sans modifications. Exemple n°3 :

Cet exemple utilise modèles magiques pour analyser le balisage arbitraire. Cela évite les plaintes suivantes : Les gens, dites-le-nous, nous ne sommes pas locaux ! Je ne peux pas afficher les balises dans le texte en utilisant la valeur de !


Rappelez-vous ces modèles une fois pour toutes ! Ensuite, vous pouvez traiter n'importe lequel texte Presque n'importe lequel.

La première chose que fait le processeur XSLT lorsqu'il appelle l'instruction apply-templates est de rechercher un modèle pour chaque élément. Il existe un modèle pour l'élément fort, et c'est conformément à celui-ci que ces éléments seront traités. Il n’existe pas de modèle pour le lien hypertexte, il sera donc affiché tel quel. Vous pouvez également ajouter un modèle au XSL pour les liens, qui afficherait une image à côté de chaque lien texte pour l'ouvrir dans une nouvelle fenêtre :

* le modèle utilise le paramètre match="a[@href]" - ce modèle ne sera appliqué qu'aux balises de lien qui ont un champ href et ignorera les ancres ().

Code invalide et

Le besoin apparent d’écrire du code XML valide décourage également de nombreux néophytes du XSLT. D'accord, à partir de demain, nous n'écrirons que des articles valides, heureusement chez vous, vous pouvez vérifier s'il y a une erreur XML dans le texte - balise incompatible ou jeton invalide - nous traiterons cela d'une manière ou d'une autre. Mais, à l'amiable, l'intégralité des archives doit être transférée à code valide! Et je l’ai pensé aussi lorsque l’opportunité s’est présentée de refondre le site en XML.

La solution au problème est assez simple : si vous ne le voulez pas, ne l’écrivez pas valablement. Écrivez comme vous en avez l'habitude - sans guillemets dans les attributs de balise, utilisez simple
et ainsi de suite. De quoi enfermer le texte dans un conteneur(exemple ci-dessous).

Quant à la situation ici : il n'y a pas d'élément nbsp en XML. Il y a lt, gt, quot, mais pas nbsp (assez logique - il s'agit d'un espace non freinant, qui concerne le formatage et a été inventé pour HTML). Il doit donc être déclaré dans le document, ou utilisé uniquement en interne.

Exemple n°4 :

Les gens, veuillez noter que nous ne sommes pas nous-mêmes des locaux !


N'oubliez pas également ces modèles !

Très pratique ! De grands changements il n'est pas nécessaire de l'ajouter à l'archive. Vous pouvez commencer à écrire valablement, mais continuer au hasard. Ou vous pouvez combiner ces deux approches. Pour ne pas écrire archives de fichiers Balise CDATA, j'ai fait une conversion simple en utilisant expressions régulières(Il est également important de se rappeler qu’une balise CDATA ne doit pas en contenir une autre).

$doc = preg_replace("~<(p|h|pre)>(.*?)~", "<\1>\2", $doc);

Cycles

Disons que nous devons créer un formulaire pour éditer un article, incluant sa date. Pour faciliter l'utilisation, vous devez créer trois listes déroulantes (ci-après dénommées « torsions ») - date de 1 à 31, mois, année. La première solution qui vient à l'esprit est de créer le code HTML des spinners en php, de le coller en XML dans un conteneur CDATA, puis de le sortir en XSL avec le paramètre Disable-output-escaping="yes".

En fait, XSLT peut aussi le faire. Collez simplement dans Données XML date, numéro de mois et année. Les spinners peuvent être dessinés directement dans XSLT.

Écrivons un modèle qui n'est destiné à aucun élément de document. Il sera appelé par la commande xsl:call-template et recevra deux paramètres : la valeur du compteur et le maximum. Tout d'abord, il affichera les données dont nous avons besoin avec la valeur du compteur, puis s'appellera avec les paramètres maximum et le compteur augmentera de 1. Exemple n°5 :

Février Mars Avril Peut Juin Juillet Août Septembre Octobre Novembre Décembre

... 7 10 2002

... ...

je vous le laisse comme devoirs modèle pour afficher une barre de défilement avec l'année.



Annotation: Décrit la génération de code à l’aide de transformations XSLT. La syntaxe XSLT, les fonctionnalités d'application de transformations, ainsi que l'exécution d'opérations telles que le filtrage, le tri et la sélection conditionnelle dans les modèles sont étudiées. Réaliser une transformation par programmation en C#. Avantages et inconvénients de la technologie.

Langage de transformation XSLT

Dans le deuxième cours, nous avons déjà examiné un exemple utilisant XSLT. Dans cette conférence, nous examinerons cette technologie plus en détail. XSL (langage de feuille de style extensible) signifie Extensible Style Language et est un langage de création Styles XML documents. XSLT(Transformation XSL) est le langage de transformation XSL et en fait partie. Le style XSLT est conçu pour transformer structure hiérarchique et format de document XML. Les résultats de la transformation peuvent être un fichier XML, un fichier texte, du code de programme, un fichier HTML, un fichier au format Format PDF, et ainsi de suite. Ce langage offre de puissantes capacités pour manipuler des données, des informations et du texte sous une forme hiérarchique.

Et c’est exactement ce qu’il faut pour générer du code. L'utilisation de XSLT peut grandement faciliter la génération de code. De plus, il constitue une alternative pratique à la technologie des modèles T4.

XSLT a été développé par un consortium W3C ( Mondial Consortium Web). La première version du langage, XSLT 1.0, est devenue une recommandation le 16 novembre 1999, et XSLT 2.0 est devenue une recommandation le 23 janvier 2007. Les deux versions sont utilisées assez activement et dans cette conférence, nous examinerons les fonctionnalités de base qui leur sont communes. Cela signifie que nous considérerons principalement la première version. Nous mentionnerons également quelques commandes de la deuxième version.

Comment fonctionne XSLT

Le modèle XSLT comprend les parties suivantes :

  • documents XML,
  • Styles XSLT,
  • processeur XSLT,
  • documents de sortie.

Documents XML sont des données d'entrée qui doivent être converties en d'autres documents. Document Style XSLT est un document XML bien formé et contient un ensemble de règles pour effectuer la transformation. En d’autres termes, un document de style est un modèle.

Processeur XSLT est une application qui accepte les documents XML et les styles XSLT en entrée. Il effectue une transformation, c'est-à-dire applique un ensemble de règles dans les styles XSLT aux documents XML. Le résultat de ce travail est documents de sortie.

Les processeurs XSLT ont de nombreuses implémentations et sont intégrés à de nombreux navigateurs comme Internet Explorer, Firefox, Mozilla, Opera et autres. Internet Explorer utilise l'outil MSXML développé par Microsoft. Le processeur XSLT est intégré à Internet Explorer à partir de la version 4.5. La sortie générée des exemples de cette conférence peut être visualisée en ouvrant les fichiers XML dans l'un des navigateurs. A la fin du cours, nous examinerons les possibilités de lancer la transformation par programmation, en utilisant les cours de langage de programmation appropriés.

XPath

Une autre partie de la technologie XSL est le langage XPath, conçu pour accéder aux nœuds d'un document XML en spécifiant des chemins et des expressions. Le langage XPath est utilisé dans les fichiers de style pour naviguer dans les documents XML, en identifiant les parties du document XML source qui correspondent à un ou plusieurs modèles donnés. Lorsqu'une correspondance est trouvée, le processeur XSLT lui appliquera les règles appropriées du fichier de style et le convertira en une partie du document résultant. Les fichiers de style XSLT font un usage intensif des expressions XPath.

Utiliser XSLT

Le langage XSLT est constitué de nombreuses instructions écrites sous forme de balises. Le nom de chaque instruction commence généralement par les caractères xsl. Pour effectuer la transformation, le document de style XSLT doit être un document XML valide.

Pour transformer un document XML, vous devez ajouter une instruction similaire à la suivante au début du document :

Une feuille de style XSL contient généralement de nombreux éléments, dont le plus important est l'élément xsl:feuille de style. C'est lui qui indique que ce fichier XML est un fichier de style. En plus de cela, il peut contenir d'autres éléments, par exemple xsl:modèle, xsl:valeur de. Le document XML et le fichier de style sont transmis au processeur XSLT, qui traite ces fichiers, effectue la transformation et génère le résultat de la transformation.

Ci-dessous se trouve Document XML, contenant une liste de langages de programmation.

C# Visual Basic Delphes Prologue Exemple 5.1.

Fichier Langues.xml Vous devez afficher cette liste au format HTML. A cet effet, nous utilisons les instructions xsl :pour-chacun

, qui appliquera une partie du modèle aux sections du document dont les noms sont spécifiés dans l'attribut select. Dans notre cas, nous préciserons select="langues/langue" .

Le fichier de style qui sera utilisé est :

-

Mes langues préférées :

Exemple 5.2. Vous devez afficher cette liste au format HTML. A cet effet, nous utilisons les instructions Fichier langues.xsl xsl:valeur de Modèle à l'intérieur

imprime le contenu de chaque élément de langage à partir de langues. A cet effet, l'instruction est utilisée

et l'attribut spécifié select="." . Cela signifie que le processeur doit sélectionner le contenu textuel de l'élément actuel dans le document. En plus d'afficher du contenu, vous pouvez spécifier les noms de balises spécifiques, ainsi que des attributs pour sélectionner les valeurs qui y sont stockées. Des exemples seront discutés ci-dessous.

  • Visual Basic
  • Ouvrons le fichier XML via Internet Explorer ou un autre navigateur. Le texte suivant s'affichera :
  • Mes langues préférées :

Delphes xsl:modèle Prologue L'un des éléments les plus importants du style est.

. Sert à définir un modèle réutilisable et contient les règles selon lesquelles le document XML sera transformé. L'attribut match contient une expression permettant de sélectionner les nœuds auxquels le modèle sera appliqué. Un attribut de nom peut également être présent. Dans ce cas, il est possible d'appeler un modèle par son nom avec une instruction Vous devez afficher cette liste au format HTML. A cet effet, nous utilisons les instructions xsl: appliquer des modèles

Pour répéter la sortie du modèle pour chaque élément du document, utilisez l'instruction xsl:valeur de. Le modèle est exécuté pour chaque élément qui correspond à la condition spécifiée dans l'attribut select.

Instructions

sert à évaluer l'expression écrite dans l'attribut select puis à afficher le résultat à l'endroit où se trouve l'élément lui-même.

Filtration Vous devez afficher cette liste au format HTML. A cet effet, nous utilisons les instructions Nous avons considéré le cas où les valeurs de chaque nœud sont lues. Cependant, il est souvent nécessaire de sélectionner seulement une partie des données, c'est-à-dire qu'elles doivent être filtrées. Les modèles XSLT prennent en charge deux méthodes de filtrage. xsl:modèle. Nous verrons l'utilisation de match plus tard, mais pour l'instant, nous examinerons select .

Modifions un peu le fichier de données : ajoutons un attribut haut, indiquant si la langue de notre liste est une langue de haut niveau. Nous élargirons également la liste des langues.

C# Visual Basic Delphes Prologue Assembleur Java Perl Exemple 5.3.

Langues du fichier4.xml haut Notez que la valeur false pour l'attribut

ne vaut que pour la valeur "Assembler" . Modifions un peu le fichier de feuille de style :

-
Langages de haut niveau :

Exemple 5.4. Fichier langues4.xsl Dans la rubrique [@ hautélevé = "vrai"]

nous précisons que seuls les nœuds de document qui ont l'attribut

a la valeur "true" . Le signe @ est un symbole indiquant qu'il est suivi d'un nom d'attribut.

  • Visual Basic
  • Ouvrons le fichier XML via Internet Explorer ou un autre navigateur. Le texte suivant s'affichera :
  • Mes langues préférées :

Regardons le résultat : Langages de haut niveau :.

Comme vous pouvez le constater, la valeur « Assembleur » n'est pas affichée dans la liste des langues, c'est-à-dire que le processeur XSLT a filtré les données selon

conditions données Vous devez afficher cette liste au format HTML. A cet effet, nous utilisons les instructions Tri

Outre le filtrage, une autre opération couramment utilisée dans la génération de code est le tri. L'attribut order-by de l'instruction haut sert à trier le résultat, à indiquer l'ordre de passage des nœuds du document lors de l'exécution d'une transformation. Les champs à trier sont répertoriés séparés par des points-virgules et comportent également des signes "+" ou "-" devant leur nom, indiquant un tri par ordre croissant ou décroissant. haut Considérons une version légèrement modifiée du document - au lieu de l'attribut nous utiliserons l'élément level, qui prend des valeurs ou

C# faible Visual Basic faible Delphes faible Prologue faible Assembleur . Et nous écrirons le nom de la langue dans l’élément name. Java faible Perl faible haut

faible Vous devez afficher cette liste au format HTML. A cet effet, nous utilisons les instructions Exemple 5.5.

ne vaut que pour la valeur "Assembler" . Modifions un peu le fichier de feuille de style :

-
Langues du fichier6.xml

Dans la feuille de style suivante pour les instructions



Des questions ?

Nom

E-mail