🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fr.comp.text.xml
Article #9022

Re: Simplement � quoi sert xsl:key et key()

#9022
From: Rapha�l THERY
Date: Mon, 25 Jun 2001 09:50
73 lines
4564 bytes
Rien � ajouter, si ce n'est un grand merci
Rapha�l

Thomas Broyer <ptittom+news@free.fr> a �crit dans le message :
5147587.FTl31r3eYU@ltgt.net...
> In <qLIY6.1183$ln3.885829@nnrp6.proxad.net>, Rapha�l THERY wrote:
> > quelqu'un pourrait m'expliquer (assez simplement) le r�le, la
philosophie
> > de xsl:key et/ou de key()
> > car je ne saisis pas trop
>
> Pour r�sumer en quelques mots : "a key is a kind of generalized ID"
>
> xsl:key d�clare des cl�s (un ensemble nom/valeur) pour certains noeuds.
> <xsl:key name="nom" match="motif" use="expression"/> d�clare une cl� de
nom
> "nom" et de valeur "expression" pour chaque noeud correspondant au motif
> "motif" (la valeur est en fait l'expression �valu�e avec pour noeud
courant
> le noeud sur lequel attacvher la cl�)
>
> key() permet ensuite d'acc�der aux �l�ments par leurs cl�s. Le premier
> argument est le nom de la cl�, le second une valeur. La fonction retourne
> tous les noeuds du document (du m�me document que le noeud courant) ayant
> une cl� de m�me nom et de m�me valeur.
>
> Le rapprochement avec les ID est assez facile. Un ID est une cl� dont le
> nom ne nous importe pas et dont la valeur est celle de l'attribut de
> l'�l�ment qui a �t� d�clar� de type ID dans la DTD (c'est la DTD qui
> remplace les xsl:key dans la d�claration de la cl�)
> La fonction id() retourne le noeud ayant la cl� sp�ciale de m�me valeur
que
> l'argument pass� � la fonction. id() remplace ici key().
>
> Les diff�rences entre ID et cl�s sont list�es dans la spec XSLT. En gros :
>  � un ID est unique, il peut exister plusieurs cl�s de m�me nom et m�me
> valeur, mais de noeud diff�rent, ou de m�me nom et noeud mais de valeur
> diff�rente, ou encore de m�me noeud et m�me valeur mais de nom diff�rent.
>  � un ID s'int�resse au type d'un attribut, une cl� � la structure du
> document (et pas n�cessairement aux attributs)
>  � un ID est attach� � un �l�ment uniquement, une cl� s'attache �
n'importe
> quel noeud
>  � la valeur d'une cl� n'a pas de contrainte syntaxique comme celle d'un
ID
>
> Pour r�sumer, tr�s sommairement, une cl� est un moyen d'acc�s rapide �
> certains noeuds pr�sentant une "structure" similaire. C'est une fa�on de
> stocker ces noeuds dans un coin (xsl:key) et pouvoir aller les chercher
> simplement (key()), sans besoin d'une �norme expression XPath cherchant
> dans tout le document.
>
>
> Par exemple, pour trouver tous les clients (�l�ments 'client') dans le
> d�partement 21 (code postal dispo dans le sous-�l�ment 'CP' du
sous-�l�ment
> 'adresse'), avec une expression XPath, tu devras faire :
>   file://client[substring(normalize-space(adresse/CP), 1, 2) = '21']
> et si tu veux maintenant le d�partement 01, tu devras recopier
l'expression
> en changeant le 21 par 01.
>
> Avec les cl�s c'est bien plus facile :
>  1. tu d�clares une cl� de nom "d�partement" attach� � chaque �l�ment
> "client" et ayant pour valeur les 2 premiers chiffres du code postal
> (adresse/CP)
>     <xsl:key name="d�partement" match="client"
>         use="substring(normalize-space(adresse/CP), 1, 2)" />
>  2. tu utilises ces cl�s :
>     key("d�partement", "21") => tous les clients en C�t� d'Or
>     key("d�partement", "01") => tous les clients dans l'Ain
>
> Tom.
Technical Details
Message-ID: <oPDZ6.3746$oX.2044965@nnrp4.proxad.net>
Path: arc1-ca.pugleaf.net!archiver1.google.com!newsfeed.google.com!newsfeed.stanford.edu!news.tele.dk!193.251.151.101!opentransit.net!proxad.net!feeder2-1.proxad.net!nnrp4.proxad.net.POSTED!not-for-mail
References: <qLIY6.1183$ln3.885829@nnrp6.proxad.net> <5147587.FTl31r3eYU@ltgt.net>

Show Full Headers
Complete Article Headers
X-Google-Language: FRENCH,ASCII
X-Google-Thread: 114f60,71a26263d752254c
X-Google-Attributes: gid114f60,public
X-Google-ArrivalTime: 2001-06-25 02:50:13 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!newsfeed.google.com!newsfeed.stanford.edu!news.tele.dk!193.251.151.101!opentransit.net!proxad.net!feeder2-1.proxad.net!nnrp4.proxad.net.POSTED!not-for-mail
From: "Rapha�l THERY" <raphael.thery@free.fr>
Newsgroups: fr.comp.text.xml
References: <qLIY6.1183$ln3.885829@nnrp6.proxad.net> <5147587.FTl31r3eYU@ltgt.net>
Subject: Re: Simplement � quoi sert xsl:key et key()
Lines: 75
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 5.00.2314.1300
X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2314.1300
Message-ID: <oPDZ6.3746$oX.2044965@nnrp4.proxad.net>
Date: Mon, 25 Jun 2001 09:50:12 GMT
NNTP-Posting-Host: 195.115.154.77
X-Complaints-To: abuse@proxad.net
X-Trace: nnrp4.proxad.net 993462612 195.115.154.77 (Mon, 25 Jun 2001 11:50:12 CEST)
NNTP-Posting-Date: Mon, 25 Jun 2001 11:50:12 CEST
Organization: Guest of ProXad - France