Tag du fichier XML - Retrouvez les réponses et les commentaires concernant cette question" />
8
votes

Comment obtenir un chemin d'image pour Tag du fichier XML

J'aimerais utiliser un fichier XML xxx

dans une table HTML: xxx

Quelle est la meilleure façon de faire cela ?


1 commentaires

Bonne question (+1). Consultez ma réponse pour une solution complète située dans l'esprit de XSLT et pour une explication de tous les moments importants de la solution. :)


4 Réponses :


1
votes

Utilisez XSL. Exemple ici . BTW Pourquoi avez-vous le no Attribut?


0 commentaires

3
votes

11 commentaires

Cela ne traite pas de la partie la plus difficile (organiser les colonnes de la table), est sur-verbose ( a le même résultat) et est Buggy comme vous ne pouvez pas avoir d'élément d'image sans attribut alt et ne peut pas avoir d'élément d'image comme l'enfant d'un élément de corps.


@Jon: Permettez-moi de répondre à vos commentaires. 1. Organisation de la table HTML est trivial, j'ai supposé qu'il pouvait comprendre que la partie, mais pour vous, j'ai mis à jour mon exemple pour faire exactement ce qu'il tente de réaliser (testez-le vous-même) 2 . Votre exemple est bien plus compliqué que le mien, surtout pour quelqu'un qui commence avec XSLT, le mien fait ce qu'il faut faire et c'est simple 3. Je ne vois pas comment il est buggy, Vous pouvez mettre le img n'importe où, mon exemple fonctionne! Je suis confus quant à la raison pour laquelle vous avez voté. Bonne journée.


Je suis d'accord avec Johnb - Simple est toujours une meilleure solution à mon avis surtout si vous commenciez tout juste à apprendre une nouvelle technologie - essayer de maîtriser le concept est suffisamment difficile sans avoir à faire tomber si une sténographie cryptique - je dis toujours - "gardez-le simple stupide"


1. La question demande trois cellules par colonne, votre réponse donne un résultat complètement différent. 2. Le mien est tout aussi compliqué que nécessaire pour être aussi loin que possible, pour répondre à la question. Je serais heureux de voir des simplifications, mais seulement s'ils répondent à la question. Vous êtes trop compliqué à utiliser {} sera servi. 3. Vous ne pouvez pas mettre le n'importe où, comme ne permet que des balises de blocs (HTML5 modifiera ceci si cela n'est pas modifié avant REC Statut), ne fonctionne que parce que les navigateurs sont censés avoir un comportement en retard lorsqu'ils rencontrent Buggy HTML.


Mais le doit être à l'intérieur d'un quand même


Ce n'était pas dans votre première version.


@Doug, {} n'est pas simplement un sténographie cryptique pour , bien que l'on puisse toujours utiliser où l'on peut utiliser {} . a une utilisation complètement différente et les règles de la manière dont il interagit avec d'autres éléments XSL peut être relativement compliquée car XSL va, tandis que {} est simple, Bien que moins puissant. Je préférerais beaucoup enseigner un débutant {} d'abord, puis que d'enseigner la forme plus compliquée d'abord, puis d'expliquer qu'il y a aussi un raccourci.


@Jon: Votre exemple est sympa et j'ai appris quelque chose de celui-ci, +1


Merci. Dit gracieusement, juste quand je craignais que nous allions entrer dans une rangée. FWIW, je pense que vos premières et secondes réponses sont magistrales dans l'esprit de XSLT (une belle déclaration d'intention claire), j'ai juste les objections que j'ai énoncées.


MDR. Bien sûr, seulement MAINTENANT Dois-je remarquer que la mienne avait un bogue massif d'avoir "match" où il aurait dû avoir "Select"!


Wow! Cette "réponse acceptée" n'est pas une solution, mais une substitution de l'échantillon d'entrée par d'autres entrées avec le travail déjà effectué! Aussi la transformation ultérieure ( Pics par Tableau , PIC par tr , td -is, n ° par img ) est masqué par un modèle "Brique".



3
votes

Il y a un bogue dans la sortie suggérée, car éléments doit avoir des attributs alt dans chaque version de HTML dans lequel ils sont présents.

Quoi qu'il en soit.

Ce qui suit, cela fait-il mais sans ces attributs pouvant être faits à partir de CSS (juste pour réduire la taille). Les ajoutant si le souhaité est trivial: xxx

Ce qui précède signifie que vous souhaitez que le chemin du fichier utilisé directement, ajout de code pour la transformer d'une manière ou d'une autre Dernière partie du chemin à l'aide de Substring-après () ) n'est pas une extension difficile, en supposant que ladite transformée n'est pas compliquée elle-même.

EDIT:

Johnb et moi-même sommes en territoire ici, le ci-dessus suffit à répondre à la question initiale.

