Bonjour à tous.
J'ai un document XML, et j'aimerais le filtrer avec une transformation XSL pour ne garder que quelques noeuds.
Mon problème est que mes balises <xsl:template> ne sont pas reconnues on dirait, et en sortie j'ai tout le texte du document XML...
Je pense que ça vient d'un problème de namespace mais je ne m'en sort pas...
Merci donc de votre aide.
Mon fichier XML en entrée (comme il est trop long, j'ai enlevé quelques infos) :
Et j'aimerais avoir ce fichier XML en sortie :
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 <HotelDescriptiveMessage xmlns="http://www.opentravel.org/OTA/2005/12"> <HotelDescriptiveContents HotelCode="14338"> <HotelDescriptiveContent> <HotelInfo> <HotelName>LA CAPUCCINA</HotelName> <CategoryCodes> <LocationCategory Code="3" CodeDetail="OTA" /> </CategoryCodes> <Languages> <Language Language="EN" /> <Language Language="IT" /> <Language Language="ES" /> </Languages> </HotelInfo> <ContactInfos> <ContactInfo> <Addresses> <Address> <AddressLine>Via Novara, 19/B</AddressLine> <CityName>CUREGGIO</CityName> <PostalCode>28060</PostalCode> <CountryName Code="IT">ITALIA</CountryName> </Address> </Addresses> <Phones> <Phone CountryAccessCode="39" PhoneNumber="0322839930" PhoneLocationType="3" /> <Phone CountryAccessCode="39" PhoneNumber="0322839930" PhoneLocationType="4" /> </Phones> <Emails> <Email EmailType="2">mail@hotel.com</Email> </Emails> </ContactInfo> </ContactInfos> </HotelDescriptiveContent> </HotelDescriptiveContents> </HotelDescriptiveMessage>
Voici mon fichier XSL :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <Hotel id="14338"> <HotelName>LA CAPUCCINA</HotelName> <HotelLocation Code="3" /> <CityName>CUREGGIO</CityName> <PostalCode>28060</PostalCode> <CountryName>ITALIA</CountryName> </Hotel>
Merci pour votre aide.
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 <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml"/> <!-- Balise Root du fichier de sortie --> <xsl:template match="HotelDescriptiveContents"> <xsl:element name="Hotel"> <xsl:attribute name="id"> <xsl:value-of select="@HotelCode" /> </xsl:attribute> <xsl:apply-templates /> </xsl:element> </xsl:template> <!-- Récupération du nom de l'hôtel --> <xsl:template match="HotelName"> <xsl:element name="HotelName"><xsl:value-of select="text()" /></xsl:element> </xsl:template> <!-- Récupération de la localisation de l'hôtel --> <xsl:template match="LocationCategory"> <xsl:element name="HotelLocation"> <xsl:value-of select="@Code" /> </xsl:element> </xsl:template> <!-- Récupération de l'adresse de l'hôtel --> <xsl:template match="Address"> <xsl:element name="PostalCode"><xsl:value-of select="PostalCode" /></xsl:element> <xsl:element name="CityName"><xsl:value-of select="CityName" /></xsl:element> <xsl:element name="CountryName"><xsl:value-of select="CountryName" /></xsl:element> </xsl:template> <!-- Template par défaut : traite tous les noeuds --> <xsl:template match="*"> <xsl:comment><xsl:value-of select="name()" /></xsl:comment> <xsl:apply-templates /> </xsl:template> </xsl:stylesheet>
Partager