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 :

[XSL]Tree depuis matriciel


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 37
    Points : 14
    Points
    14
    Par défaut [XSL]Tree depuis matriciel
    Bonjour,

    Je cherche a réaliser une feuille XSL qui me permettrai de générer un fichier texte, organisé sous forme d'arbre dont le nombre d'imbrication est variable.

    Ma source est une base de donnée FileMaker, qui permet évidemment l'export en XML via XSL. Pour faciliter la saisie dans la base, les enregistrements sont stockés sous forme de nœud avec la possibilité de leur attribuer un nœud parent. Les relations sont systématiquement de type [1]parent à [N]enfant.

    Lors de l'export brut XML, j'ai un arbre XML de cette forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <ROW MODID="9" RECORDID="9">
    	<COL>
    		<DATA></DATA>
    	</COL>
    	<COL>
    		<DATA>car</DATA>
    	</COL>
    	<COL>
    		<DATA>year=1999</DATA>
    	</COL>
    </ROW>
    Avec :
    - COL[1] correspond au titre du nœud parent (vide si niveau d'origine, mais je pourrais placer une valeur par défaut)
    - COL[2] correspond au titre du nœud
    - COL[3] correspond à une valeur directement associée au nœud

    Je cherche à obtenir un résultat de cette forme :
    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
     
    car
    {
    	name=
    	year=
    	id=
    	credits=
    	comments=
    	version=
    	wheels=
    	ff_factor=
    	skid
    	{
    		sample=
    	}
    	shadow
    	{
    		texture=
    		width=
    		lenght=
    		offset_z=
    	}
    }
    J'ai réussi à me débrouiller avec l'entête, mais je bute sur le reste (le principal ! ) n'arrivant pas à créer l'indentation.
    Comment puis-je procéder ? Est-ce qu'il me manque des informations dans mon XML ?

    Merci d'avance !

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 37
    Points : 14
    Points
    14
    Par défaut
    En me relisant, je pense que l'exemple de source XML est trop succin. Pour obtenir le résultat énoncé, j'aurais comme source XML, l'arbre suivant :

    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
     
    	<ROW MODID="25" RECORDID="4">
    		<COL>
    		</COL>
    		<COL>
    			<DATA>car</DATA>
    		</COL>
    		<COL>
    			<DATA>name=</DATA>
    			<DATA>year=</DATA>
    			<DATA>id=</DATA>
    			<DATA>credits=</DATA>
    			<DATA>comments=</DATA>
    			<DATA>version=</DATA>
    			<DATA>wheels=</DATA>
    			<DATA>ff_factor=</DATA>
    		</COL>
    	</ROW>
    	<ROW MODID="16" RECORDID="5">
    	<COL>
    		<DATA>car</DATA>
    	</COL>
    	<COL>
    		<DATA>skid</DATA>
    	</COL>
    	<COL>
    		<DATA>sample=</DATA>
    	</COL>
    	</ROW>
    <ROW MODID="14" RECORDID="6">
    	<COL>
    		<DATA>car</DATA>
    	</COL>
    	<COL>
    		<DATA>shadow</DATA>
    	</COL>
    	<COL>
    		<DATA>texture=</DATA>
    		<DATA>width=</DATA>
    		<DATA>lenght=</DATA>
    		<DATA>offset_z=</DATA>
    	</COL>
    </ROW>
    Donc mon problème est de dire : quand COL[1] = COL[2] d'un autre ROW, il faut l'imbriquer dans ce parent.

  3. #3
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Il faut penser dans le sens inverse.
    Quand tu parses ta col[1] tu parses les col[2] qui correspondent.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 37
    Points : 14
    Points
    14
    Par défaut
    Bonjour Erwy,

    Si je comprends bien ce que veux dire "penser dans le sens inverse"…
    Je me suis fait un brouillon en français de ce que doit faire XSL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Pour une valeur de COL[1]
    	si //ROW/COL[2] = COL[1]
    		il va au ROW correspondant, puis
    			{
    			COL[3]
    				test deuxième si ?
    			}
    	si aucun ROW/COL[2]=COL[1]
    		valeur de COL[2]
    			{
    			valeurs de COL[3]
    		}
    C'est le raisonnement à tenir ? Comment être sûr que le "parent"(COL[1]) ne sera traité qu'une fois ?

    Merci d'avance

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 37
    Points : 14
    Points
    14
    Par défaut
    J'essaye avec la méthode de Muench, mais le résultat n'est pas encore correct, puisque ça regroupe mes "parents" sans développer les "enfants"…

    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
     
    <?xml version="1.0" encoding="UTF-8" ?>
    <xsl:stylesheet exclude-result-prefixes="fmp" xmlns:fmp="http://www.filemaker.com/fmpxmlresult"	xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="text" encoding="UTF-8" indent="yes" omit-xml-declaration="yes" />
    <xsl:key name="regrouper" match="fmp:ROW/fmp:COL[1]/fmp:DATA" use="."/>
        <xsl:template match="fmp:FMPXMLRESULT/fmp:RESULTSET">
        	<xsl:apply-templates select="fmp:ROW/fmp:COL[1]/fmp:DATA[generate-id(.)=generate-id(key('regrouper',.)[1])]"/>
        </xsl:template>
        <xsl:template match="fmp:ROW/fmp:COL[1]/fmp:DATA">
        	<xsl:value-of select="//fmp:COL[2]/fmp:DATA"/>
    		<xsl:text>{</xsl:text>
    			<xsl:copy-of select="."/>
    			<xsl:apply-templates select="//fmp:ROW/fmp:COL[3]/fmp:DATA[../fmp:ROW/fmp:COL[1]/fmp:DATA=current()]"/>
    		<xsl:text>}</xsl:text>
    	</xsl:template>
    	<xsl:template match="fmp:ROW/fmp:COL[3]/fmp:DATA">
    		<xsl:copy-of select="."/>
    		<xsl:value-of select="fmp:ROW/fmp:COL[4]/fmp:DATA"/>
    	</xsl:template>
    </xsl:stylesheet>
    Autre chose bizarre, bien que je spécifie dans l'entête indent="yes" les données restent sur une ligne !

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 37
    Points : 14
    Points
    14
    Par défaut Des modifs…
    Bon, autre test, pas plus concluant, avec un xsl:if en boucle…

    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
     
    <?xml version="1.0" encoding="UTF-8" ?>
    <xsl:stylesheet exclude-result-prefixes="fmp" xmlns:fmp="http://www.filemaker.com/fmpxmlresult"	xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="text" encoding="UTF-8" indent="yes" omit-xml-declaration="yes" />
        <xsl:template match="fmp:FMPXMLRESULT/fmp:RESULTSET">
        	<xsl:for-each select="//fmp:ROW/fmp:COL[1]/fmp:DATA">
        		<xsl:if test="fmp:ROW/fmp:COL[1]/fmp:DATA = //fmp:ROW/fmp:COL[3]/fmp:DATA">
        			<xsl:value-of select="fmp:ROW/fmp:COL[2]/fmp:DATA"/>
        			<xsl:text>{</xsl:text>
        				<xsl:value-of select="fmp:ROW/fmp:COL[5]/fmp:DATA"/>
        				<xsl:apply-templates />
        			<xsl:text>{</xsl:text>
        		</xsl:if>
        	</xsl:for-each>
    	</xsl:template>
    </xsl:stylesheet>
    Sachant que dans mon export XML, j'ai rajouté les "id" pour qu'il n'y ai pas de confusion : le nom peut être appelé plusieurs fois avec des parents différents et doit apparaître autant de fois qu'il a de parent différent.

    Un extrait :
    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
     
    <RESULTSET FOUND="54">
    <ROW MODID="25" RECORDID="4">
    	<COL></COL>
    	<COL></COL>
    	<COL>
    		<DATA>N0004</DATA>
    	</COL>
    	<COL>
    		<DATA>car</DATA>
    	</COL>
    	<COL>
    		<DATA>name=</DATA>
    		<DATA>year=</DATA>
    		<DATA>id=</DATA>
    		<DATA>credits=</DATA>
    		<DATA>comments=</DATA>
    		<DATA>version=</DATA>
    		<DATA>wheels=</DATA>
    		<DATA>ff_factor=</DATA>
    	</COL>
    </ROW>
    <ROW MODID="16" RECORDID="5">
    	<COL>
    		<DATA>N0004</DATA>
    	</COL>
    	<COL>
    		<DATA>car</DATA>
    	</COL>
    	<COL>
    		<DATA>N0005</DATA>
    	</COL>
    	<COL>
    		<DATA>skid</DATA>
    	</COL>
    	<COL>
    		<DATA>sample=</DATA>
    	</COL>
    </ROW>
    <ROW MODID="14" RECORDID="6">
    	<COL>
    		<DATA>N0004</DATA>
    	</COL>
    	<COL>
    		<DATA>car</DATA>
    	</COL>
    	<COL>
    		<DATA>N0006</DATA>
    	</COL>
    	<COL>
    		<DATA>shadow</DATA>
    	</COL>
    	<COL>
    		<DATA>texture=</DATA>
    		<DATA>width=</DATA>
    		<DATA>lenght=</DATA>
    		<DATA>offset_z=</DATA>
    	</COL>
    </ROW>
    </RESULTSET>

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 37
    Points : 14
    Points
    14
    Par défaut Patauge dans la semoule…
    Bonjour,

    Bon, à chaque fois (tous les quelques mois) que je me recolle au XML/XSL, c'est la même histoire : tout se ré-approprier sur presque zéro…

    Histoire de remettre les choses à plat, j'ai encore modifié la structure de ma base, de façon a avoir un identifiant de "section" : il me permet de regrouper les nœuds, c'est un équivalent de titre, en fait. Le côté matriciel de ma structure me mélangeait trop les pinceaux.

    Donc maintenant, j'ai un XML de ce type là :
    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
     
    <METADATA>
    <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Sections::Section_Name" TYPE="TEXT"/>
    <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="LookUpParent::ID" TYPE="TEXT"/>
    <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="LookUpParent::Name" TYPE="TEXT"/>
    <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="ID" TYPE="TEXT"/>
    <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Name" TYPE="TEXT"/>
    <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Values::OutputValues" TYPE="TEXT"/>
    </METADATA>
    <RESULTSET FOUND="54">
    <ROW MODID="28" RECORDID="4">
    	<COL>
    		<DATA>car</DATA>
    	</COL>
    	<COL>
    	</COL>
    	<COL>
    	</COL>
    	<COL>
    		<DATA>N0004</DATA>
    	</COL>
    	<COL>
    		<DATA>car</DATA>
    	</COL>
    	<COL>
    		<DATA>name=</DATA>
    		<DATA>year=</DATA>
    		<DATA>id=</DATA>
    		<DATA>credits=</DATA>
    		<DATA>comments=</DATA>
    		<DATA>version=</DATA>
    		<DATA>wheels=</DATA>
    		<DATA>ff_factor=</DATA>
    	</COL>
    </ROW>
    <ROW MODID="19" RECORDID="5">
    	<COL>
    		<DATA>car</DATA>
    	</COL>
    	<COL>
    		<DATA>N0004</DATA>
    	</COL>
    	<COL>
    		<DATA>car</DATA>
    	</COL>
    	<COL>
    		<DATA>N0005</DATA>
    	</COL>
    	<COL>
    		<DATA>skid</DATA>
    	</COL>
    	<COL>
    		<DATA>sample=</DATA>
    	</COL>
    </ROW>
    <ROW MODID="17" RECORDID="6">
    	<COL>
    		<DATA>car</DATA>
    	</COL>
    	<COL>
    		<DATA>N0004</DATA>
    	</COL>
    	<COL>
    		<DATA>car</DATA>
    	</COL>
    	<COL>
    		<DATA>N0006</DATA>
    	</COL>
    	<COL>
    		<DATA>shadow</DATA>
    	</COL>
    	<COL>
    		<DATA>texture=</DATA>
    		<DATA>width=</DATA>
    		<DATA>lenght=</DATA>
    		<DATA>offset_z=</DATA>
    	</COL>
    </ROW>
    <ROW MODID="17" RECORDID="7">
    	<COL>
    		<DATA>car</DATA>
    	</COL>
    	<COL>
    		<DATA>N0004</DATA>
    	</COL>
    	<COL>
    		<DATA>car</DATA>
    	</COL>
    	<COL>
    		<DATA>N0007</DATA>
    	</COL>
    	<COL>
    		<DATA>cg</DATA>
    	</COL>
    	<COL>
    		<DATA>x=</DATA>
    		<DATA>y=</DATA>
    		<DATA>z=</DATA>
    	</COL>
    </ROW>
    <ROW MODID="17" RECORDID="8">
    	<COL>
    		<DATA>car</DATA>
    	</COL>
    	<COL>
    		<DATA>N0004</DATA>
    	</COL>
    	<COL>
    		<DATA>car</DATA>
    	</COL>
    	<COL>
    		<DATA>N0008</DATA>
    	</COL>
    	<COL>
    		<DATA>graphics</DATA>
    	</COL>
    	<COL>
    	</COL>
    </ROW>
    <ROW MODID="18" RECORDID="57">
    	<COL>
    		<DATA>car</DATA>
    	</COL>
    	<COL>
    		<DATA>N0008</DATA>
    	</COL>
    	<COL>
    		<DATA>graphics</DATA>
    	</COL>
    	<COL>
    		<DATA>N0057</DATA>
    	</COL>
    	<COL>
    		<DATA>shadow</DATA>
    	</COL>
    	<COL>
    	</COL>
    </ROW>
    <ROW MODID="15" RECORDID="58">
    	<COL>
    		<DATA>car</DATA>
    	</COL>
    	<COL>
    		<DATA>N0057</DATA>
    	</COL>
    	<COL>
    		<DATA>shadow</DATA>
    	</COL>
    	<COL>
    		<DATA>N0058</DATA>
    	</COL>
    	<COL>
    		<DATA>model</DATA>
    	</COL>
    	<COL>
    		<DATA>file=</DATA>
    		<DATA>use_shaders=</DATA>
    		<DATA>intensity_light=</DATA>
    		<DATA>intensity_dark=</DATA>
    	</COL>
    </ROW>
    Avec ce XSL, j'arrive au moins à afficher correctement chaque valeur pour chaque nœud (field="name") :
    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
     
    <?xml version="1.0" encoding="UTF-8" ?>
    <xsl:stylesheet exclude-result-prefixes="fmp" xmlns:fmp="http://www.filemaker.com/fmpxmlresult"	xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    	<xsl:output method="text" encoding="UTF-8" omit-xml-declaration="yes" indent="yes" />
        <xsl:template match="fmp:FMPXMLRESULT/fmp:RESULTSET">
    		<xsl:for-each select="fmp:ROW">
    			<xsl:value-of select="fmp:COL[5]/fmp:DATA"/>
    			<xsl:text>
    </xsl:text>
    			<xsl:text>{</xsl:text>
    			<xsl:text>
    </xsl:text>
    			<xsl:for-each select="fmp:COL[6]/fmp:DATA">
    				<xsl:text>	</xsl:text><xsl:value-of select="."/>
    				<xsl:text>
    </xsl:text>
    			</xsl:for-each>
    			<xsl:text>}</xsl:text>
    			<xsl:text>
    </xsl:text>
    		</xsl:for-each>
    	</xsl:template>
    </xsl:stylesheet>
    Ce qui me donne ce résultat :
    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
     
    0
     
    car
    {
    	name=
    	year=
    	id=
    	credits=
    	comments=
    	version=
    	wheels=
    	ff_factor=
    }
    skid
    {
    	sample=
    }
    shadow
    {
    	texture=
    	width=
    	lenght=
    	offset_z=
    }
    cg
    {
    	x=
    	y=
    	z=
    }
    graphics
    {
    }
    shadow
    {
    }
    model
    {
    	file=
    	use_shaders=
    	intensity_light=
    	intensity_dark=
    }
    Et là je suis complètement paumé au niveau de la méthode qui me permettrait d'imbriquer -par exemple- mon élément "skid" à l'intérieur de "car" ou même mon élément "shadow" dans "graphics", lui-même dans "car"…

    Si quelqu'un avait la bonté de me donner une direction dans laquelle chercher… parce que là, je crois avoir presque tout essayé, sans succès

    Merci d'avance

  8. #8
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    je pencherais pour une solution qui ressemblerait à ce parcours
    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
    <?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" version="1.0" encoding="UTF-8" indent="yes"/>
    	<xsl:template match="/">
    		<xsl:apply-templates select="//ROW[COL[1]/DATA[.='']]"/>
    	</xsl:template>
    	<xsl:template match="DATA">
    		<xsl:value-of select="."/>
    	</xsl:template>
    	<xsl:template match="ROW">
    		<xsl:value-of select="COL[2]/DATA"/>		
    {
    <xsl:apply-templates select="COL[3]/DATA"/>
    		<xsl:variable name="courant" select="COL[2]/DATA"/>
    		<xsl:apply-templates select="//ROW[COL[1]/DATA=$courant]"/>
    }
    		</xsl:template>
    </xsl:stylesheet>

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 37
    Points : 14
    Points
    14
    Par défaut
    Merci encore, Erwy.

    J'ai dû poser sur le papier, en français à quoi correspondait chaque template, pour comprendre le rôle de chacun, mais je pense que grâce à toi, je suis très près de la solution.

    Un grand merci !

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 37
    Points : 14
    Points
    14
    Par défaut
    Impeccable, tout est calé au poil, voilà le XSL, pour ceux qui utiliseraient encore FileMaker :
    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
     
    <?xml version="1.0" encoding="UTF-8" ?>
    <xsl:stylesheet exclude-result-prefixes="fmp" xmlns:fmp="http://www.filemaker.com/fmpxmlresult"	xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    	<xsl:output method="text" encoding="UTF-8" omit-xml-declaration="yes" indent="yes" />
    	<xsl:template match="fmp:FMPXMLRESULT">
    		<xsl:apply-templates select="//fmp:ROW[fmp:COL[2][.='']]"/>
    	</xsl:template>
    	<xsl:template match="fmp:DATA">
    		<xsl:value-of select="."/><xsl:text>
    </xsl:text>
    	</xsl:template>
    	<xsl:template match="fmp:ROW">
    		<xsl:value-of select="fmp:COL[5]/fmp:DATA"/>		
    {
    <xsl:apply-templates select="fmp:COL[6]/fmp:DATA"/>
    		<xsl:variable name="courant" select="fmp:COL[4]/fmp:DATA"/>
    		<xsl:apply-templates select="//fmp:ROW[fmp:COL[2]/fmp:DATA=$courant]"/>
    		<xsl:text>}</xsl:text><xsl:text>
    </xsl:text>
    		</xsl:template>
    </xsl:stylesheet>
    Merci encore à toi Erwan

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Imprimer un fo (xsl-fo) depuis Form c#
    Par yayabon dans le forum C#
    Réponses: 0
    Dernier message: 11/04/2011, 15h26
  2. [XSLT][Javascript] recup/modif xsl:variable depuis javascript
    Par hjn31 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 24/09/2009, 10h25
  3. [XPATH] [XSL] Result tree fragment
    Par luta dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 23/11/2005, 11h30
  4. generer xsl depuis xml avec balises inconues ?
    Par cedre dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 24/06/2003, 09h00
  5. Tree View avec XML et XSL
    Par Drooxy dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 22/04/2003, 10h21

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