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.
 Si vous vous posez une question, vous n'êtes peut-être pas le premier...Les traductions en français des bibles XML.Ces articles sont des références dans leur domaine.Tout ce qu'il faut savoir pour démarrer sur un sujet XML...


Analyser une Processing Instruction avec XSLT

Comment analyser une Processing Instruction avec XSLT ?

Eric van der Vlist, Dyomedea (vdv@dyomedea.com).
jeudi 11 janvier 2001

Je désire formater un document XML commençant ainsi:

<?xml version="1.0" encoding="UTF-8"?>
<?electronicForm EFID="etudetest" version="1" title="etude de test"?>
<?xml-stylesheet type="text/xsl" href="pi.xsl"?>
<EMC …

Je voudrais récupérer la valeur de l'@EFID de ma processing instruction.

J'ai essaye avec:

<xsl:value-of select="processing-instruction()/@EFID"/>

Mais le résultat vide. Y a t-il un moyen de récupérer cette valeur?

Oui, mais les PIs sont de bien étranges animaux et c'est laborieux.

Bien que leur syntaxe ressemble à celle des autres balises, lorsque vous écrivez EFID="etudetest" dans une PI, ce n'est pas considéré comme un attribut...

Tout d'abord, attention à ce que vous sélectionnez. Lorsque vous écrivez select="processing-instruction()", vous sélectionnez les 2 PIs présentes dans votre document.

Il est donc plus prudent d'écrire:

select="processing-instruction('electronicForm')"

Ensuite, le noeud que vous sélectionnez ainsi n'a pas d'attributs (une PI n'a aucun descendant) mais un nom (electronicForm) et une valeur (EFID="etudetest" version="1" title="etude de test").

Vous pouvez récupérer cette valeur comme d'habitude (xsl:value-of), mais c'est à vous de l'analyser.

Dans votre cas particulier, quelque chose comme:

<xsl:value-of
  select="substring-before(
     substring-after(
       substring-after(
           processing-instruction('electronicForm'),
                'EFID'), '&quot;'), '&quot;')"/>

devrait faire l'affaire...

Cyril Balit: "[xml-tech] processing instruction"Michael Tartar: "[xml-tech] Re: processing instruction"Eric van der Vlist: "[xml-tech] Re: processing instruction"Verachten Bruno: "[xml-tech] Processing-Instruction (was Re: XSL)"Eric van der Vlist: "[xml-tech] Re: Processing-Instruction (was Re: XSL)"

Copyright 2001, Eric van der Vlist.


 

Mots clés.



L'histoire de XML s'écrit en ce moment même. XMLfr vous aide à la suivre et à en dégager les tendances.


Les documents publiés sur ce site le sont sous licence "Open Content"
Conception graphique
  l.henriot  

Conception, réalisation et hébergement
Questions ou commentaires
  redacteurs@xmlfr.org