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] Gestion ':' dans nom de balise


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] Gestion ':' dans nom de balise
    Salut tout le monde,
    Voilà j'ai un petit problème que je n'arrive pas à résoudre... J'ai un fichier wordml que je souhaite transformer via un filtre xslt. Le problème c'est que les balises du type <w:body>...</w:body> ne sont pas interpréter dans mon xslt.
    J'ai un message qui me dit 'Motif vide'
    Voici un extrait de mon fichier wordml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <w:document>
    	<w:body>
    		<w:p w:rsidR="00EA21B1" w:rsidRPr="00883B7C" w:rsidRDefault="00EA21B1" w:rsidP="00883B7C">
    			<w:pPr>
    				<w:pStyle w:val="TitreEtude"/>
    				<w:rPr>
    					<w:lang w:val="en-GB"/>
    				</w:rPr>
    			</w:pPr>
    			...
    		</w:p>
    	</w:body>
    </w:document>
    Et voici un extrait de mon code xslt :
    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
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <xsl:stylesheet version="1.0" 
    	xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    	xmlns:w="http://schemas.microsoft.com/office/word/2002/8/wordml" 
    	xmlns:v="urn:schemas-microsoft-com:vml"
    	xmlns:w10="urn:schemas-microsoft-com:office:word" 
    	xmlns:SL="http://schemas.microsoft.com/schemaLibrary/2002/8/core" 
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    	xmlns:wx="http://schemas.microsoft.com/office/word/2002/8/auxHint" 
    	xmlns:o="urn:schemas-microsoft-com:office:office" 
    	xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882">
     
    	<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:stylesheet>
    Je n'arrive vraiment pas à interpréter ces ':', est-ce que quelqu'un peu m'aider sur ce sujet ?
    Merci d'avance pour vos réponses.

  2. #2
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    les apostrophes autour des éléments dans les expressions XPath sont de trop
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:template match="w:document/w:body">

  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
    En fait j'ai une erreur qui me dit : Impossible d'écrire les données dans le fichier !
    si je n'ai pas les apostrophes. C'est pour çà que j'avais essayer avec mais avec ou pas ça ne fonctionne pas et je comprend pas pourquoi...
    Merci pour votre aide!

  4. #4
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Citation Envoyé par Mygush Voir le message
    En fait j'ai une erreur qui me dit : Impossible d'écrire les données dans le fichier ! si je n'ai pas les apostrophes.
    Si tu mets les apostrophes, l'expression XPath dans l'attribut match n'est pas valide et c'est pour cela que le processeur XSLT affiche 'motif vide'.

    Le problème se situe à un autre niveau. Une question : w:body est-elle la seule balise fille de w:document ? Si ce n'est pas le cas, comme tu n'as pas écrit de templates qui gérant ces éventuelles autres balises, leur contenu est directement envoyé en sortie et tu te retrouves avec un fichier XML mal formé, ce que pourrait signifier le message d'erreur. Pour le vérifier, ajoute ce template :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:template match="w:document">
      <xsl:apply-templates select="w:body" />
    </xsl:template>

  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 essayé mais ça ne marche pas mieux...
    En fait j'ai testé mon xslt en enlevant tous les w: et dans mon fichier xml et dans mon xslt et là ça fonctionne parfaitement!
    Du coup c'est vraiment l'interprétation des ces fameux ':' qui pose problème je pense, mais je ne trouve pas la solution...
    As-tu une idée ?

  6. #6
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Les : servent à séparer un préfixe (désignant un espace de noms) du nom de la balise. Ce ne sont pas eux qui posent en soi un problème, c'est un problème d'espace de noms. Es-tu sûr que 'w' pointe sur le même espace de noms (http://schemas.microsoft.com/office/word/2002/8/wordml) dans la source XML ET le fichiers XSLT ?

  7. #7
    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 alors là je peux aller me cacher...
    Effectivement c'était tout simplement un mauvais pointage d'espace de noms suite à un copier/coller...
    Encore merci pour ton aide GrandFather, l'erreur était tellement flagrante que j'aurai tourné un moment sans la trouver...
    Bonne journée !

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

Discussions similaires

  1. [XML] caracteres spéciaux [parenthèses dans nom de balise]
    Par khrysthel dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 26/02/2007, 14h27
  2. [XSLT] Convertir toutes les noms de balise en minuscule ?
    Par ghohm dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 13/07/2006, 12h49
  3. [XSLT] Changer les noms de balise lors de la fusion
    Par toxine dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 25/01/2006, 09h47
  4. [XSLT] comment afficher tous les noms de balises
    Par stanilas dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 12/11/2005, 22h24
  5. [XML] Accent dans les noms de balises
    Par virgul dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 09/03/2005, 13h42

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