ouaip, c'est bien ça.
Salut,
Il n'y a pas de DLL pour fop car il s'agit d'un programme Java.
Par contre tu dois pouvoir lancer une ligne de commande depuis ton programme C/C++/C# qui lance fop avec les bons arguments et variables d'environnements, mais tu vas sans doute galérer un peu pour trouver tout les reglages.
Bonjour...
tjr retour à vous..
SVP, j'ai un probleme avec XSL-FO ?
j'arrive pas à representer mon modele XSL-FO !
SI vous pouvez juste me donner quelque renseignement sur la maniere dont on represente les blocs qui ont des depedances externe, je m'explique.
voici mon fichier XML:
alors mon probleme c'est le suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 <DataFile xmlns="http://tempuri.org/shemafile.xsd"> <Donnees> <DATA_CODE>141</DATA_CODE> <DATA_LIBELLE>data 1</DATA_LIBELLE> </Donnees> <Donnees> <DATA_CODE>142</DATA_CODE> <DATA_LIBELLE>data 2</DATA_LIBELLE> </Donnees> <Donnees> <DATA_CODE>143</DATA_CODE> <DATA_LIBELLE>data 3</DATA_LIBELLE> </Donnees> <Formule> <FRM_CODE>F100</FRM_CODE> <FRM_TEXTE>Somme des 4 premier nombre</FRM_TEXTE> <DATA_CODE>141</DATA_CODE> </Formule> <Formule> <FRM_CODE>F101</FRM_CODE> <FRM_TEXTE>Produit des 4 premier nombre</FRM_TEXTE> <DATA_CODE>142</DATA_CODE> </Formule> <IMAGE> <IMG_CODE>F100</IMG_CODE> <IMG_DATA>iVBORw0KGgoAAAANSUhEUgAAALUAAAAfCAYAAACh1IwhAAADL0lEQVR42u2cMavyMBSGi4IurjrqXxB0chRRJydBwcVF8AcoqODkIKKDoouD4OCqg+Di6OLk4CYIgiAKDvoTzqWBDz6kbZq2aZM2LxwuaGuT5ml68ia5EggJuUySuAVCAmo7CiVJiiEkxHVPrQSxAFtIQC0koGYZaq+lIGp1FekY51B7tQHV6qz0oAtxNFD0esMJqF0MtVYq4kSjdrtdyGQypuN4PAqoBdRkuSctHQ4HdM1oNArX6xU+nw82zuczrFYrqFQqEAgE0PmlUklA7RWotQZIrLgh7XYbXVuGlFTf7xdarRb4/X54v98CardDrZVW/H7u9AAym82i608mE0Pnz+dzGA6HTECt53d4eoAktdk7Xmb1nCxTLBYDn8+HUhIj6vf7jkONsw5ZBVuLR0mt8Hb4xDQbxQ5dLheURoTDYXi9Xty5H7ixCosTYHo6WUnPq55Ghcw8JCy9OdbrNSpHPp+3NQ2jCTTtjmS73aKg1lNbDZwdULOmarWK6tLpdHjJOU1Dbeb82WyGgkmoca+C3+/+/+u2GcNkMonqsdlsuIDazOvdbG/NLNQ4NwKXk7tt+vvxeEAkEkF1ut1u3PfSpO3PPdR6bDdcTm4X1MVikTi0XAkt7fd7CAaDsNvtuIbaqmO4hFrL9jP6YNAYyJEGbgpbTfV6HXq9Hvf5tKehJsm3zVqErKcqg8EAarUaM9CS+M+0jkmlUooh+/tyKH3XbDbZhRoHNgnUrOffcq9TKBRsGciRnEdi1xptWyOSZ2GNzsQ6DrUVA0WtHJ0FybOJiUSCSVeDVaiZz6lJIHQCatJlAHLkcjldv/18PpGVJ6/EM6LRaGQpLAJqiyw9kvSCxAJUOp4l3e93iMfjcDqdDJ2/XC5hPB7bnn6QuFeu8KlJFzHhBoJ6enXcoIZVqOWF/katO62lp7/1xNmPjUbDcqhpOh9modbDKDd7FFmCulwuw3Q61bVB4HeTQCgUQnVJp9OW94B2ba4w2xZW9NSa5WMZahYtvX8bBMzGYrFwFGqj1+JhFpiL7Vy83Ewa9aaRfhi9r7y0ARc7X7zyrxKsWlJKY2KLq50vICTkMv0BCAMOXCDe8j4AAAAASUVORK5CYII=</IMG_DATA> </IMAGE> <IMAGE> <IMG_CODE>F101</IMG_CODE> <IMG_DATA>iVBORw0KGgoAAAANSUhEUgAAALUAAAAfCAYAAACh1IwhAAADL0lEQVR42u2cMavyMBSGi4IurjrqXxB0chRRJydBwcVF8AcoqODkIKKDoouD4OCqg+Di6OLk4CYIgiAKDvoTzqWBDz6kbZq2aZM2LxwuaGuT5ml68ia5EggJuUySuAVCAmo7CiVJiiEkxHVPrQSxAFtIQC0koGYZaq+lIGp1FekY51B7tQHV6qz0oAtxNFD0esMJqF0MtVYq4kSjdrtdyGQypuN4PAqoBdRkuSctHQ4HdM1oNArX6xU+nw82zuczrFYrqFQqEAgE0PmlUklA7RWotQZIrLgh7XYbXVuGlFTf7xdarRb4/X54v98CardDrZVW/H7u9AAym82i608mE0Pnz+dzGA6HTECt53d4eoAktdk7Xmb1nCxTLBYDn8+HUhIj6vf7jkONsw5ZBVuLR0mt8Hb4xDQbxQ5dLheURoTDYXi9Xty5H7ixCosTYHo6WUnPq55Ghcw8JCy9OdbrNSpHPp+3NQ2jCTTtjmS73aKg1lNbDZwdULOmarWK6tLpdHjJOU1Dbeb82WyGgkmoca+C3+/+/+u2GcNkMonqsdlsuIDazOvdbG/NLNQ4NwKXk7tt+vvxeEAkEkF1ut1u3PfSpO3PPdR6bDdcTm4X1MVikTi0XAkt7fd7CAaDsNvtuIbaqmO4hFrL9jP6YNAYyJEGbgpbTfV6HXq9Hvf5tKehJsm3zVqErKcqg8EAarUaM9CS+M+0jkmlUooh+/tyKH3XbDbZhRoHNgnUrOffcq9TKBRsGciRnEdi1xptWyOSZ2GNzsQ6DrUVA0WtHJ0FybOJiUSCSVeDVaiZz6lJIHQCatJlAHLkcjldv/18PpGVJ6/EM6LRaGQpLAJqiyw9kvSCxAJUOp4l3e93iMfjcDqdDJ2/XC5hPB7bnn6QuFeu8KlJFzHhBoJ6enXcoIZVqOWF/katO62lp7/1xNmPjUbDcqhpOh9modbDKDd7FFmCulwuw3Q61bVB4HeTQCgUQnVJp9OW94B2ba4w2xZW9NSa5WMZahYtvX8bBMzGYrFwFGqj1+JhFpiL7Vy83Ewa9aaRfhi9r7y0ARc7X7zyrxKsWlJKY2KLq50vICTkMv0BCAMOXCDe8j4AAAAASUVORK5CYII=</IMG_DATA> </IMAGE> </DataFile>
comment je vai representer Data 1 avec sa formule et son image, sachant que data_code est dans formule et frm_code=img_code?
j'ai pas su le faire avec XSL-FO.
je travaille avec un outil stylus studio qui permet la representation de la feuille XSL-FO.
mais j'ai trouvé un probleme pour la representation des champs qui ont des relations dans dautre bloc (tag, table).
merci d'avance pour votre reponse.
Salut,
J'aurai besoin du code de ta feuille xsl-t actuelle pour pouvoir l'adapter.
pour le moment j'ai fais juste comme essai l'affichagé des données principales qui correspondent au bloque Donnees (table principale).
le code est comme suit :
merci bien
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
46
47
48
49
50
51
52 <?xml version="1.0"?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:s="http://www.stylusstudio.com/xquery" xmlns:def="http://tempuri.org/DataFile.xsd"> <xsl:template match="/"> <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> <fo:layout-master-set> <fo:simple-page-master master-name="default-page" page-height="11in" page-width="8.5in" margin-left="0.6in" margin-right="0.6in" margin-top="0.79in" margin-bottom="0.79in"> <fo:region-body/> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference="default-page"> <fo:flow flow-name="xsl-region-body"> <fo:block> <fo:block> <fo:block> <fo:inline font-family="Segoe Print" font-size="12pt" font-weight="bold"> <xsl:text>Liste des Formules Définies:</xsl:text> </fo:inline> </fo:block> <fo:block> <xsl:text> </xsl:text> </fo:block> <fo:block> <xsl:for-each select="/DataFile/Donnees"> <xsl:variable name="ACT_ACTION" select="."/> <fo:block> <fo:block> <fo:block> <fo:inline font-weight="bold"> <xsl:text> Nom :</xsl:text> </fo:inline> <xsl:value-of select="DATA_LIBELLE"/> </fo:block> <fo:block> <xsl:text> </xsl:text> </fo:block> <fo:block> <xsl:value-of select="DATA_CODE"/> </fo:block> <fo:block> <xsl:text> </xsl:text> </fo:block> </fo:block> </fo:block> </xsl:for-each> </fo:block> </fo:block> </fo:block> </fo:flow> </fo:page-sequence> </fo:root> </xsl:template> </xsl:stylesheet>
Voila le principe, reste juste la mise en page FO :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
46
47
48
49
50
51
52
53 <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:s="http://www.stylusstudio.com/xquery" xmlns:def="http://tempuri.org/shemafile.xsd" version="1.1"> <xsl:output media-type="xml" indent="yes"/> <xsl:template match="/"> <fo:root> <fo:layout-master-set> <fo:simple-page-master master-name="default-page" page-height="11in" page-width="8.5in" margin-left="0.6in" margin-right="0.6in" margin-top="0.79in" margin-bottom="0.79in"> <fo:region-body/> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference="default-page"> <fo:flow flow-name="xsl-region-body"> <fo:block> <fo:block> <fo:inline font-family="Segoe Print" font-size="12pt" font-weight="bold"> <xsl:text>Liste des Formules Définies:</xsl:text> </fo:inline> </fo:block> <xsl:apply-templates select="/def:DataFile/def:Donnees"/> </fo:block> </fo:flow> </fo:page-sequence> </fo:root> </xsl:template> <xsl:template match="def:Donnees"> <xsl:variable name="code" select="def:DATA_CODE"/> <fo:block> <fo:block> <fo:inline font-weight="bold"> <xsl:text>Nom :</xsl:text> </fo:inline> <xsl:value-of select="def:DATA_LIBELLE"/> </fo:block> <fo:block> <xsl:value-of select="def:DATA_CODE"/> </fo:block> <xsl:apply-templates select="//def:Formule[def:DATA_CODE=$code]"/> </fo:block> </xsl:template> <xsl:template match="def:Formule"> <xsl:variable name="frmCode" select="def:FRM_CODE"/> <fo:block> <xsl:value-of select="def:FRM_TEXTE"/> </fo:block> <fo:block> <xsl:value-of select="//def:IMAGE[def:IMG_CODE=$frmCode]/def:IMG_DATA"/> </fo:block> </xsl:template> </xsl:stylesheet>
le apply-template c'est pour appliquer le ou les templates (ici le template Formule) au(x) noeud(s) "formule" réplissant la condition entre crochet.
Ici on ne veut sélectionner que le noeud def:Formule ayant un def:DATA_CODE égale au code de la donnée courante (contenu dans la variable $code).
Pour plus d'info lire le chapitre sur XPath qui couvre la sélectione de noeud et XSLT pour les templates : http://xml.developpez.com/faq/
SVP, cette fois ci j'ai un serieux probleme..
j'ai dans mon fichier XML des TAG fragment HTML comme suit :
<donnee><p> para*(var+chiffre) Syntaxe volontairement incorrecte (test manque parenthèses)</p>
<ul>
<li>liste</li>
<li>liste 2</li></ul>
<blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
<blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
<p>décalé</p>
</blockquote>
<ol>
<li dir="ltr">numéroté</li>
<li dir="ltr">deux</li>
<li dir="ltr">trois</li></ol></blockquote></donnee>
le probleme: comment je peux reprresenter ça en XSL-FO comme un fragment HTML pure.
Merci bien
Quelques pointeurs :
Il faut extraire les fragment HTML et les décoder :
http://xmlfr.org/documentations/faq/061011-0001
Et convertir les bouts de HTML en xsl-fo :
http://www.ibm.com/developerworks/library/x-xslfo2app/
Entre ces 2 étapes, il faudra peut être transformer l'html en xhtml :
http://tidy.sourceforge.net/
mon fichier XML contient plusieurs données, parmis ces données y à donc ces fragment HTMl, donc ce que j'ai pas compris c'est que les transformation pour moi ça concerne uniquement mes fragment HTML et pas tout le fichier.
alors comment je vai faire pour convertir (parser) uniquement mes tag HTML à l'intérieur tjrs de ma representation globale.
Merci bien
SVP je me retrouve pas avec cette solution ! j'ai pas reussi à faire les essais.
Merci
Je suis un peu surchargé en ce moment.
Je ne vois pas de moyen simple de faire ça, une transfo XSL-T ne suffira pas je pense.
Moi j'utiliserai java pour répérer les noeud html, les décripter, créer une liste de fichiers associé puis traité cette liste de fichier xhtml pour les transformer en xsl-fo.
Traiter les autres noeuds de facon standard avec xslt et réintégrér les autres bouts de xsl-fo.
C'est compliqué, bon courage
Merci bien
Re:
SVP, j'ai fais unj test, j'ai reussit à extraire mes fragment dans un fichier HTML, mtn je cherche une instruction en XML qui me permet d'appeler mon fichier (resultat.html) et de l'executer, et je vai voir ce que ça va donner.
mes fragment donc je les recupere dans ce fichier d:\\resultat.html.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <div style="text-align: none;"> <xsl:result-document href="d:\\resultat.html"> <xsl:for-each select="/def:DsActAction/def:ACT_ACTION"> <xsl:variable name="ACT_ACTION" select="."/> <div> <div style="text-align: none;"> <xsl:value-of select="def:ACT_TEXTE"/> </div> </div> </xsl:for-each> </xsl:result-document> </div>
maintenant comment je peux appeler mon fichier et l'executer pour voir ce que ça va donner.
Merci bien
XSL-T ne fait que des transformation de document, tu ne peux pas interragir avec l'OS, donc executer ou visualiser. C'est pour ça que je parlais de Java pour faire un programme qui pilorait les divers transformations sur les fichiers HTML produits.
Mais, si c'est simplement une référence à une autre fichier xml que tu as besoin, en XLS-t il y a la fonction document().
Dites moi SVP, y t'il un moyen de parser le fragment au meme bloc.
je m'explique
à la fin de cette instruction on lance un programme qui permet de convertir tous les fragments HTML obtenus à partir de ce resultats et de de les convertir en fragment FO (correpondance HTML).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 <fo:block> <xsl:value-of select="def:ACT_TEXTE"/> </fo:block>
car on m'a demandé de ne pas chercher la solution de lancer d'autre outils qui permettent de convertir les fichiers HTML en FO
merci bien
j'ai pas trouvé de solution.
j'ai trouvé un lien :
http://www.antennahouse.com/XSLsampl...e.htm#tutorial
y à certaine feuille de style qui permettent de faire cette transformée mais j'ai pas pu travaillé avec.
l'exemple n'est pas clair.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager