Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1548 connectés 

  FORUM HardWare.fr
  Programmation
  XML/XSL

  capacité de sortie d une feuille de style

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

capacité de sortie d une feuille de style

n°367698
mat35
On m'appelle Bugman
Posté le 21-04-2003 à 14:27:17  profilanswer
 

Je voudrais pouvoir sortir plusieurs fichiers au format xml grace à une xsl. Est ce possible?
J'ai vu que xsl:output ne pouvait etre dans un xsl:template et dans mon cas ça m aurait bien aidé :( . En gros, ce que je veux faire ressemble à ça :  
plusieurs XML + une XSL -> plusieurs XML


---------------
Mise à jour du palmarès des crash : 1 lecteur CD, 1 lecteur disquette, 1 graveur, 1 CM, 3 DD IBM40Go, 1 DDR256MoPC2100 et une alim Fortron... à qui le tour? :)
mood
Publicité
Posté le 21-04-2003 à 14:27:17  profilanswer
 

n°367726
verdoux
And I'm still waiting
Posté le 21-04-2003 à 15:26:31  profilanswer
 

Une transformation s'applique à un document pour en produire un autre.
Donc ton cas tu peux faire n transformations.
Ou bien créer un super document en agrégeant les autres.

n°367757
mat35
On m'appelle Bugman
Posté le 21-04-2003 à 16:12:44  profilanswer
 

Bah, je m explique un peu plus précisement. Je veux automatiser un merge entre un peu plus de 200 fichiers. J'ai créé un fichier xml de correspondance entre les fichiers que je veux merger et ma feuille de style après prend en parametre chaque fichiers à merger et me donne un fichier résultat du merge. Cependant, xsl me colle tous mes résultats dans un meme fichier xml (le merge des 200 fichiers).
Oui je pourrais faire une centaine de xsl avec juste les noms des fichiers qui changent et là dans ce cas, j aurai un seul fichier xml à chaque fois mais ça serait hyper lourd! :pt1cable:  
Je voudrais donc si possible n utiliser qu une feuille de style qui en entrée me prend tous les documents (ça c est fait) et qui en sortie me sort chaque fichier xml résultat du merge.
Je fais le merge à chaque fois entre 2 xml donc mon schéma que je voudrais réaliser ressemble à :
100 XML de type a + 100 XML de type b + 1 XSL -> 100 XML de type res
Au début, je pensais que l on pouvait à l intérieur d'un xsl:for-each ... faire un xsl:output ... mais ce n est pas le cas! :sarcastic:  
Si quelqu un a une idée...j ai entendu parler de xalan qui pourrait le faire?


---------------
Mise à jour du palmarès des crash : 1 lecteur CD, 1 lecteur disquette, 1 graveur, 1 CM, 3 DD IBM40Go, 1 DDR256MoPC2100 et une alim Fortron... à qui le tour? :)
n°367767
verdoux
And I'm still waiting
Posté le 21-04-2003 à 16:21:43  profilanswer
 

Je sais pas quel processeur XSLT tu utilises.
Sous windows, avec MSXML tu pourrais faire un script (en vbscript par exemple) qui ferait la transformation pour chaque fichier.

n°367770
mat35
On m'appelle Bugman
Posté le 21-04-2003 à 16:25:59  profilanswer
 

Je ne sais pas quel processeur xslt j utilise, j utilise juste xml spy et je teste mes transformations avec ce programme.
Désolé mais je ne sais pas faire de vbscript :(


---------------
Mise à jour du palmarès des crash : 1 lecteur CD, 1 lecteur disquette, 1 graveur, 1 CM, 3 DD IBM40Go, 1 DDR256MoPC2100 et une alim Fortron... à qui le tour? :)
n°367772
verdoux
And I'm still waiting
Posté le 21-04-2003 à 16:27:25  profilanswer
 

Tu peux aussi le faire en python (via les extensions COM) :D

