Bonjour !

Je suis débutant en XML/XSL et du coup j'ai un peu de mal malgré mes nombreuses recherches sur internet.

Du coup voila mon problème, j'ai ce code en xml :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="UTF-8"?>
 
<BAT>
 
    <BatID>3HLMBQ</BatID>
    <fichier>2017060315.pdf</fichier>
    <status>1</status>
    <commentaire>Validation par mail</commentaire>
    <qui>Test</qui><email/>
    <quand>2017-06-21 12:37:56</quand>
 
</BAT>
Je souhaite le passer de cette forme ci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
<?xml version="1.0" encoding="UTF-8"?>
<Infos_Commande_MasterPrint>
    <Commande ID= "201705.0078" >
        <DepartBAT>2017-05-09</DepartBAT>
    </Commande>
</Infos_Commande_MasterPrint>
J'ai déjà fais ça en 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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 
<xsl:output   method="xml"  encoding="UTF-8"  doctype-public="-//W3C//DTD HTML 4.01//EN" doctype-system=""  indent="yes" />
 
 
 
<!-- Recuperer les infos-->  
 <xsl:template match="BAT">
    <xsl:copy>
      <xsl:apply-templates/>
    </xsl:copy>
  </xsl:template>
 
  <xsl:template match="fichier">
    <xsl:copy-of select="."/>
  </xsl:template>
 
  <xsl:template match="quand">
    <xsl:copy-of select="."/>
  </xsl:template>
 
 
 
<!-- Modifier les noms -->
    <xsl:template match="quand" priority="1">
     <xsl:element name="DepartBAT">
      <xsl:apply-templates select="@*[name()!='val']|node()"/>
     </xsl:element>
    </xsl:template>
 
    <xsl:template match="BAT" priority="1">
     <xsl:element name="Infos_Commande_MasterPrint">
      <xsl:apply-templates select="@*[name()!='val']|node()"/>
     </xsl:element>
    </xsl:template>
 
     <xsl:template match="fichier" priority="1">
     <xsl:element name="commande">
      <xsl:apply-templates select="@*[name()!='val']|node()"/>
     </xsl:element>
    </xsl:template>
 
 
    <xsl:template match="@*|node()" priority="0">
     <xsl:copy>
     <xsl:apply-templates select="@*|node()"/>
     </xsl:copy>
    </xsl:template>
 
 
 
  <!-- Les éléments à ne pas recopier -->
  <xsl:template match="BatID"/>
  <xsl:template match="status"/>
  <xsl:template match="commentaire"/>
  <xsl:template match="qui"/>
  <xsl:template match="email"/>
 
</xsl:stylesheet>
Ce qui me donne ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Infos_Commande_MasterPrint PUBLIC "-//W3C//DTD HTML 4.01//EN" "">
<Infos_Commande_MasterPrint>
  <commande>2017060360.pdf</commande>
  <DepartBAT>2017-06-21 10:08:06</DepartBAT>
</Infos_Commande_MasterPrint>
Donc voila, j'aimerai bien réussir a déplacer <DepartBAT> dans <commande> ainsi que lui donner en attribut ce qu'elle contient.

Si c'est possible (j'en demande beaucoup), j'aimerai aussi savoir si il est possible de ne garder que la date dans la balise <DepartBAT> et enlever l'heure.

Voila si quelqu'un peut m’éclairer il est le bienvenu.

Thomas