From: jlefeuvre@tele2.fr
Date: 05/04/2004 - 15:14
Merci
C'est exactement ce que je recherchais et l'expression fonctionne parfaitement si le noeud que l'on cherche a supprimer est present plusieurs fois dans le schema.
Le but est de modifier un fichier source (XML) en supprimant la ou les branches desirées.
Merci encore.
Cordialement
>
> De: Eric van der Vlist <vdv@dyomedea.com>
> Date: 2004/04/05 lun. PM 04:39:40 GMT+02:00
> À: xml-tech@xmlfr.org
> Objet: [xml-tech] Re: Expression xpath pour supprimer une branche
>
>
> Bonjour,
>
> On Mon, 2004-04-05 at 16:23, jlefeuvre@tele2.fr wrote:
> > Bonjour
> >
> > Je desire supprimer d'un schema XML une branche entiere à partir du nom d'un
> > noeud.
> >
> > Exemple :
> > On part du schema suivant
> > <toto>
> > <titi id="1.1">
> > <titi1 id="1.1.1">1.1.1</titi1>
> > <titi2 id="1.1.2">1.1.2</titi2>
> > <titi3 id="1.1.3">1.1.3</titi3>
> > </titi>
> > <tutu id="1.2">
> > <tutu1 id="1.2.1">2.1.1</tutu1>
> > <tata id="tata">
> > <tata1 id="1.2.2.1">2.1.2.1</tata1>
> > <tata2 id="1.2.2.2">2.1.2.2</tata2>
> > </tata>
> > <tutu3 id="1.2.3">2.1.3</tutu3>
> > </tutu>
> > <toutou id="1.3"/>
> > </toto>
>
> Pourquoi parlez-vous de schéma? C'est un document XML, pas un schéma!
>
> > on souhaite supprimer du schema le noeud 'tata' et l'ensemble de ses
> > descendants pour obtenir le schema suivant :
> >
> > <toto>
> > <titi id="1.1">
> > <titi1 id="1.1.1">1.1.1</titi1>
> > <titi2 id="1.1.2">1.1.2</titi2>
> > <titi3 id="1.1.3">1.1.3</titi3>
> > </titi>
> > <tutu id="1.2">
> > <tutu1 id="1.2.1">2.1.1</tutu1>
> > <tutu3 id="1.2.3">2.1.3</tutu3>
> > </tutu>
> > <toutou id="1.3"/>
> > </toto>
> >
> >
> >
> > Dans le cas ou l'element 'tata' n'est present qu'une seule fois l'expression
> > suivante semble fonctionner :
> > //tata/preceding::*|//tata/following::*|//tata/ancestor::*
> > c'est a dire qu'elle selectionne bien tous les elts du schema sauf 'tata' et
> > ses descendants. Par contre si l'element est present plusieurs fois alors
> > l'expression selectionne le schema entier ce qui n'est pas le resultat
> > recherché.
> >
> > QQun a-t-il une idée ?
>
> //*[not(ancestor-or-self::tata)] devrait faire ce que vous voulez, ou du
> moins ce que je comprend que vous voulez, c'est à dire que c'est une
> expression qui sélectionne tous les noeuds qui ne sont pas des éléments
> "tata" et qui n'ont pas un ancêtre qui est un élément "tata".
>
> Par contre, je ne vois pas bien dans quel contexte vous l'utiliserez. En
> pratique, pour écrire une transformation qui élimine ces éléments, on
> écrira plus simplement quelque chose du type :
>
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> >
>
> <xsl:template select="tata"/>
>
> <xsl:template match="@*|*|text()">
> <xsl:copy>
> <xsl:apply-templates select="@*"/>
> <xsl:apply-templates/>
> </xsl:copy>
> </xsl:template>
>
> </xsl:stylesheet>
>
> Cordialement,
>
> Eric van der Vlist
>
> Cordialement,
>
> Eric van der Vlist
> --
> Have you ever thought about unit testing XSLT templates?
> http://xsltunit.org
> Upcoming XML schema languages tutorial:
> - Amsterdam -half day- (18/04/2004) http://masl.to/?P220516D7
> ------------------------------------------------------------------------
> Eric van der Vlist http://xmlfr.org http://dyomedea.com
> (ISO) RELAX NG ISBN:0-596-00421-4 http://oreilly.com/catalog/relax
> (W3C) XML Schema ISBN:0-596-00252-1 http://oreilly.com/catalog/xmlschema
> ------------------------------------------------------------------------
>
> --
> 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)
>
>
-------------------------------------------------
Internet simplement moins cher avec Tele2 : http://www.tele2.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
|