n°368379
duchzeworl​d
Posté le 22-04-2003 à 13:06:21  profilanswer
 

Ce doit effectivement être possible avec Xalan. L'idée étant de définir toi même des fonctions que tu appelles depuis ta feuille de style et qui sont codées dans un autre langage (Java par exemple). Il y a quelques exemples sur le site de Xalan.

n°369091
mat35
On m'appelle Bugman
Posté le 23-04-2003 à 01:28:40  profilanswer
 

Si vous avez des exemples, je suis preneur de sites web à propos de Xalan et de XSLT.  
J ai commencé à écrire un prog en java avec l aide de xalan mais je cherche à faire du xpath sur un fichier xml pour récupérer des données à l intérieur de mon programme java  :sweat:  pas encore trouvé comment faire! (haaa si ils avaient prévu plusieurs output pour les feuilles de style pfff)


---------------
Mise à jour du palmarès des crash : 1 lecteur CD, 1 lecteur disquette, 1 graveur, 1 CM, 3 DD IBM40Go, 1 DDR256MoPC2100 et une alim Fortron... à qui le tour? :)
n°369403
chocoboy
Posté le 23-04-2003 à 14:10:32  profilanswer
 

j'ai pas testé, mais as tu essayé :
 
<xsl:document> ?
 
je regarde la définition et y a marqué : "...cette fonction permet à une transformation de produire plusieurs fichiers de sortie et ainsi vous pouvez écrire une feuille de style qui répartit un fichier XML volumineux en ptits fichiers XML, ou en plusieurs fichiers HTML associés les uns au autres par des liens hypertexte"
 
extrait d'XSLT 2nde édition - Michael Kay. page 221
 
peut être peux tu envisager de l'utiliser dans un XLST traitant ton gros fichier XML mergeant les 200 fichiers ?

n°369547
mat35
On m'appelle Bugman
Posté le 23-04-2003 à 15:35:45  profilanswer
 

ha je vais faire une pause dans xalan alors! Je vais regarder les capacité de xsl : document  
Merci l ami :jap:


---------------
Mise à jour du palmarès des crash : 1 lecteur CD, 1 lecteur disquette, 1 graveur, 1 CM, 3 DD IBM40Go, 1 DDR256MoPC2100 et une alim Fortron... à qui le tour? :)
mood
Publicité
Posté le 23-04-2003 à 15:35:45  profilanswer
 

n°369618
chocoboy
Posté le 23-04-2003 à 16:31:30  profilanswer
 

ah oui, petite remarque :
 
"il s'agit d'une nouvelle instruction introduite dans le préversion de la recommandation XSLT 1.1, mais des fonctions similaires sont disponibles de manière propriétaire dans plusieurs processeurs XSLT 1.0 courants"
 
tiens, un exemple extrait du même bouquin :
 
le fichier XML en entrée :
 


<poem>
<author> Rupert Brooke</author>
<date>1912</date>
<title>Song</title>
<stanza>
<line>Truc</line>
<line>Bidule</line>
</stanza>
<stanza>
<line>...</line>
<line>...</line>
...
</poem>


 
et la feuille de style XSLT permettant un document de sortie différent pour chaque strophe ou "stanza" :
 


...
<xsl:template match="stanza">
<xsl:variable name="file" select="concat('verse', position(), '.xml')" />
<verse number="{position()}" href="{$file}" />
<xsl:document href="{$file}"><xsl:copy-of select="." /></xsl:document>
</xsl:template>
...


 
Bref, c'est assez facile à utiliser non ?!


Message édité par chocoboy le 23-04-2003 à 16:33:46
n°369621
mat35
On m'appelle Bugman
Posté le 23-04-2003 à 16:33:05  profilanswer
 

Tu vas rire, j ai trouvé quasiment le meme exemple sur le net et je suis en train de l adapter à mon probleme lol...le monde est petit :love:


