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 :

groupy-by avec for-each-group


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2014
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2014
    Messages : 35
    Points : 31
    Points
    31
    Par défaut groupy-by avec for-each-group
    Bonjour à tous, j’espère que vous allez bien.
    Me concernant, j'ai une petit souci. Je travaille actuellement sur un projet de NLP et je dois récupérer les mots qui ont une dépendance syntaxique de type 'obj'. Mais d'abord, je vous montre un exemple du fichier xml en question
    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
     
    <?xml version="1.0" encoding="utf-8"?>
    <?xml-stylesheet type="text/xsl" href="exo14_talismane5xsl.xsl"?>
    <basetalismane>
    <file type="titre" name="2017/01/01/19-00-00/0,2-3208,1-0,0.xml">
    <titre>
    <p type="titre">
    <item><a>1</a><a>Ce</a><a>ce</a><a>PRO</a><a>PRO</a><a>n=s</a><a>0</a><a>_</a><a>0</a><a>_</a></item>
    <item><a>2</a><a>que</a><a>que</a><a>PROREL</a><a>PROREL</a><a></a><a>5</a><a>obj</a><a>5</a><a>obj</a></item>
    <item><a>3</a><a>l'</a><a>le</a><a>DET</a><a>DET</a><a>n=s</a><a>4</a><a>det</a><a>4</a><a>det</a></item>
    <item><a>4</a><a>on</a><a>on</a><a>CLS</a><a>CLS</a><a>n=s|p=3</a><a>5</a><a>suj</a><a>5</a><a>suj</a></item>
    <item><a>5</a><a>sait</a><a>savoir</a><a>V</a><a>V</a><a>n=s|t=P|p=3</a><a>1</a><a>mod_rel</a><a>1</a><a>mod_rel</a></item>
    <item><a>6</a><a>de</a><a>de</a><a>P</a><a>P</a><a></a><a>5</a><a>mod</a><a>5</a><a>mod</a></item>
    <item><a>7</a><a>l'</a><a>le</a><a>DET</a><a>DET</a><a>n=s</a><a>8</a><a>det</a><a>8</a><a>det</a></item>
    <item><a>8</a><a>attentat</a><a>attentat</a><a>NC</a><a>NC</a><a>n=s|g=m</a><a>6</a><a>prep</a><a>6</a><a>prep</a></item>
    <item><a>9</a><a>du</a><a>de</a><a>P+D</a><a>P+D</a><a>n=s|g=m</a><a>5</a><a>mod</a><a>5</a><a>mod</a></item>
    <item><a>10</a><a>Nouvel</a><a>_</a><a>ADJ</a><a>ADJ</a><a></a><a>11</a><a>mod</a><a>11</a><a>mod</a></item>
    <item><a>11</a><a>An</a><a>An</a><a>NPP</a><a>NPP</a><a>n=s</a><a>9</a><a>prep</a><a>9</a><a>prep</a></item>
    <item><a>12</a><a>dans</a><a>dans</a><a>P</a><a>P</a><a></a><a>5</a><a>mod</a><a>5</a><a>mod</a></item>
    <item><a>13</a><a>un</a><a>un</a><a>DET</a><a>DET</a><a>n=s|g=m</a><a>14</a><a>det</a><a>14</a><a>det</a></item>
    <item><a>14</a><a>club</a><a>club</a><a>NC</a><a>NC</a><a>n=s|g=m</a><a>12</a><a>prep</a><a>12</a><a>prep</a></item>
    <item><a>15</a><a>d'</a><a>de</a><a>P</a><a>P</a><a></a><a>5</a><a>mod</a><a>5</a><a>mod</a></item>
    <item><a>16</a><a>Istanbul</a><a>_</a><a>NPP</a><a>NPP</a><a></a><a>15</a><a>prep</a><a>15</a><a>prep</a></item>
    <item><a>17</a><a>.</a><a>.</a><a>PONCT</a><a>PONCT</a><a></a><a>16</a><a>ponct</a><a>16</a><a>ponct</a></item>
    <item><a>18</a><a>§</a><a>§</a><a>PONCT</a><a>PONCT</a><a></a><a>16</a><a>ponct</a><a>16</a><a>ponct</a></item>
    </p>
    </titre>
    <titre>
    <p type="titre">
    <item><a>1</a><a>Tiers</a><a>tiers</a><a>NC</a><a>NC</a><a>g=m</a><a>0</a><a>_</a><a>0</a><a>_</a></item>
    <item><a>2</a><a>payant</a><a>payant</a><a>ADJ</a><a>ADJ</a><a>n=s|g=m</a><a>1</a><a>mod</a><a>1</a><a>mod</a></item>
    <item><a>3</a><a>,</a><a>,</a><a>PONCT</a><a>PONCT</a><a></a><a>2</a><a>ponct</a><a>2</a><a>ponct</a></item>
    <item><a>4</a><a>paquet</a><a>paquet</a><a>NC</a><a>NC</a><a>n=s|g=m</a><a>1</a><a>mod</a><a>1</a><a>mod</a></item>
    <item><a>5</a><a>neutre</a><a>neutre</a><a>ADJ</a><a>ADJ</a><a>n=s</a><a>4</a><a>mod</a><a>4</a><a>mod</a></item>
    <item><a>6</a><a>,</a><a>,</a><a>PONCT</a><a>PONCT</a><a></a><a>5</a><a>ponct</a><a>5</a><a>ponct</a></item>
    <item><a>7</a><a>divorce</a><a>divorce</a><a>NC</a><a>NC</a><a>n=s|g=m</a><a>1</a><a>mod</a><a>1</a><a>mod</a></item>
    <item><a>8</a><a></a><a></a><a>PONCT</a><a>PONCT</a><a></a><a>7</a><a>ponct</a><a>7</a><a>ponct</a></item>
    <item><a>9</a><a>ce</a><a>ce</a><a>PRO</a><a>PRO</a><a>n=s</a><a>1</a><a>mod</a><a>1</a><a>mod</a></item>
    <item><a>10</a><a>qui</a><a>qui</a><a>PROREL</a><a>PROREL</a><a>n=s</a><a>11</a><a>suj</a><a>11</a><a>suj</a></item>
    <item><a>11</a><a>change</a><a>changer</a><a>V</a><a>V</a><a>n=s|t=P,S|p=1,3</a><a>9</a><a>mod_rel</a><a>9</a><a>mod_rel</a></item>
    <item><a>12</a><a>en</a><a>en</a><a>P</a><a>P</a><a></a><a>11</a><a>mod</a><a>11</a><a>mod</a></item>
    <item><a>13</a><a>janvier</a><a>janvier</a><a>NC</a><a>NC</a><a>n=s|g=m</a><a>12</a><a>prep</a><a>12</a><a>prep</a></item>
    <item><a>14</a><a>2017</a><a>2017</a><a>NC</a><a>NC</a><a></a><a>13</a><a>mod</a><a>13</a><a>mod</a></item>
    <item><a>15</a><a>.</a><a>.</a><a>PONCT</a><a>PONCT</a><a></a><a>14</a><a>ponct</a><a>14</a><a>ponct</a></item>
    <item><a>16</a><a>§</a><a>§</a><a>PONCT</a><a>PONCT</a><a></a><a>14</a><a>ponct</a><a>14</a><a>ponct</a></item>
    </p>
    </titre>
    <titre>
    <p type="titre">
    <item><a>1</a><a>2016</a><a>2016</a><a>NC</a><a>NC</a><a></a><a>0</a><a>_</a><a>0</a><a>_</a></item>
    <item><a>2</a><a>:</a><a>:</a><a>PONCT</a><a>PONCT</a><a></a><a>1</a><a>ponct</a><a>1</a><a>ponct</a></item>
    <item><a>3</a><a>l'</a><a>le</a><a>DET</a><a>DET</a><a>n=s</a><a>4</a><a>det</a><a>4</a><a>det</a></item>
    <item><a>4</a><a>année</a><a>année</a><a>NC</a><a>NC</a><a>n=s|g=f</a><a>0</a><a>_</a><a>0</a><a>_</a></item>
    <item><a>5</a><a></a><a></a><a>PROREL</a><a>PROREL</a><a></a><a>11</a><a>mod</a><a>11</a><a>mod</a></item>
    <item><a>6</a><a>le</a><a>le</a><a>DET</a><a>DET</a><a>n=s|g=m</a><a>7</a><a>det</a><a>7</a><a>det</a></item>
    <item><a>7</a><a>libre</a><a>libre</a><a>ADJ</a><a>ADJ</a><a>n=s</a><a>9</a><a>mod</a><a>9</a><a>mod</a></item>
    <item><a>8</a><a>-</a><a>-</a><a>PONCT</a><a>PONCT</a><a></a><a>7</a><a>ponct</a><a>7</a><a>ponct</a></item>
    <item><a>9</a><a>échange</a><a>échange</a><a>NC</a><a>NC</a><a>n=s|g=m</a><a>11</a><a>suj</a><a>11</a><a>suj</a></item>
    <item><a>10</a><a>a</a><a>avoir</a><a>V</a><a>V</a><a>n=s|t=P|p=3</a><a>11</a><a>aux_tps</a><a>11</a><a>aux_tps</a></item>
    <item><a>11</a><a>vacillé</a><a>vaciller</a><a>VPP</a><a>VPP</a><a>n=s|g=m|t=K</a><a>4</a><a>mod_rel</a><a>4</a><a>mod_rel</a></item>
    <item><a>12</a><a>.</a><a>.</a><a>PONCT</a><a>PONCT</a><a></a><a>11</a><a>ponct</a><a>11</a><a>ponct</a></item>
    <item><a>13</a><a>§</a><a>§</a><a>PONCT</a><a>PONCT</a><a></a><a>11</a><a>ponct</a><a>11</a><a>ponct</a></item>
    </p>
    </titre>
    <titre>
    <p type="titre">
    <item><a>1</a><a>La</a><a>la</a><a>DET</a><a>DET</a><a>n=s|g=f</a><a>2</a><a>det</a><a>2</a><a>det</a></item>
    <item><a>2</a><a>Finlande</a><a>Finlande</a><a>NPP</a><a>NPP</a><a>n=s|g=f</a><a>3</a><a>suj</a><a>3</a><a>suj</a></item>
    <item><a>3</a><a>commence</a><a>commencer</a><a>V</a><a>V</a><a>n=s|t=P,S|p=1,3</a><a>0</a><a>root</a><a>0</a><a>root</a></item>
    <item><a>4</a><a>à</a><a>à</a><a>P</a><a>P</a><a></a><a>3</a><a>obj</a><a>3</a><a>obj</a></item>
    <item><a>5</a><a>expérimenter</a><a>expérimenter</a><a>VINF</a><a>VINF</a><a>t=W</a><a>4</a><a>prep</a><a>4</a><a>prep</a></item>
    <item><a>6</a><a>le</a><a>le</a><a>DET</a><a>DET</a><a>n=s|g=m</a><a>7</a><a>det</a><a>7</a><a>det</a></item>
    <item><a>7</a><a>revenu</a><a>revenu</a><a>NC</a><a>NC</a><a>n=s|g=m</a><a>5</a><a>obj</a><a>5</a><a>obj</a></item>
    <item><a>8</a><a>universel</a><a>universel</a><a>ADJ</a><a>ADJ</a><a>n=s|g=m</a><a>7</a><a>mod</a><a>7</a><a>mod</a></item>
    <item><a>9</a><a>.</a><a>.</a><a>PONCT</a><a>PONCT</a><a></a><a>8</a><a>ponct</a><a>8</a><a>ponct</a></item>
    <item><a>10</a><a>§</a><a>§</a><a>PONCT</a><a>PONCT</a><a></a><a>8</a><a>ponct</a><a>8</a><a>ponct</a></item>
    </p>
    </titre>
    <description>
    <p type="description">
    <item><a>1</a><a>En</a><a>en</a><a>P</a><a>P</a><a></a><a>11</a><a>mod</a><a>11</a><a>mod</a></item>
    <item><a>2</a><a>Turquie</a><a>Turquie</a><a>NPP</a><a>NPP</a><a>n=s|g=f</a><a>1</a><a>prep</a><a>1</a><a>prep</a></item>
    <item><a>3</a><a>,</a><a>,</a><a>PONCT</a><a>PONCT</a><a></a><a>2</a><a>ponct</a><a>2</a><a>ponct</a></item>
    <item><a>4</a><a>une</a><a>une</a><a>DET</a><a>DET</a><a>n=s|g=f</a><a>6</a><a>det</a><a>6</a><a>det</a></item>
    <item><a>5</a><a>célèbre</a><a>célèbre</a><a>ADJ</a><a>ADJ</a><a>n=s</a><a>6</a><a>mod</a><a>6</a><a>mod</a></item>
    <item><a>6</a><a>boîte</a><a>boîte</a><a>NC</a><a>NC</a><a>n=s|g=f</a><a>11</a><a>suj</a><a>11</a><a>suj</a></item>
    <item><a>7</a><a>de</a><a>de</a><a>P</a><a>P</a><a></a><a>6</a><a>dep</a><a>6</a><a>dep</a></item>
    <item><a>8</a><a>nuit</a><a>nuit</a><a>NC</a><a>NC</a><a>n=s|g=f</a><a>7</a><a>prep</a><a>7</a><a>prep</a></item>
    <item><a>9</a><a>a</a><a>avoir</a><a>V</a><a>V</a><a>n=s|t=P|p=3</a><a>11</a><a>aux_tps</a><a>11</a><a>aux_tps</a></item>
    <item><a>10</a><a>été</a><a>être</a><a>VPP</a><a>VPP</a><a>t=K</a><a>11</a><a>aux_pass</a><a>11</a><a>aux_pass</a></item>
    <item><a>11</a><a>visée</a><a>viser</a><a>VPP</a><a>VPP</a><a>n=s|g=f|t=K</a><a>0</a><a>root</a><a>0</a><a>root</a></item>
    <item><a>12</a><a>dans</a><a>dans</a><a>P</a><a>P</a><a></a><a>11</a><a>mod</a><a>11</a><a>mod</a></item>
    <item><a>13</a><a>la</a><a>la</a><a>DET</a><a>DET</a><a>n=s|g=f</a><a>14</a><a>det</a><a>14</a><a>det</a></item>
    <item><a>14</a><a>nuit</a><a>nuit</a><a>NC</a><a>NC</a><a>n=s|g=f</a><a>12</a><a>prep</a><a>12</a><a>prep</a></item>
    <item><a>15</a><a>par</a><a>par</a><a>P</a><a>P</a><a></a><a>11</a><a>mod</a><a>11</a><a>mod</a></item>
    <item><a>16</a><a>un</a><a>un</a><a>DET</a><a>DET</a><a>n=s|g=m</a><a>17</a><a>det</a><a>17</a><a>det</a></item>
    <item><a>17</a><a>attentat</a><a>attentat</a><a>NC</a><a>NC</a><a>n=s|g=m</a><a>15</a><a>prep</a><a>15</a><a>prep</a></item>
    <item><a>18</a><a>qui</a><a>qui</a><a>PROREL</a><a>PROREL</a><a>n=s</a><a>20</a><a>suj</a><a>20</a><a>suj</a></item>
    <item><a>19</a><a>a</a><a>avoir</a><a>V</a><a>V</a><a>n=s|t=P|p=3</a><a>20</a><a>aux_tps</a><a>20</a><a>aux_tps</a></item>
    <item><a>20</a><a>fait</a><a>faire</a><a>VPP</a><a>VPP</a><a>n=s|g=m|t=K</a><a>17</a><a>mod_rel</a><a>17</a><a>mod_rel</a></item>
    <item><a>21</a><a>au</a><a>à</a><a>P+D</a><a>P+D</a><a>n=s|g=m</a><a>20</a><a>mod</a><a>20</a><a>mod</a></item>
    <item><a>22</a><a>moins</a><a>moins</a><a>ADV</a><a>ADV</a><a></a><a>23</a><a>mod</a><a>23</a><a>mod</a></item>
    <item><a>23</a><a>39</a><a>39</a><a>ADJ</a><a>ADJ</a><a></a><a>24</a><a>mod</a><a>24</a><a>mod</a></item>
    <item><a>24</a><a>morts</a><a>mort</a><a>NC</a><a>NC</a><a>n=p|g=f,m</a><a>21</a><a>prep</a><a>21</a><a>prep</a></item>
    <item><a>25</a><a>.</a><a>.</a><a>PONCT</a><a>PONCT</a><a></a><a>24</a><a>ponct</a><a>24</a><a>ponct</a></item>
    </p>
    <p type="description">
    <item><a>1</a><a>L'</a><a>le</a><a>DET</a><a>DET</a><a>n=s</a><a>2</a><a>det</a><a>2</a><a>det</a></item>
    <item><a>2</a><a>assaillant</a><a>assaillant</a><a>NC</a><a>NC</a><a>n=s|g=m</a><a>5</a><a>suj</a><a>5</a><a>suj</a></item>
    <item><a>3</a><a>est</a><a>être</a><a>V</a><a>V</a><a>n=s|t=P|p=3</a><a>5</a><a>aux_tps</a><a>5</a><a>aux_tps</a></item>
    <item><a>4</a><a>toujours</a><a>toujours</a><a>ADV</a><a>ADV</a><a></a><a>5</a><a>mod</a><a>5</a><a>mod</a></item>
    <item><a>5</a><a>recherché</a><a>rechercher</a><a>VPP</a><a>VPP</a><a>n=s|g=m|t=K</a><a>0</a><a>root</a><a>0</a><a>root</a></item>
    <item><a>6</a><a>.</a><a>.</a><a>PONCT</a><a>PONCT</a><a></a><a>5</a><a>ponct</a><a>5</a><a>ponct</a></item>
    <item><a>7</a><a>§</a><a>§</a><a>PONCT</a><a>PONCT</a><a></a><a>5</a><a>ponct</a><a>5</a><a>ponct</a></item>
    </p>
    </description>
    <description>
    <p type="description">
    <item><a>1</a><a>La</a><a>la</a><a>DET</a><a>DET</a><a>n=s|g=f</a><a>3</a><a>det</a><a>3</a><a>det</a></item>
    <item><a>2</a><a>nouvelle</a><a>nouveau</a><a>ADJ</a><a>ADJ</a><a>n=s|g=f</a><a>3</a><a>mod</a><a>3</a><a>mod</a></item>
    <item><a>3</a><a>année</a><a>année</a><a>NC</a><a>NC</a><a>n=s|g=f</a><a>4</a><a>suj</a><a>4</a><a>suj</a></item>
    <item><a>4</a><a>annonce</a><a>annoncer</a><a>V</a><a>V</a><a>n=s|t=P,S|p=1,3</a><a>0</a><a>root</a><a>0</a><a>root</a></item>
    <item><a>5</a><a>l'</a><a>le</a><a>DET</a><a>DET</a><a>n=s</a><a>6</a><a>det</a><a>6</a><a>det</a></item>
    <item><a>6</a><a>entrée</a><a>entrée</a><a>NC</a><a>NC</a><a>n=s|g=f</a><a>4</a><a>obj</a><a>4</a><a>obj</a></item>
    <item><a>7</a><a>en</a><a>en</a><a>P</a><a>P</a><a></a><a>6</a><a>dep</a><a>6</a><a>dep</a></item>
    <item><a>8</a><a>vigueur</a><a>vigueur</a><a>NC</a><a>NC</a><a>n=s|g=f</a><a>7</a><a>prep</a><a>7</a><a>prep</a></item>
    <item><a>9</a><a>de</a><a>de</a><a>P</a><a>P</a><a></a><a>4</a><a>mod</a><a>4</a><a>mod</a></item>
    <item><a>10</a><a>nouvelles</a><a>nouveau</a><a>ADJ</a><a>ADJ</a><a>n=p|g=f</a><a>11</a><a>mod</a><a>11</a><a>mod</a></item>
    <item><a>11</a><a>réformes</a><a>réforme</a><a>NC</a><a>NC</a><a>n=p|g=f</a><a>9</a><a>prep</a><a>9</a><a>prep</a></item>
    <item><a>12</a><a>.</a><a>.</a><a>PONCT</a><a>PONCT</a><a></a><a>11</a><a>ponct</a><a>11</a><a>ponct</a></item>
    </p>
    <p type="description">
    <item><a>1</a><a>Précisions</a><a>précision</a><a>NC</a><a>NC</a><a>n=p|g=f</a><a>0</a><a>_</a><a>0</a><a>_</a></item>
    <item><a>2</a><a>sur</a><a>sur</a><a>P</a><a>P</a><a></a><a>1</a><a>dep</a><a>1</a><a>dep</a></item>
    <item><a>3</a><a>les</a><a>les</a><a>DET</a><a>DET</a><a>n=p</a><a>4</a><a>det</a><a>4</a><a>det</a></item>
    <item><a>4</a><a>mesures</a><a>mesure</a><a>NC</a><a>NC</a><a>n=p|g=f</a><a>2</a><a>prep</a><a>2</a><a>prep</a></item>
    <item><a>5</a><a>les</a><a>les</a><a>DET</a><a>DET</a><a>n=p</a><a>7</a><a>det</a><a>7</a><a>det</a></item>
    <item><a>6</a><a>plus</a><a>plus</a><a>ADV</a><a>ADV</a><a></a><a>7</a><a>mod</a><a>7</a><a>mod</a></item>
    <item><a>7</a><a>importantes</a><a>important</a><a>ADJ</a><a>ADJ</a><a>n=p|g=f</a><a>1</a><a>mod</a><a>1</a><a>mod</a></item>
    <item><a>8</a><a>de</a><a>de</a><a>P</a><a>P</a><a></a><a>1</a><a>dep</a><a>1</a><a>dep</a></item>
    <item><a>9</a><a>2017</a><a>2017</a><a>NC</a><a>NC</a><a></a><a>8</a><a>prep</a><a>8</a><a>prep</a></item>
    <item><a>10</a><a>.</a><a>.</a><a>PONCT</a><a>PONCT</a><a></a><a>9</a><a>ponct</a><a>9</a><a>ponct</a></item>
    <item><a>11</a><a>§</a><a>§</a><a>PONCT</a><a>PONCT</a><a></a><a>9</a><a>ponct</a><a>9</a><a>ponct</a></item>
    </p>
    </description>
    Donc dans ce fichier xml la, je veux récupérer les nœuds item dont la dépendance syntaxique est a[8] = 'obj'. Les noeuds items representent des tokens pour ceux qui connaissent un peu le Traitement Automatique des Langues. Jusque là je n'ai pas de souci. Sauf que j'aimerais grouper et trier mes items selon leur catégorie grammaticale (leur POS) et là c'est a[4] de sorte à avoir avoir tous les item avec a[4]='NC' ensemble par exemple et je souhaite afficher pour chaque item le mot a[2] avec son a[4]. Je prends cet exemple de NC parce que c'est le plus courant pour 'obj'. J'ai donc pensé à une structure for-each-group avec grouping-by=a[4] mais le résultat n'est pas terrible. Voila ce que j'obtiens avec le code que je vais vous montrer.
    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
     
    que PROREL
    faire VINF
    année NC
    pays NC
    l' CLO
    à P
    revenu NC
    vœux NC
    retenir VINF
    An NPP
    ans NC
    amuser VINF
    relance NC
    soutien NC
    objet NC
    identité NC
    débat NC
    être VINF
    artiste NC
    cours NC
    hausse NC
    zone NC
    Et ça, c'est mon code. Vous sauriez me dire où est le problème ? Enfin je sais, il y au plus 2 obj par titre, donc mon grouping by ne s'effectue que sur ces deux items. Mais lorsque je change ma template titre de sorte à matcher tous les titres, le processeur XSLT m'affiche le contenu textuel du noeud de tous les items.
    Ca c'est mon code pour l'instant
    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
     
    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet version="2.0" 
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <xsl:output method="text" encoding="utf-8"/>	
     
    <xsl:template match="/">
     
        <xsl:apply-templates select="//titre"/>
     
    </xsl:template>
     
    <xsl:template match="titre">
     
        <xsl:for-each-group select="p//item[a[8]='obj']" group-by="a[4]">
            <xsl:for-each select="current-group()">
                <xsl:value-of select="concat(current()/a[2], ' ', current()/a[4])"/>
                <xsl:text>
                </xsl:text>
            </xsl:for-each>
        </xsl:for-each-group>
     
    </xsl:template> 
     
    </xsl:stylesheet>
    Merci pour votre aide.

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2014
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2014
    Messages : 35
    Points : 31
    Points
    31
    Par défaut
    J'ai finalement trouvé par moi-même la solution mais le code est horrible. J'aimerais utiliser des templates pour obtenir le même résultat. Donc si vous avez des idées, suggestions ou autre , je suis preneur.
    J'ai honte de rentre un travail pareil.
    Voici le code :
    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
     
    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet version="2.0" 
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <xsl:output method="text" encoding="utf-8"/>	
     
        <xsl:template match="/">
     
            <xsl:comment>This code is awful but it works</xsl:comment>
     
            <xsl:text>**************  Titres (titles) ***************</xsl:text>
            <xsl:text>&#xD;&#xA;</xsl:text>
            <xsl:text>&#xD;&#xA;</xsl:text>
            <xsl:text>Elements with obj dependancies : </xsl:text>
            <xsl:value-of select="count(//p[@type='titre']//item[a[8]='obj'])"/>
            <xsl:text>&#xD;&#xA;</xsl:text>
            <xsl:text>&#xD;&#xA;</xsl:text>
            <xsl:for-each-group select="//p[@type='titre']//item[a[8]='obj']" group-by="a[4]">
                <xsl:text>Total number of words in the category</xsl:text>
                <xsl:text>*</xsl:text>
                    <xsl:value-of select="distinct-values(current-group()/a[4])"/>
                <xsl:text> : </xsl:text>
                    <xsl:value-of select="count(current-group())"/>
                <xsl:text>&#xD;&#xA;</xsl:text>
                  <xsl:for-each select="current-group()">
                      <xsl:value-of select="concat(a[2], ' ', a[4])"/>
                     <xsl:text>&#xD;&#xA;</xsl:text>
                </xsl:for-each>
                <xsl:text>&#xD;&#xA;</xsl:text>
            </xsl:for-each-group>
     
            <xsl:text>************ Descriptions *************</xsl:text>
            <xsl:text>&#xD;&#xA;</xsl:text>
            <xsl:text>&#xD;&#xA;</xsl:text>
            <xsl:text>Elements with obj dependancies : </xsl:text>
                <xsl:value-of select="count(//p[@type='description']//item[a[8]='obj'])"/>
            <xsl:text>&#xD;&#xA;</xsl:text>
            <xsl:text>&#xD;&#xA;</xsl:text>
            <xsl:for-each-group select="//p[@type='description']//item[a[8]='obj']" group-by="a[4]">
                <xsl:text>Number of words in the category </xsl:text>
                <xsl:value-of select="distinct-values(current-group()/a[4])"/>
                <xsl:text> : </xsl:text>
                <xsl:value-of select="count(current-group())"/>
                <xsl:text>&#xD;&#xA;</xsl:text>
                <xsl:for-each select="current-group()">
                    <xsl:value-of select="concat(a[2], ' ', a[4])"/>
                    <xsl:text>&#xD;&#xA;</xsl:text>
                </xsl:for-each>
                <xsl:text>&#xD;&#xA;</xsl:text>
            </xsl:for-each-group>
     
        </xsl:template>
     
    </xsl:stylesheet>
    Et voici la sortie . Je precise que c'est sur le ficher xml en entier.
    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
     
    **************  Titres (titles) ***************
     
    Elements with obj dependancies : 16
     
    Number of words in the category PROREL : 1
    que PROREL
     
    Number of words in the category VINF : 2
    faire VINF
    retenir VINF
     
    Number of words in the category NC : 11
    année NC
    revenu NC
    vœux NC
    relance NC
    soutien NC
    objet NC
    identité NC
    débat NC
    cours NC
    hausse NC
    zone NC
     
    Number of words in the category P : 1
    à P
     
    Number of words in the category NPP : 1
    An NPP
     
    ************ Descriptions *************
     
    Elements with obj dependancies : 14
     
    Number of words in the category NC : 12
    entrée NC
    coup NC
    actualité NC
    début NC
    Etat NC
    euros NC
    Français NC
    bal NC
    lieu NC
    monde NC
    problèmes NC
    morts NC
     
    Number of words in the category PROREL : 1
    dont PROREL
     
    Number of words in the category VINF : 1
    garder VINF
    EDIT: j'ai trouvé ca mais je parle de templates avec match, apply-template etc... qui modifierait radicalement la feuille de style et rendrait le code plus beau et effice.
    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
     
    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet version="2.0" 
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <xsl:output method="text" encoding="utf-8"/>	
     
        <xsl:template match="/">
     
            <xsl:text>**************  Titres ***************</xsl:text>
            <xsl:call-template name="extract_obj">
                <xsl:with-param name="type" select="'titre'"></xsl:with-param>
            </xsl:call-template>
     
            <xsl:text>************ Descriptions *************</xsl:text>
                <xsl:call-template name="extract_obj">
                    <xsl:with-param name="type" select="'description'"></xsl:with-param>
                </xsl:call-template>
     
        </xsl:template>
     
    <xsl:template name="extract_obj">
        <xsl:param name="type"></xsl:param>
     
        <xsl:text>&#xD;&#xA;</xsl:text>
        <xsl:text>&#xD;&#xA;</xsl:text>
        <xsl:text>Elements avec dépendance obj : </xsl:text>
        <xsl:value-of select="count(//p[@type=$type]//item[a[8]='obj'])"/>
        <xsl:text>&#xD;&#xA;</xsl:text>
        <xsl:text>&#xD;&#xA;</xsl:text>
        <xsl:for-each-group select="//p[@type=$type]//item[a[8]='obj']" group-by="a[4]">
            <xsl:text>Nombre de mots dans la catégorie </xsl:text>
            <xsl:value-of select="distinct-values(current-group()/a[4])"/>
            <xsl:text> : </xsl:text>
            <xsl:value-of select="count(current-group())"/>
            <xsl:text>&#xD;&#xA;</xsl:text>
            <xsl:for-each select="current-group()">
                <xsl:value-of select="concat(a[2], ' ', a[4])"/>
                <xsl:text>&#xD;&#xA;</xsl:text>
            </xsl:for-each>
            <xsl:text>&#xD;&#xA;</xsl:text>
        </xsl:for-each-group>
     
    </xsl:template>
     
    </xsl:stylesheet>

Discussions similaires

  1. [xsl] Problème avec for-each
    Par VolaiL dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 22/03/2006, 11h28
  2. [XSLT]problème avec for-each incompréhensible
    Par trotters213 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 21/02/2006, 10h31
  3. [XML][XSLT] Débutant {Probléme avec For-each-group}
    Par Silvia12 dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 29/01/2006, 21h38
  4. [VB]Probleme avec for each .....
    Par STRUFIELD dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 20/01/2006, 08h31
  5. [VB.NET] Problème avec For Each...
    Par cyrcroix dans le forum Windows Forms
    Réponses: 5
    Dernier message: 15/06/2005, 10h49

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