[XML/XSL] Deplacer une balise / Donner un attribut a une balise
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:
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:
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:
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:
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