---------------
Mise à jour du palmarès des crash : 1 lecteur CD, 1 lecteur disquette, 1 graveur, 1 CM, 3 DD IBM40Go, 1 DDR256MoPC2100 et une alim Fortron... à qui le tour? :)
n°369647
mat35
On m'appelle Bugman
Posté le 23-04-2003 à 16:47:53  profilanswer
 

il faut juste mettre  
 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1"> pour utiliser XSLT 1.1???
 


---------------
Mise à jour du palmarès des crash : 1 lecteur CD, 1 lecteur disquette, 1 graveur, 1 CM, 3 DD IBM40Go, 1 DDR256MoPC2100 et une alim Fortron... à qui le tour? :)
n°369656
mat35
On m'appelle Bugman
Posté le 23-04-2003 à 16:53:07  profilanswer
 

Car j ai essayé et en résultat j ai ça
 
<?xml version="1.0" encoding="UTF-8"?>
<verse number="1" href="verse1.xml"/>
<verse number="2" href="verse2.xml"/>
...
 
et aucune création de fichier :(
d ailleurs il gueule car le fichier n est pas bien formé à la fin de <verse number="1" href="verse1.xml"/> il attend du commentaire...en gros il comprend pas la suite!
C est pour ça que je demande si le bon xslt est lancé


---------------
Mise à jour du palmarès des crash : 1 lecteur CD, 1 lecteur disquette, 1 graveur, 1 CM, 3 DD IBM40Go, 1 DDR256MoPC2100 et une alim Fortron... à qui le tour? :)
n°369693
chocoboy
Posté le 23-04-2003 à 17:11:04  profilanswer
 

je sais pas... j'ai testé et ça marche très bien... c'est pratique d'ailleurs !
 
je l'ai testé rapido avec Saxon 6.2.2
 
avec  
 

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

n°369694
chocoboy
Posté le 23-04-2003 à 17:11:47  profilanswer
 

balance ton XML et XSLT pour voir si y a pas d'erreur ?

n°369696
mat35
On m'appelle Bugman
Posté le 23-04-2003 à 17:15:31  profilanswer
 

bah en fait, j essaye de faire marcher ton petit exemple mais je ne sais pas comment tu testes (moi c est avec xmlspy alors je sais pas trop quel processeur il prend) tu pourrais me dire comment faire avec saxon (ligne de commande?).
Je viens de télécharger saxon 6.5.2 à l instant meme.


---------------
Mise à jour du palmarès des crash : 1 lecteur CD, 1 lecteur disquette, 1 graveur, 1 CM, 3 DD IBM40Go, 1 DDR256MoPC2100 et une alim Fortron... à qui le tour? :)
n°369703
chocoboy
Posté le 23-04-2003 à 17:21:39  profilanswer
 

t'as les 2 fichiers :
test.xml et test.xsl
 
tu fais :
 

saxon test.xml test.xsl > out.html


 
par exemple...
 
Ca va te créer normalement :
out.xml
verse1.xml
verse2.xml
 
enfin, l'exemple que j'avais donnée n'était pas complet, à toi de rajouter le début dans le XSLT, genre le <xsl:template match="poem">...etc pour te créer tout le corps de ton HTML de sortie plus les liens... c'est vite fait...

n°369714
chocoboy
Posté le 23-04-2003 à 17:26:27  profilanswer
 

par exemple :
 


<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
 
<xsl:template match="poem">
<html>
<body>
 <xsl:apply-templates />
</body>
</html>
</xsl:template>
 
<xsl:template match="author|date|title">
<p><xsl:value-of select="concat(name(), ' : ', .)" /></p>
</xsl:template>
 
<xsl:template match="stanza">
<xsl:variable name="file" select="concat('verse', position(), '.xml')" />
<p><a href="{$file}"><xsl:value-of select="$file" /></a></p>
<xsl:document href="{$file}"><xsl:copy-of select="." /></xsl:document>
</xsl:template>
 
