salut,
Est ce que vous auriez des tutos qui explique comment utiliser le module xslt de perl.
J'ai un doc xml et je souhaiterais avoir en sortir une page html;
Merci
Version imprimable
salut,
Est ce que vous auriez des tutos qui explique comment utiliser le module xslt de perl.
J'ai un doc xml et je souhaiterais avoir en sortir une page html;
Merci
Dernière tentative pour t'aider...
http://www.linuxfocus.org/Francais/J...ticle156.shtml
je te remerci
cette doc en faite je l'ai deja lu
et je viens de tester le script
mais j'ai pas le module donc faut que je l'installe
ça peut aider en effet ;)Citation:
Envoyé par Melvine
j'ai revu le post sur pdx::simple
le lien que t'indique explique comment faire l'installation donc nikel
sans rancune
je viens de faire ce script en me basant sur un autre script
voila mon fichierCode:
1
2
3
4
5
6
7
8
9
10
11 #!/usr/bin/perl use XML::XSLT; my $xmlfile = "xslt.xml"; my $xslfile = "xsl.xsl"; my $parser = XML::XSLT->new ($xslfile); $parser->transform ($xmlfile); #$parser->print_result(); print $parser->toString;
xml
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 <?xml version="1.0" encoding="ISO-8859-1"?> <personne> <nom>Pillou</nom> <prenom>Jean-François</prenom> </personne> <personne> <nom>VanHaute</nom> <prenom>Nico</prenom> </personne> <personne> <nom>Andrieu</nom> <prenom>Seb</prenom> </personne>
et mon xsl
j'avais tester avec un premier fichier xml et xslCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/TR/REC-html40" result-ns=""> <xsl:template match="/"> <HTML> <HEAD> <TITLE>Titre de la page</TITLE> </HEAD> <BODY BGCOLOR="#FFFFFF"> <xsl:apply-templates/> </BODY> </HTML> </xsl:template > <xsl:template match="personne" > <ul> <li> <xsl:value-of select="nom"/> - <xsl:value-of select="prenom"/> </li> </ul> </xsl:template > </xsl:stylesheet>
et sa m'affichait bien mes element et la sa ne fonctionne pas
j'ai un message d'erreur que je ne comprend pas
???Citation:
Error while parsing:
not well-formed (invalid token) at line 4, column 0, byte 64 at C:/Perl/site/lib
/XML/Parser.pm line 185
Qu'est-ce qui a changé dans ton code ou tes fichiers entre ton 1er essai qui marchait et le second qui génère le message d'erreur ?
pour mon premiere essai j'ai tester avec un code xml et une xsl simple
xml
xslCode:
1
2
3
4
5
6 <chapter> <title>doc1.xml</title> <p>First paragraph</p> <transclusion src="doc2.xml"/> <p>Last paragraph</p> </chapter>
et à l'affichage dans mon shell(cmd sous window) j'avaisCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="transclusion"> <xsl:copy-of select="document(@src)"/> </xsl:template> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> </xsl:stylesheet>
j'ai juste modifier le xsl et le contenu du fichier xmlCitation:
doc1.xml
First paragraph
Last paragraph
j'utilise cette feuille de style
j'ai bien preciser le @ pour attribut,Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/TR/REC-html40" result-ns=""> <xsl:template match="/"> <HTML> <HEAD> <TITLE>Titre de la page</TITLE> </HEAD> <BODY BGCOLOR="#FFFFFF"> <xsl:apply-templates/> </BODY> </HTML> </xsl:template > <xsl:template match="text() | @*"> <xsl:apply-templates select="@* | node()" /> </xsl:template > </xsl:stylesheet>
donc j'ai ce qu'il y a entre les balises qui s'affiche mais pas ce qu'il ya dans les attribut;
voila mon fichier xml:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 <?xml version="1.0" encoding="ISO-8859-1"?> <indiv> <personne> <nom name="a">Pillou</nom> <prenom>Jean-François</prenom> </personne> <personne> <nom name="b">VanHaute</nom> <prenom>Nico</prenom> </personne> <personne> <nom name="c">Andrieu</nom> <prenom>Seb</prenom> </personne> </indiv>
en faite j'ai capter
il suffit juste de faire cela
et la comme j'ai mis @* j'aurai la valeur de tout les attribut concatenéCode:
1
2
3
4
5
6
7
8 <xsl:template match="nomdemabalise"> <xsl:apply-templates select="@*" /> </xsl:template >
mon script se presente ainsi
j'ai le resultat directement sur la sortie standard comment pourrai je faire pour l'avoir dans un fichier .html ???Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 # !/usr/bin/perl use XML::XSLT; my $xslfile = "xsl.xsl"; my $xmlfile = "proit.xml"; my $xslt = eval { XML::XSLT->new ($xslfile, warnings => 1, debug => 0) }; if ($@) { die("Sorry, Could not create an instance of the XSL Processor using $xslfile.\n"); } eval { $xslt->transform ($xmlfile) }; if ($@) { die("Sorry, Could not transform XML file, $xmlfile.\n"); } print $xslt->toString; $xslt->dispose();
Merci
Bonjour.
Il suffit de rajouter le handle de ton fichier html ente print et $xslt->toString, c'est pas plus compliqué que ça...
j'ai rajouter cela
ça me créee bien le fichier out.html mais il est videCode:
1
2
3
4
5
6
7
8 if ($@) { die("Sorry, Could not transform XML file, $xmlfile.\n"); } open FILE, ">>./out.html" or die "Ne peut pas ouvrir le fichier html !!"; # send to output print $xslt->toString;
est ce normal ???
Oui c'est normal tu as pas mis dans quoi tu l'imprimes. :mrgreen:Citation:
Envoyé par Melvine
Code:print FILE $xslt->toString;