From: Eric van der Vlist (vdv@dyomedea.com)
Date: 05/07/2004 - 13:22
Bonjour,
On Mon, 2004-07-05 at 14:19, Sir Pendenaor wrote:
> bonjour,
>
> j'ai un document XML du style:
>
> <doc><body>
> <bmk id='1' type='start'/>
> <r><fld type='begin'/>du texte</r>
> <r><fld type='middle'/>du texte</r>
> <r><fld type='end'/>du texte</r>
> <bmk id='1' type='end'/>
> <r><fld type='begin'/>du texte</r>
> <bmk id='2' type='start'/>
> <r><fld type='middle'/>du texte</r>
> <bmk id='2' type='end'/>
> <r><fld type='end'/>du texte</r>
> </body></doc>
>
> je voudrais une requête XPath qui récupère tout les noeuds entre
> <fld type='begin'/> et <fld type='end'/> inclus dont <fld type='middle'>
> est lui-même compris entre <bmk type='start'/> et <bmk type='end'/>
> pour un id donné (ouf !) ?
>
> Malgré mes recherches et mes essais, impossible de 'pondre' une requête
> qui marche pour l'id 1 et aussi pour l'id 2 ... :(
On entre effectivement ici dans des domaines sur lesquels XPath n'est
pas vraiment optimal...
>
> Quelqu'un pourrait-il m'aider ?
Ce qui me trouble dans votre demande (si je l'ai bien comprise), c'est
que le résultat ne serait pas du XML bien formé puisqu'il inclurait une
balise de fin </r> sans balise de début <r> :
<fld type='begin'/>du texte</r>
<r><fld type='middle'/>du texte</r>
<r><fld type='end'/>
Dans la mesure où c'est effectivement le cas, ce n'est donc pas quelque
chose que vous pourrez formuler avec XPath. Vous pourrez tout au plus
(et non sans contorsions) récupérer :
<r><fld type='begin'/>du texte</r>
<r><fld type='middle'/>du texte</r>
<r><fld type='end'/>du texte</r>
Une requête telle que :
/doc/body/bmk[@id=$id and @type='start']/following-sibling::r[fld[@type='begin']][1]/following-sibling::*[count(preceding-sibling::bmk)=count(/doc/body/bmk[@id=$id and @type='start']/preceding-sibling::bmk)+1]
devrait fonctionner.
Si elle ne retourne rien pour id=2, c'est qu'il n'y a pas de <fld
type='begin'/> après <bmk id='2' type='start'/>.
Est-ce là encore réellement ce que vous souhaitez et si oui, pouvez vous
formaliser en français les conditions entre éléments fld et bmk?
Cordialement,
Eric van der Vlist
--
Have you ever thought about unit testing XSLT templates?
http://xsltunit.org
Upcoming XML schema languages tutorial:
- Portland -half day- (27/07/2004) http://masl.to/?E6ED13728
------------------------------------------------------------------------
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)
Archive générée par hypermail 2.1.3 le 30/07/2004 - 13:32 UTC
webmaster@xmlfr.org
|