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

Langage Delphi Discussion :

IXMLDOMElement : Problème lors de l'ajout d'une feuille de style Xslt


Sujet :

Langage Delphi

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    390
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 390
    Points : 127
    Points
    127
    Par défaut IXMLDOMElement : Problème lors de l'ajout d'une feuille de style Xslt
    Bonjour, ma requête de départ était d'ajouter des retour chariots après chaque noeud et voici mon code :

    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
     
     rsXsltTemplate = '<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">' +
                        '<xsl:output method="xml" indent="yes"/>'+
                        '<xsl:template match="@* | node()">'+
                          '<xsl:copy>'+
                            '<xsl:apply-templates select="@* | node()"/>'+
                         '</xsl:copy>'+
                        '</xsl:template>'+
                      '</xsl:stylesheet>';
    var
       aXml, aXsl, aXmlToSave: IXMLDOMDocument;
    begin
            // Création de l'objet xml
            aXml := CreateOleObject('Microsoft.XMLDOM') as IXMLDOMDocument;
            aXml.async := False;
            // On charge le fichier xml
            aXml.load(sFileName);
     
            // Feuille de style
            aXsl := CreateOleObject('Microsoft.XMLDOM') as IXMLDOMDocument;
            aXsl.async := False;
            // On charge le fichier xml
            aXsl.loadXml(rsXsltTemplate);
     
              // On enregistre le fichier xml avec la feuille de style
              aXmlToSave := CreateOleObject('Microsoft.XMLDOM') as IXMLDOMDocument;
              aXmlToSave.async := False;
              aXmlToSave.validateOnParse := true;
              aXml.TransformNodeToObject(aXsl,aXmlToSave);
     
              aXmlToSave.Save(sFileName);
    end;
    Fichier xml source :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?xml version="1.0" encoding="utf-8" standalone="yes"?>
    <TABLES>
    	<TBL ID="CFGIP_MTB.MetaIndex">
    		<ColumnsName COL0="TableName" COL1="IndexName" COL2="Contents" COL3="Format" COL4="Primary" COL5="Unique" COL6="Descending" COL7="Maintained" COL8="Length" COL9="CaseInsensitive" COL10="BlockSize"/>
    		<ColumnsType COL0="nvarchar" COL1="nvarchar" COL2="nvarchar" COL3="nvarchar" COL4="bit" COL5="bit" COL6="bit" COL7="bit" COL8="int" COL9="bit" COL10="int"/>
    		<REC TableName="actcolla" /><REC TableName="test" />etc...
    // entre chaque <REC> je veux un retour chariot

    Le problème est que rien ne se passe, pas de retour chariot. J'ai même remarqué qu'il passait mon xml en utf16, pourquoi ?
    Le temps est le pire enemi de l'homme

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 92
    Points : 159
    Points
    159
    Par défaut
    un retour chariot c'est #13#10

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    rsXsltTemplate = '<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">' + #13#10 +
                        '<xsl:output method="xml" indent="yes"/>'+ #13#10 +
    ...

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    390
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 390
    Points : 127
    Points
    127
    Par défaut
    Merci c'est nikel . Par contre peut-on formater qu'un noeud en particuler ?
    Le temps est le pire enemi de l'homme

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 92
    Points : 159
    Points
    159
    Par défaut
    Oui il suffit de mettre les retours chariots que là où tu veux qu'il soit mise en forme.
    Et pour une tabulation, c'est #9

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    390
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 390
    Points : 127
    Points
    127
    Par défaut
    Pour être plus précis concernant mon problème, voici le fichier type que je devrais avoir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?xml version="1.0" encoding="utf-8" standalone="yes"?>
    <TABLES>
    	<TBL ID="CFGIP_MTB.MetaIndex">
    		<ColumnsName COL0="TableName" COL1="IndexName" COL2="Contents" "/>
    		<ColumnsType COL0="nvarchar" COL1="nvarchar" COL2="nvarchar" />
    		<REC TableName="actcolla" Length="16" BlockSize="16384"/>
    		<REC TableName="actcolla" Length="16" BlockSize="16384"/>
    	</TBL>
    </TABLES>
    En utilisant ce template :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    '<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">' + #13#10 +
    	'<xsl:output method="xml" indent="yes"/>' + #13#10 +
    	'<xsl:template match="@* | node()">'+ #13#10 +
    		'<xsl:copy>'+ #13#10 +
    			'<xsl:apply-templates select="@* | node()"/>
    		'</xsl:copy>
    	'</xsl:template>' + #13#10 +
    '</xsl:stylesheet>' + #13#10;
    J'obtiens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?xml version="1.0" encoding="UTF-16"?>
    <TABLES>
    	<TBL ID="CFGIP_MTB.MetaIndex">
    		<ColumnsName COL0="TableName" COL1="IndexName" COL2="Contents" >
    		</ColumnsName><ColumnsType COL0="nvarchar" COL1="nvarchar" COL2="nvarchar">
    		</ColumnsType><REC TableName="actcolla" Length="16" BlockSize="16384">
    		</REC><REC TableName="actcolla" Length="16" BlockSize="16384">
    		</REC></TBL></TABLES>
    Je n'arrive pas à modifier mon template pour qu'il rende le bon résultat, peux-tu m'aider ?
    Le temps est le pire enemi de l'homme

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 92
    Points : 159
    Points
    159
    Par défaut
    je n'utilise pas le IXMLDOMDocument pour faire mes XMLs, donc je ne peux te dire si c'est le style ou une option du composant à modifier.
    je préfère générer moi même le xml plutôt que d'utiliser des "outils" pour le formatage. (et la plupart du temps, je vire toutes les tab et les retours chariots pour alléger les xmls )

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/01/2015, 21h59
  2. problème lors de l'ajout d'une contrainte
    Par belgariel dans le forum SQL
    Réponses: 4
    Dernier message: 04/11/2009, 10h17
  3. [E-07] Erreur lors de l'ajout d'une feuille
    Par aalex_38 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 13/01/2009, 10h20
  4. Problème lors de l'ajout d'une webreference
    Par sailor lvcv dans le forum Services Web
    Réponses: 1
    Dernier message: 01/10/2008, 11h57
  5. Réponses: 1
    Dernier message: 12/09/2008, 16h06

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