IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XSL/XSLT/XPATH XML Discussion :

[XSL] importer/appliquer feuille externe


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 39
    Points : 26
    Points
    26
    Par défaut [XSL] importer/appliquer feuille externe
    Bonjour,
    Je dois appliquer une feuille de style à un fichier XML
    Dans cette feuille de style je dois appeler une autre feuille de style...

    Seulement entre les match et select je me perds en route...

    La feuille de style importé n'est pas modifiable, la voici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?xml version="1.0"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    	<xsl:output method="html" omit-xml-declaration="yes"/>
    	<xsl:template match="/">
    		<H2><xsl:value-of disable-output-escaping="yes" select="root/dynamic-element[@name='title']/dynamic-content"/></H2>
    		<BR/>
    		<xsl:value-of disable-output-escaping="yes" select="root/dynamic-element[@name='intro-text']/dynamic-content"/>
    		<BR/>
    		<xsl:value-of disable-output-escaping="yes" select="root/dynamic-element[@name='full-text']/dynamic-content"/>
    	</xsl:template>
    </xsl:stylesheet>

    Voici un essai de feuille qui marche (sans import) :
    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
     
    <?xml version="1.0"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    	<xsl:output method="html" omit-xml-declaration="yes"/>	
     
    	<xsl:template match="/result-set">
    		<table width="100%">
    		    <xsl:for-each select="result">
    				<tr  style="border:2px black solid;">
    					<td>
    						<!-- A EXTERNALISER -->
    				        <H2><xsl:value-of disable-output-escaping="yes" select="root/dynamic-element[@name='title']/dynamic-content"/></H2>
    						<BR/>
    						<xsl:value-of disable-output-escaping="yes" select="root/dynamic-element[@name='intro-text']/dynamic-content"/>
    						<BR/>
    						<xsl:value-of disable-output-escaping="yes" select="root/dynamic-element[@name='full-text']/dynamic-content"/>
    						<!-- A EXTERNALISER -->
    					</td>
    				</tr>
    		    </xsl:for-each>
    		</table>		
    	</xsl:template>    
    </xsl:stylesheet>
    Et voici le code qui ne marche pas :
    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
     
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    	<xsl:output method="html" omit-xml-declaration="yes"/>
     
    	<xsl:template match="/result-set">
    		<table width="100%">
    		    <xsl:for-each select="result">
    				<tr style="border:2px black solid;">
    					<td>
    				        <xsl:call-template name="xsl2" />
    					</td>
    				</tr>
    		    </xsl:for-each>
    		</table>
     
    	</xsl:template>
     
    	<xsl:template name="xsl2">
    		<!-- lien qui donne la XSL -->
    		<xsl:import href="http://localhost:8080/c/journal/get_template?template_id=NEWS-ITEM-TEMPLATE" />
    		<!-- on applique la feuille importée -->
    		<xsl:apply-imports />
    	</xsl:template>
     
    </xsl:stylesheet>
    Un exemple de fichier XML:
    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"?>
     
    <result-set>
      <result article-id="NEWS-01">
        <reserved-info>
          <version>1.0</version>
          <title>News 1</title>
          <description>cvsdvsd</description>
          <create-date>Mon, 04 Jun 2007 12:48:04 +0000</create-date>
          <modified-date>Mon, 04 Jun 2007 13:26:12 +0000</modified-date>
          <display-date>Mon, 04 Jun 2007 12:46:00 +0000</display-date>
          <author-id>2</author-id>
          <author-name>Joe Bloggs</author-name>
          <author-email-address>test@liferay.com</author-email-address>
        </reserved-info>
        <root>
          <dynamic-element name="title" type="text">
            <dynamic-content><![CDATA[News 1]]></dynamic-content>
          </dynamic-element>
          <dynamic-element name="intro-text" type="text_area">
            <dynamic-content><![CDATA[<p><u><strong>intro1</strong></u></p><p>gfvsdgsdfgbf bfd bfqs</p>]]></dynamic-content>
          </dynamic-element>
          <dynamic-element name="full-text" type="text_area">
            <dynamic-content><![CDATA[<p><u><strong>full1</strong></u></p><p>gfgbqdfgbqdf gbfqseg&nbsp; fgsdgseq fvdsq</p><p align="left"><font color="#ff6600">gsfgbqe gvbqsf gvq gvqsfgvqzerg&nbsp; vdsvq</font></p><p align="left"><em>ggqs gsfgbqe gvbqsf gvq gvqsfgvqzerg</em></p><p align="left"><font color="#00ff00">gqsfgbqsf gsfgbqe gvbqsf gvq gvqsfgvqzerg</font> </p><p align="left">gbvfsdqd gsfgbqe gvbqsf gvq gvqsfgvqzerg <u></u></p>]]></dynamic-content>
          </dynamic-element>
        </root>
      </result>
      <result article-id="NEWS-02">
        <reserved-info>
          <version>1.0</version>
          <title>News 2</title>
          <description>vsdvsdf</description>
          <create-date>Mon, 04 Jun 2007 12:49:01 +0000</create-date>
          <modified-date>Mon, 04 Jun 2007 12:49:01 +0000</modified-date>
          <display-date>Mon, 04 Jun 2007 12:48:00 +0000</display-date>
          <author-id>2</author-id>
          <author-name>Joe Bloggs</author-name>
          <author-email-address>test@liferay.com</author-email-address>
        </reserved-info>
        <root>
          <dynamic-element name="title" type="text">
            <dynamic-content><![CDATA[News 2]]></dynamic-content>
          </dynamic-element>
          <dynamic-element name="intro-text" type="text_area">
            <dynamic-content><![CDATA[<p><u><strong>intro2</strong></u></p><p>gfghe hfgghrt nryj ryjrzhgtrfgdffgzetgrtjhn ghefq</p>]]></dynamic-content>
          </dynamic-element>
          <dynamic-element name="full-text" type="text_area">
            <dynamic-content><![CDATA[<p><u><strong>full2</strong></u></p><p>gsdfgbvsdf vsdfqgjkl jgklvsdqhn jfbhzmqfhbl! fdknzql fnzM</p><p>&nbsp;FGSDOMFHNUIO QZFZOQEIFGUIH ZEOMUFHmeizofg</p><p>fghiozquiomghOHGOIghoiHZGOHZORhgiozrhgolze<u /></p>]]></dynamic-content>
          </dynamic-element>
        </root>
      </result>
    </result-set>

  2. #2
    Membre régulier Avatar de HebusBreizh
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Points : 82
    Points
    82
    Par défaut
    Ce que tu peux faire c'est dans ton fichier xsl "de base" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:import href="http://localhost:8080/c/journal/get_template?template_id=NEWS-ITEM-TEMPLATE" />
    Et dans le fichier xsl à externaliser:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <xsl:template name="NomDuTemplate"><!--Au lieu de match-->
    	<H2><xsl:value-of disable-output-escaping="yes" select="root/dynamic-element[@name='title']/dynamic-content"/></H2>
    	<BR/>
    	<xsl:value-of disable-output-escaping="yes" select="root/dynamic-element[@name='intro-text']/dynamic-content"/>
    	<BR/>
    	<xsl:value-of disable-output-escaping="yes" select="root/dynamic-element[@name='full-text']/dynamic-content"/>
    </xsl:template>
    En appelant le template ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <xsl:template match="/result-set">
      <table width="100%">
        <xsl:for-each select="result">
          <tr style="border:2px black solid;">
            <td>
              <xsl:call-template name="NomDuTemplate" />
            </td>
          </tr>
        </xsl:for-each>
      </table>		
    </xsl:template>

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 39
    Points : 26
    Points
    26
    Par défaut re
    Mon probleme c'est que la feuille à importer n'est pas modifiable, elle doit etre absolument comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?xml version="1.0"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    	<xsl:output method="html" omit-xml-declaration="yes"/>
    	<xsl:template match="/">
    		<H2><xsl:value-of disable-output-escaping="yes" select="root/dynamic-element[@name='title']/dynamic-content"/></H2>
    		<BR/>
    		<xsl:value-of disable-output-escaping="yes" select="root/dynamic-element[@name='intro-text']/dynamic-content"/>
    		<BR/>
    		<xsl:value-of disable-output-escaping="yes" select="root/dynamic-element[@name='full-text']/dynamic-content"/>
    	</xsl:template>
    </xsl:stylesheet>
    Car elle peut etre appelée ailleurs (affichage d'articles dans Liferay) et elle marche comme ça !!

    J'ai lu que sert à pointer sur la racine, donc je pense que ce n'est pas possible ce que j'essaie de faire, car si je ne peux pas modifier celà, quand je vais importer et appliquer la feuille, elle va pointer sur la racine du xml...et donc ça ne peut plus marcher !

    Si qqun a une solution...

Discussions similaires

  1. Réponses: 9
    Dernier message: 20/09/2007, 12h55
  2. [XSL]Importer et lire un .xml se trouvant sur un serveur...
    Par akaii dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 25/01/2006, 08h38
  3. [xsl:fo] problème avec external-graphic
    Par jehlg dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 11/10/2005, 11h57
  4. Import massif/table externe et real
    Par Eric Sibert dans le forum Firebird
    Réponses: 7
    Dernier message: 30/08/2005, 10h13
  5. [xsl java]Appliquer une XSL à un String contenant doc XML
    Par aldo047 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 03/04/2003, 15h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo