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] Problème ordre balisage


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre habitué Avatar de Mygush
    Inscrit en
    Juin 2007
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 226
    Points : 175
    Points
    175
    Par défaut [XSLT] Problème ordre balisage
    Bonjour à tous,
    Voilà j'ai un petit problème que je n'arrive pas à résoudre... J'ai un fichier xml que je transforme via un filtre XSLT de façon à le simplifer. Hors j'ai un message d'erreur qui me dit
    <Tableau> est un élément de table incorrect ou n'apparaît pas dans le bon ordre.
    Voici l'extrait correspondant de mon xslt qui me semble pourtant correct...
    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
    <xsl:stylesheet version="1.0" 
    	xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    	xmlns:o="urn:schemas-microsoft-com:office:office" 
    	xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
    	xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" 	
    	xmlns:v="urn:schemas-microsoft-com:vml"
    	xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" 
    	xmlns:w10="urn:schemas-microsoft-com:office:word" 
    	xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" 
    	xmlns:wne="http://schemas.microsoft.com/office/word/2002/8/wordml" 
    	xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/">
    	....
    	<xsl:template match="w:tblGrid">
    		<xsl:element name="Tableau">
    			<xsl:variable name="nbColonne" select="count(w:gridCol)" />
    			<xsl:attribute name="aid:trows">
    				<xsl:value-of select="($nbColonne)"/>
    			</xsl:attribute>
    			<xsl:attribute name="aid:tcols">
    				<xsl:value-of select="($nbColonne)"/>
    			</xsl:attribute>
    			<xsl:attribute name="aid:table">
    				<xsl:text>table</xsl:text>
    			</xsl:attribute>
    			....
    			<xsl:apply-templates select="w:tc" />
    		</xsl:element>
    	</xsl:template>
     
    	<xsl:template match="w:tc">
    		<!-- Création d'un élément par défaut 'entry'-->
    		<xsl:element name="Cellule">
    			<xsl:attribute name="aid:ccolwidth">
    				<xsl:text>226.27165354321656</xsl:text>
    			</xsl:attribute>
    			<xsl:attribute name="aid:ccols">
    				<xsl:text>1</xsl:text>
    			</xsl:attribute>
    			<xsl:attribute name="aid:crows">
    				<xsl:text>1</xsl:text>
    			</xsl:attribute>
    			<xsl:attribute name="aid:table">
    				<xsl:text>cell</xsl:text>
    			</xsl:attribute>
    		</xsl:element>
    	</xsl:template>
    	....
    </xsl:stylesheet>
    En fait j'ai remarqué que c'est mon attribut 'aid:table' de mon élément 'Cellule' qui pose problème car si je le mets en commentaire je n'ai pas d'erreur et le problème c'est qu'il me le faut absolument...
    Est-ce que quelqu'un a une idée sur cette erreur ?
    Merci d'avance pour vos réponses.

  2. #2
    Membre éprouvé
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Points : 1 063
    Points
    1 063
    Par défaut
    as tu un exemple xml et xsl à nous donner?
    sinon tu as plusieurs balises w:tblGrid dasn ton document xml?
    tu eux essayer un truc : ajouter dans ta feuille xsl ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <xsl:template match="/">
    <xsl:apply-templates select="//w:tblGrid" />
    </xsl:template>
    dit nous ce que cela donne

  3. #3
    Membre habitué Avatar de Mygush
    Inscrit en
    Juin 2007
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 226
    Points : 175
    Points
    175
    Par défaut
    Eureka j'ai trouvé d'où provenait mon problème, en fait c'est le fait de placer la valeur 'cell' de mon attribut aid:table dans une balise xsl:text.
    En effet si je met directement ma valeur sans balise ça fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:attribute name="aid:table">
    	cell
    </xsl:attribute>
    Comme quoi la nuit porte conseil...
    Merci pour ton aide fraoustin !
    Bonne journée à tous.

  4. #4
    Membre habitué Avatar de Mygush
    Inscrit en
    Juin 2007
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 226
    Points : 175
    Points
    175
    Par défaut
    bah en fait j'ai parlé trop vite car j'ai à nouveau le message d'erreur...
    En fait j'ai remarqué que c'est la valeur 'cell' de mon attribut 'aid:table' qui semble poser problème car si je mets autre chose ça fonctionne et c'est pour cette raison que je pensais avoir trouvé un peu plus tôt.
    En fait que ce que j'essaie de faire, c'est d'importer dans InDesign un fichier xml en lui appliquant un filtre XSLT.
    Le problème c'est que je suis obligé de mettre la valeur 'cell' dans mon attribut afin que InDesign puisse interpréter les cellules de mon tableau...
    Mais je ne comprend pas pourquoi ça bloque niveau XSLT...
    Voici l'extrait de mon xml correspondant qui se répète plusieurs fois :
    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
    <w:document>
    	<w:body>
    		<w:tbl>
    			<w:tblGrid>
    				<w:gridCol w:w="7848"/>
    				<w:gridCol w:w="1364"/>
    			</w:tblGrid>
    			<w:tr w:rsidR="00EA21B1" w:rsidTr="00014209">
    				<w:tc>
    					<w:p w:rsidR="00EA21B1" w:rsidRDefault="00EA21B1" w:rsidP="00014209">
    						<w:pPr>
    							<w:pStyle w:val="NormalTableau"/>
    						</w:pPr>
    						<w:r>
    							<w:t>Mon texte</w:t>
    						</w:r>
    					</w:p>
    				</w:tc>
    				<w:tc>
    					<w:p w:rsidR="00EA21B1" w:rsidRDefault="00EA21B1" w:rsidP="00014209">
    						<w:pPr>
    							<w:pStyle w:val="NormalTableau"/>
    						</w:pPr>
    						<w:r>
    							<w:t>Mon texte</w:t>
    						</w:r>
    					</w:p>
    				</w:tc>
    			</w:tr>
    		</w:tbl>
    	</w:body>
    </w:document>
    Et voici mon code xslt correspondant :
    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
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <xsl:stylesheet version="1.0" 
    	xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    	xmlns:o="urn:schemas-microsoft-com:office:office" 
    	xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
    	xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" 	
    	xmlns:v="urn:schemas-microsoft-com:vml"
    	xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" 
    	xmlns:w10="urn:schemas-microsoft-com:office:word" 
    	xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" 
    	xmlns:wne="http://schemas.microsoft.com/office/word/2002/8/wordml"
    	xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/">
    	<xsl:output method="xml" indent="yes" encoding="ISO-8859-1"/>
     
    	<xsl:template match="w:document/w:body">
    		<body>
    			<xsl:apply-templates />
    		</body>
    	</xsl:template>
     
    	<xsl:template match="w:tbl">
    		<xsl:apply-templates select="w:tblGrid" />			
    	</xsl:template>
     
    	<xsl:template match="w:tblGrid">
    		<xsl:element name="Tableau">
    			<xsl:variable name="nbColonne" select="count(w:gridCol)" />
    			<xsl:attribute name="aid:tcols">
    				<xsl:value-of select="($nbColonne)"/>
    			</xsl:attribute>
    			<xsl:attribute name="aid:trows">
    				<xsl:value-of select="($nbColonne)"/>
    			</xsl:attribute>
    			<xsl:attribute name="aid:table">table</xsl:attribute>
     
    			<xsl:for-each select="../w:tr">
    				<xsl:apply-templates select="w:tc" />
    			</xsl:for-each>
    		</xsl:element>
    	</xsl:template>
     
    	<xsl:template match="w:tc">
    		<xsl:element name="Cellule">
    			<xsl:attribute name="aid:ccolwidth">226.27165354321656</xsl:attribute>
    			<xsl:attribute name="aid:ccols">1</xsl:attribute>
    			<xsl:attribute name="aid:crows">1</xsl:attribute>
    			<xsl:attribute name="aid:table">cell</xsl:attribute>
    			<xsl:value-of select="." />
    		</xsl:element>	
    	</xsl:template>
    </xsl:stylesheet>
    Là je comprend vraiment pas pourquoi ça bloque, est-ce que quelqu'un a une idée ?
    Merci d'avance pour votre aide!

  5. #5
    Membre habitué Avatar de Mygush
    Inscrit en
    Juin 2007
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 226
    Points : 175
    Points
    175
    Par défaut
    J'ai enfin trouvé la solution à mon problème qui finalement n'avait rien avoir avec mes balises...
    C'est que tout simplement le nombre de lignes que je déclarais dans mes tableaux n'était pas le bon car à cause d'un mauvais copier coller, je n'utilisais pas la bonne variable.
    En effet en utilisant la bonne variable ça va tout de suite mieux !!!
    Voici ce qui me manquait pour ceux que ça peut intéresser :
    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
    <xsl:element name="Table">
    	<xsl:variable name="nbColonne" select="count(w:gridCol)" />
    	<xsl:variable name="nbLigne" select="count(../w:tr)" />
    	<xsl:attribute name="aid:tcols">
    		<xsl:value-of select="($nbColonne)"/>
    	</xsl:attribute>
    	<xsl:attribute name="aid:trows">
    		<xsl:value-of select="($nbLigne)"/>
    	</xsl:attribute>
    	<xsl:attribute name="aid:table">table</xsl:attribute>
     
    	<xsl:for-each select="../w:tr">
    			<xsl:apply-templates select="w:tc" />
    	</xsl:for-each>
    </xsl:element>
    En fait j'ai rajouté une variable qui me calcule mon nombre de ligne pour chaque tableau... Tellement simple que je me suis pris la tête pendant 24h !!!
    Voilou c'est tout bon pour moi.

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

Discussions similaires

  1. [PHP][XSLT] problème caractères accentués
    Par beho dans le forum XSL/XSLT/XPATH
    Réponses: 11
    Dernier message: 29/05/2006, 09h29
  2. [XSLT]Problème count()
    Par pancho dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 14/11/2005, 17h00
  3. [XSLT]Problème de séléction du noeud courrant
    Par virgul dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 16/08/2005, 07h51
  4. [XSLT]Problèmes d'ordre de lecture et d'écriture
    Par leup dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 11/07/2005, 10h36
  5. [XSLT] Problème de chemin d'accès + XSLT
    Par Jorus dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 15/09/2004, 08h36

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