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 :

[XSLT][namespace] Création worksheet via template


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 51
    Par défaut [XSLT][namespace] Création worksheet via template
    Bonjour à tous,

    Mon problème est simple pourtant je ne pense pas détenir les connaissances basiques pour le résoudre.

    Je détiens un fichier Xml qui subit la transformation d'un fichier Xsl (spécifique) qui inclut un second Xsl (commun) pour produire un xls.

    XML ----> 2 fichiers XSL -----> XLS

    Sachant que je détiens plusieurs Xml j'ai autant de Xsl spécifique. Je voulais rendre commune une opération de création d'onglet qui apparaît comme besoin pour quelques Xml.


    En outre dans mon Xsl spécifique, j'avais la requête <Worsheet ............
    J'ai simplement créer un template dans mon Xsl commun qui contenait le même code, puis dans mon spécifique j'ai call ce template.

    Le fichier xls se génère bien, néanmoins l'onglet n’apparaît plus ( le fameux worksheet) , comme si call un template ne comprenant qu'une commande <Worsheet.... ne fonctionnait pas.


    Vient alors ma question :

    Est ce possible, tout simplement ?


    Merci à tous,

    J’espère avoir été assez clair

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 577
    Par défaut
    Il n'y a pas de "requête Worksheet".

    Si tu crées un élément <Worksheet>, il faut aussi lui mettre ce qu'il contient, puis fermer avec </Worksheet>

    J'imagine que dans ton code en commun, tu dois mettre un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <xsl:template match="/">
      <Worksheet>
        <xsl:apply-templates/>
      </Worksheet>
    </xsl:template>
    Bon, ça dépend de beaucoup de choses. En gros, ton élément Worksheet, il faut l'ouvrir, faire que son contenu se génère, et le fermer. En une seule règle, oui.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 51
    Par défaut
    Ah non je n'ai pas de problème de balise, voici le code ce sera sans doute plus simple :



    Dans ma XSL Spécifique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    			<xsl:call-template name="PartRefWorksheet"/>

    Dans ma XSL Commune :

    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
    <xsl:template name="PartRefWorksheet">
     		<!-- Onglet Part References -->
    		<Worksheet ss:Name="Part References">			<!-- references des composants utilises -->
    			<Names>
    	 			<NamedRange ss:Name="Print_Titles" ss:RefersTo="='Part References'!R1"/>	<!-- Nombre de ligne à répéter en tête de fichier -->
    	 		</Names>
     
     			<Table>
    				<Column ss:AutoFitWidth="0" ss:Width="50"/>		<!-- Famille			-->
     				<Column ss:AutoFitWidth="0" ss:Width="55"/>		<!-- PartNumber			-->
    				<Column ss:AutoFitWidth="0" ss:Width="230"/>	<!-- PartName			-->
    				<Column ss:AutoFitWidth="0" ss:Width="170"/>	<!-- PackName			-->
    				<Column ss:AutoFitWidth="0" ss:Width="30"/>		<!-- ACL				-->
    				<Column ss:AutoFitWidth="0" ss:Width="45"/>		<!-- Date validation TS -->
    				<Column ss:AutoFitWidth="0" ss:Width="70"/>		<!-- Commentaire TS		-->
    				<Column ss:AutoFitWidth="0" ss:Width="45"/>		<!-- Status Complete    -->
    				<Column ss:AutoFitWidth="0" ss:Width="38"/>		<!-- Status Inhibited   -->
    				<Column ss:AutoFitWidth="0" ss:Width="38"/>		<!-- Warning            -->
    				<Column ss:AutoFitWidth="0" ss:Width="50"/>		<!-- Part status        -->		
     
    				<xsl:call-template name="partRef_Phys"/>
    			</Table>
     
    			<AutoFilter x:Range="R1C1:R1C4" xmlns="urn:schemas-microsoft-com:office:excel"></AutoFilter>
    			<xsl:call-template name="WorksheetOptionsExcel2002">
    				<xsl:with-param name="Hpane" select="1"/>
    			</xsl:call-template>
    		</Worksheet>
     
    </xsl:template>


    J'ai bien le lien qui inclut ma commune dans ma spec.
    Je n'ai pas d'onglet "Part References" qui s'inclut dans mon fichier excel, alors qu'au départ, en passant uniquement avec le specifique, il existait bel et bien en sortie.

    Je n'ai pas mis de </xsl:apply-template>

    Est ce primordial ?

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 577
    Par défaut
    Citation Envoyé par Graineur Voir le message
    Je n'ai pas mis de </xsl:apply-template>

    Est ce primordial ?
    Non. Ta nomenclature un peu souple m'a induit en erreur, mais en voyant ton code il semble que tu savais très bien ce que tu faisais.


    Je remarque l'attribut ss:Name, et plein d'autres attributs avec le préfixe ss.
    As-tu déclaré ce préfixe dans la XSL commune ? En XML, un préfixe doit être déclaré dans chaque document XML avant d'être utilisé, même s'ils se réfèrent les uns aux autres.
    (Car XML est un format de fichier unitaire : que des fichiers XML se réfèrent les uns les autres ne le concerne pas, ça les dispense pas de chacun respecter les règles.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 51
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <xsl:stylesheet xmlns:xsl="http://tructruc"
     	version="1.1"
     	xmlns:redirect="http://machin"
     	xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
    	xmlns:set="http://bidule">

    J'ai bien en début de page déclarer mes ss

    je suis un peu perdu je me demande si c'est bien possible, le template a l'air de passer mais aucun onglet ne se créé

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 51
    Par défaut
    J'ai essayé en incluant des <xsl:apply-template/> mais rien n'y fait ...

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 51
    Par défaut
    Et bien après quelques recherches et autre, il semblerait qu'on ne puisse pas inclure de <Table... /> dans un template et du coup la worksheet n'est pas généré .

  8. #8
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 577
    Par défaut
    Curieuse limitation. Dans un moteur XSLT standard, on peut bien mettre toutes les balises qu'on veut dans n'importe quel template.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Par défaut
    Ici, "Worksheet", "Table", "Column", ... doivent être préfixés par ss: pour être interpréter par excel. Car sinon, ils n'appartiennent pas au namespace "urn:schemas-microsoft-com:office:spreadsheet"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XSLT] traitement de chaine via Variable et apply-templates
    Par jdriele dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 15/11/2010, 10h08
  2. [XSLT][Xpath] selection de l'enesemble des données via templates
    Par mozart75 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 06/10/2010, 13h57
  3. [XSLT] namespace
    Par peyote dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 19/01/2010, 16h19
  4. [XSLT] Problème d'application de template
    Par kobe dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 29/06/2006, 14h14
  5. xml - création xml via php(mysql) - manque données
    Par Raiders dans le forum XQUERY/SGBD
    Réponses: 5
    Dernier message: 23/03/2006, 18h54

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