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: Cyril Jandia (cjandia@logfi.fr)
Date: 18/10/2002 - 14:04


Bonjour,

> -----Message d'origine-----
> De : Manfredi Emmanuel
> À : 'xml-tech@xmlfr.org'
> Objet : [xml-tech] XSLT et compteur
>
> Bonjour,
> [...]Je veux appliquer un traitement à tous les sous-éléments d'un élément de
ma
> racine dont l'identifiant est associé à un identifiant précis dans un autre
> élément de ma racine. En simplifiant, mon Schéma serait:
> [...]Est-ce que quelqu'un à une solution pour le compteur, ou une autre idée à
me
> proposer?

Au moins deux problèmes dans la formulation de votre question :

1) (assez courant) vous vous focaliser trop sur le comment faire (via un
"compteur" traditionnel, une boucle, etc), et, surtout, en oubliant le caractère
fonctionnel de XSLT/XPath - qui privilégient plutôt le "sur quoi faire (quels
noeuds) et pourquoi le faire (à quelles conditions)"

2) plus ennuyeux, votre échantillon de données source XML n'est pas ... vraiment
du XML (même "de loin" ;=)! ce qui du coup laisse le lecteur assez perplexe
quant aux façons de l'interpréter lui et les traitements possibles dessus...

Néanmoins, il faut reconnaître que vous avez fait un effort (non négligeable,
c'est bien ;=) pour essayer d'abstraire le problème (cf. votre paragraphe
"pertinent" que je reprends ci-dessus).

NB : je ne suis donc pas sûr de vous avoir bien compris, mais je peux toujours
essayer de vous proposer ceci...
... à supposer que cela réponde bien à votre question, ce n'est probablement pas
une solution optimale mais elle aura au moins le mérite de vous mettre sur la
piste et de vous confirmer que la voie "de la variable qui s'incrémente, pour se
bricoler un compteur" (une quasi-hérésie XSLT ;=) n'est certainement pas la
bonne :

Entrée -- data.xml --

<?xml version="1.0" encoding="iso-8859-1" ?>

<Doc>
  <Struct id="e.1">
    <Struct id="e.1.1" assoc="IdA1"/>
    <Struct id="e.1.2" assoc="IdA2"/>
  </Struct>
  <Struct id="e.2">
    <Struct id="e.2.1" assoc="IdB1"/>
    <Struct id="e.2.2" assoc="IdB2"/>
  </Struct>
  <Struct id="e.3">
    <Struct id="e.3.1">
      <Id-A>IdA1</Id-A>
      <Id-B>IdB1</Id-B>
    </Struct>
    <Struct id="e.3.2">
      <Id-A>IdA1</Id-A>
      <Id-B>IdB3</Id-B>
    </Struct>
    <Struct id="e.3.3">
      <Id-A>IdA2</Id-A>
      <Id-B>IdB2</Id-B>
    </Struct>
  </Struct>
</Doc>

Transfo -- test.xsl --

<?xml version="1.0" encoding="iso-8859-1" ?>

<xsl:transform
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="1.0">

<xsl:template match="/">
<html>
<head>
<title>Test</title>
</head>
<body>
<h1>Test</h1>
Eléments pour lesquels il existe des associations "Id-A, Id-B" :
<ul>
<xsl:for-each select="//Struct[Id-A and Id-B]">
<xsl:variable name="a" select="//Struct[@assoc=current()/Id-A]" />
<xsl:variable name="b" select="//Struct[@assoc=current()/Id-B]" />
<xsl:if test="(count($a) &gt; 0) and (count($b) &gt; 0)">
<li><xsl:value-of select="@id" /></li>
</xsl:if>
</xsl:for-each>
</ul>
</body>
</html>
</xsl:template>

</xsl:transform>

Résultat -- out.html --

<html>
<head>
<title>Test</title>
</head>
<body>
<h1>Test</h1>
Eléments pour lesquels il existe des associations "Id-A, Id-B" :
<ul>
<li>e.3.1</li>
<li>e.3.3</li>
</ul>
</body>
</html>

> Merci

En espérant que cela aide --
Bien à vous,
--CJ

--
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