Application d'un XSL pour créer un document XSL - help

Application d'un XSL pour créer un document XSL - help - XML/XSL - Programmation

Marsh Posté le 21-05-2003 à 14:53:50    

Voici mon probleme : je suis en train de créer une stylesheet XSL (que l'on va appeler "XSL de paramétrage" ) qui a la particuliarité de produire... un document XSL (que l'on va appeler "XSL final" ).
 
Dans les faits, je commence par génerer (avec du code Java) un Document contenant un formulaire encadré par un début et une fin :

Code :
  1. <root>
  2.   <start/>
  3.   <form>
  4.     <table>
  5.       <!-- le contenu de mon formulaire : de l'HTML pour l'instant que l'on va enrichir -->
  6.     </table>
  7.   </form>
  8.   <end/>
  9. </root>


 
Le but de ma feuille de style est de produire a partir de ce document un formulaire XSL où :
 - <start/> sera remplacé par un certain nombre d'imports/déclarations de scripts contenant eux meme des instructions XSL
 - idem pour <end/>
 - l'élément <form>, qui contient le code HTML pur du formulaire a produire, sera recopié dans le XSL final et éventuellement enrichi avec des instructions XSL : par exemple on rajoute aux boutons un attribut "onClick" dont la valeur sera de la forme "<xsl:value-of select="..."> où "..." sera lié au XML final (qui référence le XSL final)
 
Donc en résumé je fais un meta-XSL ("XSL de paramétrage" ) dont l'intéret est de permettre de paramétrer le contenu du fichier XSL final.
 
Ce qui me pose probleme, c'est que dans ce meta-XSL j'ai des instructions <xsl:element> ou <xsl:attribute> (pour l'insertion de nouveaux éléments dans l'XSL final) contenant elles memes des instructions XSL (qui apparaitront dans l'XSL final).
 
Exemple :  
je veux insérer TEL QUEL dans mon XSL final (= sans que les instructions XSL mentionnées ici soient exécutées) :

Code :
  1. <link rel="stylesheet" type="text/css">
  2.       <xsl:attribute name="href">
  3.         <xsl:value-of select="/PAGE/DATA/PATH/@rootPath"/>css/Base.css
  4.       </xsl:attribute>
  5. </link>


 
La question que je me pose, c'est comment je peux indiquer "en dur" (en chaines de caracteres, en gros) ces instructions XSL qui ne doivent être que recopiées dans l'XSL final et non pas interprétées ?
 
Pour l'instant, j'ai essayé d'insérer cela dans des blocs CDATA :

Code :
  1. <![CDATA[<link rel="stylesheet" type="text/css">]]>
  2.   <![CDATA[<xsl:attribute name="href">]]>
  3.     <![CDATA[<xsl:value-of select="/PAGE/DATA/PATH/@rootPath"/>css/Base.css]]>
  4.   <![CDATA[</xsl:attribute>]]>
  5. <![CDATA[</link>]]>


Dans ce cas je me retrouve avec des "&" et "&" à la place des "<" et ">" dans mon XSL final, ce qui ne va pas.
 
J'ai également essayé d'utiliser des instructions <xsl:text> qui possèdent visiblement de quoi résoudre ce probleme grâce a l'attribut "disable-output-escaping". Malheureusement celui-ci n'est pas reconnu par mon transformateur XSL (javax.xml.transform.Transformer)  :(  
 
Il est bien évidemment possible de créer à la main mes éléments XSL au moyen des instructions "xsl:element" et "xsl:attribute", mais ceci rend le XSL de paramétrage long a mettre au point et compliqué à lire et modifier, ce qui réduit à néant son interet...
 
Si vous avez une idée...

Reply

Marsh Posté le 21-05-2003 à 14:53:50   

Reply

Marsh Posté le 23-05-2003 à 14:39:23    

Premier hit en introduisant "generating stylesheets XSLT" dans Google :
http://www.vbxml.com/xsl/examplest [...] eation.asp
 
Traduction : il faut utiliser l'élément xsl:namespace-alias
comme ci-dessous :
 


<xsl:namespace-alias stylesheet-prefix="outputxsl" result-prefix="xsl"/>


 
Donc dans ton premier stylesheet tu utilise outputxsl:apply-templates quand tu génére un element qui sera remplacé au dernier moment par xsl:apply-templates.
 
Avander
 
 


---------------
A thing of beauty is a joy forever (John Keats)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed