From: Antoine Quint (ml@graougraou.com)
Date: 03/05/2004 - 18:27
On 3 mai 04, at 18:30, Eric van der Vlist wrote:
>> Ok. Mais je ne pourrais donc pas préserver les attributs tels qu'ils
>> apparaissent dans le fichier source et surtout les préfixes dans le
>> cas
>> de "xmlns:foo"?
>
> Si, puisque lorsque tu sélectionnes un noeud namespace, tu as accès à
> son nom (par la fonction name()) et à sa valeur.
Je ne savais pas que la fonction name() fonctionnait, et effectivement
ça résoud le problème, maginifique! Je me suis un peu gratté la tête
mais voilà le résultat:
<!-- check for the declaration of a namespace and write the
corresponding attribute -->
<xsl:variable name="parent" select="parent::*" />
<xsl:for-each select="namespace::*">
<xsl:variable name="pos" select="position()" />
<xsl:variable name="currentPrefix" select="name()" />
<xsl:variable name="currentUri" select="." />
<xsl:variable name="parentPrefix"
select="name($parent/namespace::*[$pos])" />
<xsl:variable name="parentUri" select="$parent/namespace::*[$pos]" />
<xsl:if test="(string($currentUri) != string($parentUri)) and
($currentUri != 'http://www.w3.org/XML/1998/namespace')">
<xsl:text> </xsl:text><span class="attr-name">xmlns<xsl:if
test="$currentPrefix != ''"><xsl:value-of
select="concat(':',$currentPrefix)"/></xsl:if></span>="<span
class="attr-val"><xsl:value-of select="$currentUri"/></span>"
</xsl:if>
</xsl:for-each>
Cela faisait des années que je n'avais pas fait d'XSLT/XPath (et l'on
doit pouvoir faire bien plus beau), et je me rappelle maintenant bien
des situations saugrenues, mais quand on s'en sort, quel esprit de
victoire!
Antoine
--
Antoine Quint <aq@fuchsia-design.com>
W3C SVG Working Group Invited Expert
SVG Consulting, Teaching and Outsourcing
-- Binary/unsupported file stripped by Ecartis --
-- Type: application/pkcs7-signature
-- File: smime.p7s
--
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
|