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

VBA Access Discussion :

XSLT 32 / 64 bits


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Inscrit en
    Février 2011
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 469
    Par défaut XSLT 32 / 64 bits
    Bonjour,

    Avez-vous déjà rencontré des problèmes avec VBA 64 bits pour des transformations xslt ?

    J'utilise l'instruction VBA Application.TransformXML comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim strPath As String
     
    strPath = CurrentProject.Path
    strPath = strPath & "\"
     
    Application.TransformXML strPath & "Village.xml", strPath & "Ajouter un toit.xslt", strPath & "urbanisme.xml", True
    et cela fonctionne parfaitement bien en 32 bits avec Windows 7 / Office 2007.
    Par contre, cela ne fonctionne pas en 64 bits avec Windows 10 / Office 2016

    Avez-vous déjà rencontré ce problème ? Comment le résoudre ?


    Si vous voulez essayer dans votre environnement, voici les fichiers. Ce sont deux fichiers XML qui sont combinés pour n'en faire plus qu'un.
    Voici le premier fichier XML : "Village.XML" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?xml version="1.0" encoding="UTF-8"?>
    <Village>
    	<Maison>
    		<taille>Villa</taille>
    		<mur>Brique</mur>
    	</Maison>
    	<Maison>
    		<taille>Cabane</taille>
    		<mur>Planche</mur>
    	</Maison>
    </Village>
    et voici le second fichier XML "Architecte.XML" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?xml version="1.0" encoding="UTF-8"?>
    <Architecte>
    	<Maison>
    		<taille>Villa</taille>
    		<toit>Tuile</toit>
    	</Maison>
    	<Maison>
    		<taille>Cabane</taille>
    		<toit>carton</toit>
    	</Maison>
    </Architecte>
    De façon à avoir un seul fichier où chaque maison a des murs et un toit, j'applique la transformation xslt suivante "Ajouter un toit.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
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    	<xsl:output method="xml" indent="yes"/>
    	<!-- this transformation is applied to Village.xml -->
    	<xsl:template match="/*">			<!-- bien mettre le / ET le *   Le slash uniquement ne fonctionne pas -->
    		<Village>
    			<xsl:for-each select="Maison">
    			<Maison>
    				<xsl:copy-of select="./taille"/>
    				<xsl:copy-of select="./mur"/>
    				<!-- I define the first variable and I assign the house type to the variable-->
    				<xsl:variable name="Grandeur"><xsl:value-of select="taille"/></xsl:variable>
    				<!-- j utilise la  variable dans le predicat de l'expression Xpath pour trouver le toit dans l'autre fichier -->
    				<xsl:copy-of select="document('Architecte.xml')/Architecte/Maison/taille[text()=$Grandeur]/../toit"/>
    		</Maison>
    		</xsl:for-each>
    		</Village>
    	</xsl:template>
    </xsl:stylesheet>
    Cela donne un joli petit fichier d'urbanisme dont voici le résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?xml version="1.0" encoding="UTF-16"?>
    <Village>
    	<Maison>
    		<taille>Villa</taille>
    		<mur>Brique</mur>
    		<toit>Tuile</toit>
    	</Maison>
    	<Maison>
    		<taille>Cabane</taille>
    		<mur>Planche</mur>
    		<toit>carton</toit>
    	</Maison>
    </Village>
    Je sais que je pourrais utiliser DOMXML pour obtenir le même résultat mais je trouve assez frustrant d'avoir passé du temps à préparer un fichier XSLT et ne pas pouvoir l'utiliser. Avez-vous déjà rencontré ce problème ? Comment l'avez-vous résolu ?

    Merci.

  2. #2
    Membre chevronné
    Inscrit en
    Février 2011
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 469
    Par défaut
    Bonjour,
    Pour votre info, j'ai essayé sur un ordinateur de plus où j'ai de nouveau le même résultat. Application.TransformXML ne fonctionne pas non plus sous Access 2010 VBA 64 bits, Windows 32 bits.
    Application.TransformXML fonctionne correctement lorsque la transformation xslt s'applique à une seul fichier xml. Par contre, lorsque la transformation xslt fait appel à une second fichier XML voici mes résultats :
    • fonctionne parfaitement bien avec Windows 7 (32 bits) / Office 2007 (32 bits).
    • ne fonctionne pas avec Windows 10 (64 bits) / Office 2016 (64 bits)
    • ne fonctionne pas avec Windows 10 (32 bits) / Office 2010 (64 bits)


    Si vous savez pourquoi ou comment le faire fonctionner en 64 bits, merci pour vos explications.

Discussions similaires

  1. [XSLT] addition bit à bit
    Par FlyByck dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 06/10/2007, 00h44
  2. Cherche l'algo crc 16 bits
    Par icepower dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 21/08/2002, 13h27
  3. [XSLT]position d'un element de valeur specifique
    Par squat dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 25/07/2002, 16h42
  4. Debugger 16-32 bits
    Par Mat dans le forum Assembleur
    Réponses: 4
    Dernier message: 28/06/2002, 11h34
  5. Lire 1 bit d'un fichier en C
    Par Anonymous dans le forum C
    Réponses: 3
    Dernier message: 23/05/2002, 18h31

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