ajouté pour donner une réponse plus complète à la question de Johnb. Ce qui suit est le code équivalent utilisant pour chacun au lieu de modèles de candidature. En théorie à la fois une mise en œuvre séquentielle et une base d'État-machine d'un processeur XSLT devrait traiter avec cela de manière identique, bien que vous puissiez trouver des différences dans la pratique (si vous m'avez dit qu'ils étaient différents avec un processeur donné, je parie une petite quantité à ce sujet. Être légèrement plus rapide avec un traitement séquentiel et légèrement plus lentement avec un traitement de la machine à l'état, mais je ne parierais qu'une très petite quantité).

Notez que nous ne pouvons pas réutiliser le modèle par défaut pour la photo. Sur le côté plus, si nous avons un modèle par défaut différent pour la photo ailleurs (si cela faisait partie d'une fiche de style beaucoup plus compliquée), nous n'avons pas besoin d'être intelligent pour différencier entre eux, qui est la principale fois que je porte personnellement s'appuyer vers pour chacun. xxx


4 commentaires

+1 moyen très intelligent de générer les colonnes! Je n'ai jamais rien fait de cette fantaisie avec Xslt. Mais vous n'avez pas besoin d'une boucle autour du ?


Nous n'avons pas besoin d'une boucle, car les modèles de candidature dans la table prendront chaque troisième photo dans l'ordre, puis le modèle approprié sera exécuté, ce qui traite à son tour avec les deux suivants. Ou de la regarder d'une autre manière, les modèles d'application sont une boucle, bien que parfois une boucle sur un seul article. Il y a très peu (si quelque chose) que vous puissiez faire avec pour chacun que vous ne pouvez pas faire avec des modèles d'application, et inversement. La différence est normalement sur laquelle semble plus naturelle à l'époque, qui dépend du style de codeur dans une certaine mesure. Je me penche sur des modèles de candidature comme sans doute plus déclaratif et plus propice à la réutilisation


@JOHNB J'ai ajouté une mise en œuvre pour chaque mise en œuvre et une explication de la différence de réponse plus complète de cette question.


Comme je l'ai dit à Dimiter Novatchev, je trouve ces solutions difficiles à comprendre car je ne peux pas comprendre la façon dont XSLT fonctionne. Alors merci beaucoup et j'espère qu'un jour je vais l'obtenir.



0
votes

Voici une solution typique adhère à l'esprit de xslt fort> (no code>), aussi court que possible et paramétré sur le Nombre de colonnes dans la table.

<table cellspacing="2" cellpadding="2" border="0">
   <tr>
      <td>
         <img src="http://col.stb.s-msn.com/i/D7/6A19748C9AA58B938F42099543D2E.jpg" width="150" height="120"/>
      </td>
      <td>
         <img src="http://col.stb.s-msn.com/i/1F/35A8478AC24EEF95933B5F0E4E394.jpg" width="150" height="120"/>
      </td>
      <td>
         <img src="http://col.stb.s-msn.com/i/76/3ADA01320CEC8B31D53FACC0C11E.jpg" width="150" height="120"/>
      </td>
   </tr>
   <tr>
      <td>
         <img src="http://col.stb.s-msn.com/i/92/51BF117987A3279571F06BEB4AE39D.jpg" width="150" height="120"/>
      </td>
      <td>
         <img src="http://col.stb.s-msn.com/i/9B/9A6E876BA2F7EAE82392C7E7F6C1C.jpg" width="150" height="120"/>
      </td>
      <td>
         <img src="http://col.stb.s-msn.com/i/50/8CC964E5503A7F61F8AD22A12024.jpg" width="150" height="120"/>
      </td>
   </tr>
   <tr>
      <td>
         <img src="http://col.stb.s-msn.com/i/C4/F7EF634B7084DA69AAB5AAD05C8922.jpg" width="150" height="120"/>
      </td>
      <td>
         <img src="http://col.stb.s-msn.com/i/FB/C8367425D67FA391A5E0F8A3E0276B.jpg" width="150" height="120"/>
      </td>
   </tr>
</table>


3 commentaires

Il semble très élégant ... mais je suis moins qu'un débutant - je n'ai jamais vraiment eu le temps de comprendre la magie du XSLT. J'ai essayé de copier et coller votre code change les URL de photos et même ajouter w3.org/1999/XSL/transform "> ... je me suis perdu ... Mais merci quand même :)


+1 pour la seule réponse qui ne change pas l'entrée ou utilise un modèle de briques. @ASAF: Bien sûr, il s'agit d'une solution élégante, mais il n'y a pas de "magie" impliquée. De plus, la préférence pour xsl: pour chacune des instructions sur xsl: apply-templats n'est pas un privilège de débutant XSLT, c'est parce qu'il ya quelques fautes de paradigme déclaratif.


@Alejandro: Merci, votre avis est le plus apprécié. @ASAF: Vous risquez de rester débutant pour un temps looooong si vous ne vous efforcez pas d'apprendre.