Re: Problème de copy-of
"jerome steunou" <[email protected]> Fri, 8 Aug 2008 10:01:12 +0200
| Newsgroups | gmane.text.xml.french.tech |
|---|---|
| Message-ID | <[email protected]> |
Effectivement j'=E9tais d=E9j=E0 en train d'=E9crire mon propre template = de s=E9rialisation. Et concernant l'encodage des caract=E8res, c'est encore = plus tordu puisque je dois utiliser un encodage sp=E9cial donc j'en avais pas = parl=E9 jusqu'=E0 pr=E9sent. Merci beaucoup de votre aide. Cordialement, J=E9r=F4me Steunou Le 8 ao=FBt 2008 09:54, Stephane Bonhomme <[email protected]> a =E9crit= : > Bonjour > > Premi=E8re chose : vous ne pouvez pas mettre un fragment d'arbre xml > litt=E9ralement dans un attribut, sous peine de voir votre xml resultan= t > mal forme, pour illustrer : > > <ELT ATT=3D"<elt2 att=3D"xxx"/>"/> n'est pas bien form=E9, il sera donc > n=E9c=E9ssaire d'encoder en entit=E9s certains caract=E8res contenus da= ns > l'attribut : > > <ELT ATT=3D"<elt2 att=3D"xxx"/>"/> et vous obtenez un x= ml > bien form=E9, le parser xml de votre application cible se chargera (en > principe) de r=E9soudre les entit=E9s lors de l'analyse syntaxique et v= ous > pourrez, par exemple avec dom, obtenir facilement l'expression mathML > inclue. > > Maintenant pour obtenir ce r=E9sultat en xslt, il vous faut =E9crire un= jeu > de templates particuliers pour la s=E9rialisation de votre arbre, la > conversion en chaine "standard" ne retenant que les noeuds texte : > > Vous appellerez allors ces templates de la fa=E7on suivante : > <xsl:variable name=3D"string"> > <xsl:apply-templates mode=3D"serialize-xml" > select=3D"document($path)/math:math/*"/> > </xsl:variable> > > Voici les templates : > > <xsl:template match=3D"*" mode=3D"serialize-xml"> > <!-- balise ouvrante --> > <xsl:text><</xsl:text> > <xsl:value-of select=3D"name()"/> > <xsl:apply-templates select=3D"@*" mode=3D"serialize-xml"/> > <xsl:text>></xsl:text> > > <xsl:apply-templates select=3D"node()" mode=3D"serialize-xml"/> > > <!-- balise fermante --> > <xsl:text></</xsl:text> > <xsl:value-of select=3D"name()"/> > <xsl:text>></xsl:text> > </xsl:template> > > <xsl:template match=3D"@*" mode=3D"serialize-xml"> > <xsl:text> </xsl:text> > <xsl:value-of select=3D"name()"/> > <xsl:text>=3D"</xsl:text> > <xsl:value-of select=3D"."/> > <xsl:text>"</xsl:text> > </xsl:template> > > > C'est assez simple comme approche, je ne traite pas ici les > commentaires, PI, ni quelques cas particuliers (pr=E9sence de " dans le= s > valeurs d'attributs...). Mais c'est un d=E9but qui devrait vous aiguill= er > sur la bonne voie. > > Cordialement, > St=E9phane. > > Le vendredi 08 ao=FBt 2008 =E0 09:01 +0200, jerome steunou a =E9crit : > > Dsol j'en rajoute mais : pour faire simple, je pensais que copy-of me > > permettrait de passer d'un arbre une string trs simplement, ce qui e= st > ce > > dont j'ai besoin ici. > > Le 8 aot 2008 08:59, jerome steunou <[email protected]> a crit= : > > > > > lignon >Oui node() j'ai dj essay mme rsultat. > > > > > > Stephane Bonhomme > Je comprend bien votre explication, donc les > > > <xsl:message terminate=3D"non"><xsl:value-of select=3D"$string" > /></xsl:message> > > > que j'utilise pour observer le rsultat en console font la mme chose= ? > Il > > > passe un tree en string en ne prenant que les node texte ? > > > > > > Sinon oui a semble bizarre premire vue, et compltement hors norme = mais > > > j'ai hlas besoin d'avoir ces formules mathmatiques sous forme de ma= thml > > > telles qu'elles sont prsentes dans le document d'origine, dans > l'attribut > > > de cette balise. Je ne peux pas trop m'tendre sur le sujet, considr= ez > > > juste que c'est une infime partie d'un logiciel. > > > > > > Cordialement, > > > > > > Jrme Steunou > > > > > > > > > -- > > Devenez redacteur <XML>fr et contribuez au developpement du > > xml francophone (http://xmlfr.org/infos/redacteurs/) ! > > > > Liste de diffusion "[email protected]" (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 [email protected] > > (mailto:[email protected]?Subject=3Dunsubscribe) > > > -- > St=E9phane Bonhomme -- Exselt Services > > Formations, Conseil et R=E9alisations en Ing=E9nierie Documentai= re, > Technologies Web et Logiciels Libres > [email protected] - http://www.exselt.com > 04 57 39 30 78 / 06 88 57 27 08 > > > -- > Devenez redacteur <XML>fr et contribuez au developpement du > xml francophone (http://xmlfr.org/infos/redacteurs/) ! > > Liste de diffusion "[email protected]" (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 [email protected] > (mailto:[email protected]?Subject=3Dunsubscribe) > >