</xsl:stylesheet>

n°369724
chocoboy
Posté le 23-04-2003 à 17:31:21  profilanswer
 

... faut par mettre la majuscule au "d" de

<xsl:document>

... c'est le forum qui le fait automatiquement (comment on désactive ça ?)... au cas ou ce serait ça qui te fasse foirer...


Message édité par chocoboy le 23-04-2003 à 17:32:01
n°369725
mat35
On m'appelle Bugman
Posté le 23-04-2003 à 17:31:40  profilanswer
 

Je suis en train d insatller saxon (y a juste le classpath à changer apparemment)


---------------
Mise à jour du palmarès des crash : 1 lecteur CD, 1 lecteur disquette, 1 graveur, 1 CM, 3 DD IBM40Go, 1 DDR256MoPC2100 et une alim Fortron... à qui le tour? :)
n°369729
chocoboy
Posté le 23-04-2003 à 17:32:56  profilanswer
 

... je sais pas, moi j'ai juste saxon.exe et rien à modifier ...

n°369732
mat35
On m'appelle Bugman
Posté le 23-04-2003 à 17:34:32  profilanswer
 

j ai pas de saxon.exe moi dans ce que j ai téléchargé


---------------
Mise à jour du palmarès des crash : 1 lecteur CD, 1 lecteur disquette, 1 graveur, 1 CM, 3 DD IBM40Go, 1 DDR256MoPC2100 et une alim Fortron... à qui le tour? :)
n°369737
chocoboy
Posté le 23-04-2003 à 17:38:48  profilanswer
 
n°369741
mat35
On m'appelle Bugman
Posté le 23-04-2003 à 17:43:22  profilanswer
 

ha je crois que je tiens le bon bout avec ton saxon.exe il m a créé verse8.xml et verse10.xml (bizarre les nombres)


---------------
Mise à jour du palmarès des crash : 1 lecteur CD, 1 lecteur disquette, 1 graveur, 1 CM, 3 DD IBM40Go, 1 DDR256MoPC2100 et une alim Fortron... à qui le tour? :)
n°369745
chocoboy
Posté le 23-04-2003 à 17:45:51  profilanswer
 

c'est pas grave, c'est à cause du raccourci que j'ai pris en faisant

<xsl:apply-templates />


 
Pour les avoir bien numérotés, t'as qu'à remplacer cette ligne par :
 


<xsl:apply-templates select="author|date|title" />
<xsl:apply-templates select="stanza" />


Message édité par chocoboy le 23-04-2003 à 17:46:12
n°369754
mat35
On m'appelle Bugman
Posté le 23-04-2003 à 17:54:29  profilanswer
 

De toute façon, j utilise d autre nom pour mes fichiers qu une numérotation. Je viens de tester sur mon exemple et ça marche nickel  :bounce:  :bounce:  :bounce:  
Merci à toi chocoboy :jap:  :jap:  :jap: et vive xslt :love:


---------------
Mise à jour du palmarès des crash : 1 lecteur CD, 1 lecteur disquette, 1 graveur, 1 CM, 3 DD IBM40Go, 1 DDR256MoPC2100 et une alim Fortron... à qui le tour? :)
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  XML/XSL

  capacité de sortie d une feuille de style

 

Sujets relatifs
peut on mettre plusieurs style CSS pour les liens sur une meme page[C/C++] Recupere Numéro Unique à chaque PC Style GUID ou ID carte mère
style css, gerer le texte ?[PostGreSQL] La version 8 RC1 pour windows est sortie !
[VS6] XP StyleCSS + Placement d'objet HTML sur une feuille
Tomcat 4.1 : redirection de la sortie standardGestion d entree sortie
[PHP] Sortie statistique ??feuille de style et onmouse...
Plus de sujets relatifs à : capacité de sortie d une feuille de style


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR