Partage
  • Partager sur Facebook
  • Partager sur Twitter

[XML/HTML] Transformer un fichier XML en HTML

Anonyme
17 janvier 2011 à 13:29:03

Bonjour à tous,

je dois réaliser un projet dans lequel je dois créer un fichier HTML à partir d'un fichier XML. Seulement plus je recherche et plus je trouve des langages/méthodes concernant ce sujet et du coup je suis un peu perdu.

Pour le moment, je sais que mon fichier de départ sera en XML et qu'il me faudra un résultat en HTML/CSS.
D'après ce que j'ai compris, on peut vérifier la validité du XML avec XML Schema (XSD) ou DTD et une des solutions pour réaliser la transformation serait XSLT ?

Par contre, je n'arrive pas à faire le lien entre le XML et mon résultat final.
Par exemple, dans mon fichier XML, si j'ai une balise
<news x="10" y="20">Texte</news> avec x et y la position du texte dans mon fichier, je ne vois pas comment je pourrai positionner réellement le texte dans le HTML via le CSS ?

Une dernière précision : j'aimerais éviter autant que possible les langages Java, Flash etc. A la limite PHP serait utilisable si on ne peut pas faire autrement..

Merci d'avance pour toutes les informations que vous pourrez me donner. :)
  • Partager sur Facebook
  • Partager sur Twitter
17 janvier 2011 à 14:45:48

Pour moi la réponse est évidente : le Javascript.

Comme tu dois manipuler le DOM, l'utilisation de jQuery serait très utile dans ton cas, c'est plutôt simple en plus.
  • Partager sur Facebook
  • Partager sur Twitter
17 janvier 2011 à 16:04:43

Citation : Desolation

Pour moi la réponse est évidente : le Javascript.


A la base le Javascript n'est pas prévu pour ça. Il existe des librairies pour manipuler le DOM, mais ce n'est pas ce qu'il veut faire ici: apparemment il veut plutôt créer un document HTML, pas transformer dynamiquement un document existant.

XSLT a été conçu spécifiquement pour transformer un document XML vers un autre (XHTML notamment), et est donc la solution préconisée par défaut. Ca fonctionne selon un principe de templates: par exemple tu peux créer un template qui à chaque élément <news> de ton fichier XML va faire correspondre un élément <div> dans le document XHTML produit, avec un contenu plus ou moins complexe selon la mise en forme que tu veux donner à ta news.

Malheureusement XSLT n'est pas facile à prendre en main, mais c'est la solution la plus puissante/flexible. Et ce n'est pas un langage de programmation, mais bien un modèle déclaratif ;)

Par contre:

Citation

Par exemple, dans mon fichier XML, si j'ai une balise
<news x="10" y="20">Texte</news> avec x et y la position du texte dans mon fichier, je ne vois pas comment je pourrai positionner réellement le texte dans le HTML via le CSS ?


Là tu as un problème de conception, car ton document XML n'est pas censé contenir des informations destinées à sa présentation. Il ne devrait contenir que des données "brutes", qui seront mises en forme grâce à un template (dans le cas de XSLT) et donc le calcul de la position des éléments (s'il est nécessaire) dépend uniquement du template utilisé :)
Après, s'il y a des raisons précises qui t'obligent à travailler de cette manière, tu peux effectivement positionner certains éléments avec une position absolue... Mais du coup la position des éléments sera forcément définie "inline" dans le HTML et pas dans le CSS.
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
17 janvier 2011 à 17:30:38

Merci pour vos réponses !
Je vais faire des recherches du coté du JavaScript pour voir si ça me permet de faire ce que je veux.

Citation : Orwell

Ca fonctionne selon un principe de templates: par exemple tu peux créer un template qui à chaque élément <news> de ton fichier XML va faire correspondre un élément <div> dans le document XHTML produit


D'accord, avec ça je vois tout de suite mieux le principe. Comme j'ai le choix des technologies utilisées, je cherche un peu dans toutes les directions et je choisirai le meilleur ensuite.

Je vais essayer d'être plus clair sur mon projet, peut être que vous pourrez m'indiquer ce qui convient le mieux.
Le fichier XML contient les données d'une affiche : un fond (url ou couleur), un titre, un texte et une image (url) pour faire simple.
Ce que je dois faire, c'est lire les données et les afficher dans un navigateur en HTML et CSS selon les indications de position.
Le principe, ensuite, c'est que ce "lecteur XML" pourra lire toutes les affiches.

Citation : Orwell

Là tu as un problème de conception, car ton document XML n'est pas censé contenir des informations destinées à sa présentation.


Comme la présentation d'une affiche à l'autre changera, j'ai besoin de ces informations dans le fichier XML. Je ne vois pas comment les connaitre sinon ? Mais je me trompe peut être complétement... Je me débrouille en HTML/CSS et un peu JavaScript mais là je me lance dans le XML sans aucune connaissance.
  • Partager sur Facebook
  • Partager sur Twitter
17 janvier 2011 à 18:41:26

On peut aussi créer le fichier en PHP, y insérer par défaut un doctype, une base HTML en quelque sorte et le manipuler ensuite en JS. Bon après il y a peut-être des meilleures méthodes.
  • Partager sur Facebook
  • Partager sur Twitter
9 août 2017 à 10:54:42

salut a tous , sa m'interesse aussi 

je voudrais savoir si tu avais reussi a realiser ton projekt si oui quel methode a tu utiliser ?

merci d'avance pour toute Reponses

  • Partager sur Facebook
  • Partager sur Twitter
18 mai 2022 à 20:33:57 - Message modéré pour le motif suivant : Merci d'utiliser le bouton code du forum pour insérer votre code


18 mai 2022 à 20:59:23

@KarimaNaciri1 Bonsoir, merci de ne pas déterrer d'ancien sujet résolu. Créer le votre dans le respect des règles du forum à savoir qu'un message commence par des règles de politesses (un bonjour ou des salutations à la communauté et se termine par des remerciements par avance pour les futures réponses) un descriptif de votre problème et le code que vous avez écrit inséré sur le forum avec l'outil d'intégration de code soit le bouton code </>.

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter