Cliquez ici.
Accueil
 chercher             Plan du site             Info (English version) 
L'histoire de XML s'écrit en ce moment même. XMLfr vous aide à la suivre et à en dégager les tendances.Les listes de discussions XMLfr sont à votre disposition pour réagir sur nos articles ou simplement poser une question.Si vous ètes passionnée(e) par XML, pourquoi ne pas en faire votre métier ?XMLfr n'est heureusement pas le seul site où l'on parle de XML. Découvrez les autres grâce à XMLfr et à l'ODP.Les partenaires grâce auxquels XMLfr peut se développer.Pour tout savoir sur XMLfr.XMLfr sans fil, c'est possible !Pour ceux qui veulent vraiment en savoir plus sur XML.L'index du site.
 Commentaires et questions non techniques.Commentaires et questions techniques.

 
Cliquez ici.

From: Paul Terray (terray@4dconcept.fr)
Date: 08/08/2001 - 09:40


At 19:26 07/08/01 +0200, you wrote:
>--------------------------------------------
>|<xsl:template match="*">
>|<xsl:copy/><xsl:if test = "not(./text())">
>|<xsl:apply-templates/>
>|</xsl:if>
>|</xsl:template>
>-------------------------------------------
>
> Qui me semble moins beau que ce que tu proposes

Tu limites les sous-noeuds des éléments. Disons que c'est moins dans
l'esprit XSLT. Mais l'important, ce que cela fasse ce que tu veux...

Par contre, tu empêches de traiter avec ta solution les éléments mélangés
au texte, genre :
<a><b>du texte <c>avec</c> des elements </b></a>
Ici, <c> n'apparaitra pas, puisque "not(./text())" est faux.

> Mais je me pose encore quelques questions :
>
> 1) quels sont les differences fondamentales entre "." , "self" et
> "current()" ?
> Y at-il une difference (pour ces trois elements du langage en tous cas)
> lorsqu'on les emplois :
>
> - dans un attribut match
> - dans un attribut test
> - dans un attribut select
>
> J'ai l'impression d'etre passe 10 fois a cote de la solution a cause de
> petites variations sur l'emplois de tous ces elements que je ne maitrise
> pas encore ...

Pour répondre rapidement à beaucoup de ces questions :
http://www.mulberrytech.com/quickref/index.html
L'aide mémoire XSLT est absolument indispensable, et répondra à beaucoup de
ces questions. Par exemple :
"." = "self::node()"

"current()" est un peu plus compliqué à comprendre. Pour une fois, la norme
est assez claire :
La fonction current() renvoie le noeud courant. Hors de crochets,
"current()" = "."
Donc,
<xsl:value-of select="current()"/>
est identique à
<xsl:value-of select="."/>

Par contre, dans des crochets, "current()" reprend le noeud courant en
dehors de l'expression. Par exemple :
<xsl:apply-templates select="//glossary/item[@name=current()/@ref]"/>
appliquera un template à tous les item dont l'attribut "name" est identique
à l'attribut "ref" du noeud courant.
Alors que
<xsl:apply-templates select="//glossary/item[@name=./@ref]"/>
est identique à
<xsl:apply-templates select="//glossary/item[@name=@ref]"/>
C'est à dire que seul les item dont l'attribut "name" est identique à
l'attribut "ref" seront sélectionnés.

En gros, "current()" permet de sortir du contexte induit par les crochets.

> 2) peut on "deporter" le test <xsl:If> du template directement dans
> l'attribut
> match de ce dernier sans avoir recoure a plusieurs templates ??

Ca n'a pas de sens : tu veux effectivement sélectionner tous les éléments
pour les copier, qu'il contiennent du texte ou pas. Honnêtement, pour plein
de raisons, faire un template pour le text() est le plus éfficace.

> 3) Je ne souhaite pas conserver la structure, mais par contre j'ai
> toujours
> un mal fou lorsque je fait du output en mode text a indenter la
> sortie comme
> je le souhaite.Je ne comprend pas comment les blancs dans le document
> source sont pris en compte lors de la transformation.

Sans vouloir jouer les puristes, il n'y a aucun moyen de controler
correctement ce genre de chose, et surtout, pour une sortie XML, cela n'a
aucune importance.

De toute façon, je conseille systématiquement d'utiliser la balise
<xsl:text> pour insérer même un retour chariot, et travailler en mode XML
direct.

Voila.

--
Paul TERRAY - Ingénieur Systèmes Documentaires
4Dconcept
Centre d'affaires - 22, rue Etienne de Jouy
78353 Jouy en Josas CEDEX
Tel. 01 34 58 70 70 - Fax. 01 39 46 06 90
email : terray@4dconcept.fr 

-- Devenez redacteur <XML>fr et contribuez au developpement du xml francophone (http://xmlfr.org/infos/redacteurs/) !

Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).

Cette liste est a votre disposition pour discuter en francais de tout sujet technique lie a XML.

Pour resilier votre abonnement, envoyez un message contenant la commande "unsubscribe" a xml-tech-request@xmlfr.org (mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)



Archive générée par hypermail 2.1.3 le 28/06/2004 - 11:06 UTC

webmaster@xmlfr.org

 

xml tech

Discussions techniques au sujet de XML.

Cette liste est à votre disposition pour discuter en français de tout sujet technique lié à XML.



Devenez rédacteur <XML>fr et contribuez au développement du xml francophone !
Les documents publiés sur ce site le sont sous licence "Open Content"
Conception graphique
  l.henriot@online.fr  

Conception, réalisation et hébergement