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 ceciet cela fonctionne parfaitement bien en 32 bits avec Windows 7 / Office 2007.
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
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" :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"?> <Village> <Maison> <taille>Villa</taille> <mur>Brique</mur> </Maison> <Maison> <taille>Cabane</taille> <mur>Planche</mur> </Maison> </Village>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 <?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>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
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>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 ?
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>
Merci.
Partager