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 :

effectuer traitement xsl sur repertoire entier


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2009
    Messages : 330
    Points : 93
    Points
    93
    Par défaut effectuer traitement xsl sur repertoire entier
    Bonjour, j'ai réalisé un fichier xslt qui me permet de fusionner deux fichiers xml en 1 seul.

    en effet, un répertoire contient le header du fichier xml
    l'autre contient le body du fichier xml

    voici mon 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" xmlns:tei="http://www.tei-c.org/ns/1.0"
    exclude-result-prefixes="tei">
     
    	<xsl:output encoding="UTF-8" method="xml" indent="yes"/>
     
    <xsl:template match="/">
    		<xsl:copy>
    		<TEI xmlns="http://www.tei-c.org/ns/1.0">
    			<!-- on copie les element teiheader et facsimile a partir du file 1-->
    			<xsl:copy-of select="tei:TEI/tei:teiHeader"/>
    			<xsl:copy-of select="tei:TEI/tei:facsimile"/>
    			<!-- on copie le body du file 2-->
    			<xsl:copy-of select="document('body/1.xml')/tei:TEI/tei:text/tei:body"/>
    			</TEI>
    		</xsl:copy>
    	</xsl:template>
     
    </xsl:stylesheet>
    pour ce fichier pas de problème.

    mon soucis est que je dois effectuer cette manip sur 300 fichier et que je ne veux pas faire cela manuellement.

    mon principal soucis est que le fichier xsl appel le second fichier xml et par conséquent je n'arrive pas à faire cela en perl commeje faisais d'habitude ou encore en php avec l'extension xsl.

    si vous avez une astuce je suis preneur

    merci

    ps: j'ai deux repertoire "header" et "body" chaque rep contient des fichiers et le jumeau est dans l'autre répertoire.
    ex : header/1.xml
    body/1.xml

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Hello,
    Je te conseil ant.
    Tu fais un fichier build.xml de ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <project name="traiteXml" default="" basedir=".">	
    <target name="traitement">
    	<tstamp/>
    	<xslt basedir="xml" destdir="out" style="traitement.xsl" filenameparameter="filename" filedirparameter="filedir">
    		<mapper type="glob" from="header/*.xml" to="body/*.xml"/>
    	</xslt>
    </target>
    </project>
    Et dans ton traitement.xsl tu commences par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
      <xsl:param name="filename"/>
    ...

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2009
    Messages : 330
    Points : 93
    Points
    93
    Par défaut
    j'ai installé ant mais j'ai un soucis quand je tape "ant -version"
    je suis sous windows xp

    voici le message d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ant unable to locate tools.jar
    D:\Documents and Settings\knebhi>ant -version
    Unable to locate tools.jar. Expected to find it in C:\Program Files\Java\jre6\li
    b\tools.jar
    Apache Ant version 1.7.1 compiled on June 27 2008
    le chemin est correct mais il n'y a pas de tools.jar

    quand je tape la commande set JAVACMD
    il me di que ma variable n'est pa défini.

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Re,
    Essaie de suivre les instructions d'installation http://ant.apache.org/manual/index.html
    Il manque sans doute une variable d'environnement ou qqchose du genre.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2009
    Messages : 330
    Points : 93
    Points
    93
    Par défaut
    en attendant de régler ce soucis de configuration je voulais revenir au fichier build.xml

    cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <mapper type="glob" from="header/*.xml" to="body/*.xml"/>
    veut dire que je vais prendre tout mes fichiers dont lextension se termine par xml dans les deux répertoire si j'ai bien saisi.

    or ma contrainte est qu'il faut que ces fichiers ait le meme nom.

    est ce possible de le traduire avec ant?

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2009
    Messages : 330
    Points : 93
    Points
    93
    Par défaut
    Citation Envoyé par Morbo Voir le message
    Re,
    Essaie de suivre les instructions d'installation http://ant.apache.org/manual/index.html
    Il manque sans doute une variable d'environnement ou qqchose du genre.
    j'ai fais mon installation comme suit :

    * In the System Variables, click New Button
    * Give the Variable Name:ANT_HOME
    Give the Value: C:\Ant
    * Click OK

    Then,we’ll add new ANT_HOME path,

    Find PATH in the Variable Column in System variables frame

    * After found, click Edit button
    * Then, add the following text in the bottom of Variable value:

    %ANT_HOME%\bin;
    (en anglais pour garder la version original)

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2009
    Messages : 330
    Points : 93
    Points
    93
    Par défaut
    j'ai pu installer ant grace a un lien sur le forum

    http://www.developpez.net/forums/d46...uve-tools-jar/

    maintenant il faut que je m'attaque au fond du probleme

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Re,
    Je me suis un peu emmellé les pinceaux, il te faudrait plus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <mapper type="glob" from="header/*.xml" to="result/*.xml"/>
    pour chaque fichier xml dans header un XSL-T va avoir lieu et créer un fichier xml du même nom dans le dossier result.

    Après dans ta feuille style il faut retravailler le parametre "filename" pour déduire le chemin vers le fichier xml "body" correspondant, ca devrait être qqchose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
      <xsl:param name="filename"/>
      <xsl:variable name="bodyFilename" select="concat('body/',$filename, '.xml')"/>
      <xsl:variable name="bodyXml" select="document($bodyFilename)"/>
    ....

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2009
    Messages : 330
    Points : 93
    Points
    93
    Par défaut
    merci morbo pour ton aide.

    alors voici ce que j'ai fais :

    concat.xsl

    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
    exclude-result-prefixes="tei">
     
    	<xsl:output encoding="UTF-8" method="xml" indent="yes"/>
    	<xsl:param name="filename"/>
      <xsl:variable name="bodyFilename" select="concat('body/',$filename, '.xml')"/>
      <xsl:variable name="bodyXml" select="document($bodyFilename)"/>
     
     
    	<xsl:template match="/">
    		<xsl:copy>
    		<TEI xmlns="http://www.tei-c.org/ns/1.0">
    			<!-- on copie les element teiheader et facsimile a partir du file 1-->
    			<xsl:copy-of select="tei:TEI/tei:teiHeader"/>
    			<xsl:copy-of select="tei:TEI/tei:facsimile"/>
    			<!-- on copie le body du file 2-->
    			<xsl:copy-of select="document($bodyFilename)/tei:TEI/tei:text/tei:body"/>
    			</TEI>
    		</xsl:copy>
    	</xsl:template>
     
    </xsl:stylesheet>
    build.xml
    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="ISO-8859-1"?>
    <project name="traiteXml" default="" basedir=".">	
    <target name="traitement">
    	<tstamp/>
    	<xslt basedir="xml" destdir="out" style="concat.xsl" filenameparameter="filename" filedirparameter="filedir">
    		<mapper type="glob" from="header/*.xml" to="result/*.xml"/>
     
    	</xslt>
    </target>
    </project>
    j'ai été dans le repertoire du projet et j'ai tapé la commande ant

    tout se fait correctement, pas de message d'erreur.
    cependant rien ne se passe je n'ai pas de fichier dans le repertoire result.

Discussions similaires

  1. [TPW] Calculatrice effectuant des opérations sur les entiers longs
    Par forum dans le forum Codes sources à télécharger
    Réponses: 0
    Dernier message: 04/12/2011, 11h36
  2. [JUnit] Effectuer des tests sur des traitements de fichiers
    Par Baptiste Wicht dans le forum Tests et Performance
    Réponses: 3
    Dernier message: 12/03/2010, 18h10
  3. Réponses: 3
    Dernier message: 18/11/2005, 16h58
  4. [DB2] LIKE sur des entiers
    Par heloise dans le forum DB2
    Réponses: 1
    Dernier message: 07/10/2004, 23h30
  5. Pd de transformation XML/XSL sur un windows 2000 server US
    Par Sylvain Leray dans le forum XMLRAD
    Réponses: 3
    Dernier message: 24/03/2003, 11h00

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