From: Benoit.Lefevre@reuters.com
Date: 23/04/2004 - 17:19
Salut.
Est-ce que l'exemple que tu as donne correspond a ce
que tu souhaites vraiment (il me semble que tu l'as fait a
la va-vite car ce n'est meme pas du XML valide ;) ?
Si c'est le cas, ca me semble particulierement vicieux :D
(il ne manquerais pas un <ROW> ou deux dans le resultat
que tu attends ?)
En tous les cas, tu devrais pouvoir t'inspirer ce cette transformation :
---------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="ASCII" indent="yes" media-type="xml" />
<!-- template identite : recopie a l'identique le fichier XML
passe en entree a mois que d'autre regle de plus haute
priorite soit selectionnees a sa place -->
<xsl:template match="/ | * | @* | text() | processing-instruction() | comment()">
<xsl:copy>
<xsl:apply-templates select="* | @* | text() | processing-instruction() | comment()"/>
</xsl:copy>
</xsl:template>
<!-- pour ne pas recopier les HEADER.COL et boucler sur les
element du 1er HD.c rencontre-->
<xsl:template match="HEADER.COL" priority="1">
<xsl:for-each select="HD.C[1]/text()[1] | HD.C[1]/*">
<xsl:variable name="currentPos" select="position()"/>
<xsl:element name="ROW">
<xsl:apply-templates select="."/>
<xsl:apply-templates select="../following-sibling::HD.C/( text()[1] | *)[$currentPos]"/>
</xsl:element>
</xsl:for-each>
</xsl:template>
<!-- pour transformer les noeuds text presents dans des noeud HD.C -->
<xsl:template match="HD.C/text()" priority="1">
<xsl:element name="CELL">
<xsl:attribute name="COLSPAN">3D2</xsl:attribute>
<xsl:value-of select="normalize-space(.)"/>
</xsl:element>
</xsl:template>
<!-- pour transformer les tags presents dans un noeud HD.C -->
<xsl:template match="HD.C/*" priority="1">
<xsl:element name="CELL">
<xsl:value-of select="."/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
---------------------------------------------
Regarde ce que ca produit sur ton exemple ... et adapte en consequence ...
Cordialement.
Benoit Lefevre
PS : elle fonctionne bien pour moi avec la derniere version
de Saxon sur l'exemple suivant :
---------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<TEST>
<HEADER.COL>
<HD.C>Mundial
<HD.C TYPE="3DINT">Volume 1</HD.C>
<HD.C TYPE="3DINT">Test 1</HD.C>
</HD.C>
<HD.C>EEE
<HD.C TYPE="3DINT">Volume 2</HD.C>
<HD.C TYPE="3DINT">Test 2</HD.C>
</HD.C>
<HD.C>Portugal
<HD.C TYPE="3DINT">Volume 3</HD.C>
<HD.C TYPE="3DINT">Test 3</HD.C>
</HD.C>
</HEADER.COL>
</TEST>
---------------------------------------------
Et produit le resultat :
---------------------------------------------
<?xml version="1.0" encoding="ASCII"?>
<TEST>
<ROW>
<CELL COLSPAN="3D2">Mundial</CELL>
<CELL COLSPAN="3D2">EEE</CELL>
<CELL COLSPAN="3D2">Portugal</CELL>
<CELL COLSPAN="3D2">EEE</CELL>
</ROW>
<ROW>
<CELL>Volume 1</CELL>
<CELL>Volume 2</CELL>
<CELL>Volume 3</CELL>
<CELL>Volume 2</CELL>
</ROW>
<ROW>
<CELL>Test 1</CELL>
<CELL>Test 2</CELL>
<CELL>Test 3</CELL>
<CELL>Test 2</CELL>
</ROW>
</TEST>
---------------------------------------------
-------------------------------------------------------------- --
Visit our Internet site at http://www.reuters.com
Get closer to the financial markets with Reuters Messaging - for more
information and to register, visit http://www.reuters.com/messaging
Any views expressed in this message are those of the individual
sender, except where the sender specifically states them to be
the views of Reuters Ltd.
--
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
|