2010-04-14 4 views

Répondre

1

Quelque chose comme ça?

Il utilise également un espace de nom unique pour l'attribut que nous sommes en train d'ajouter, donc nous ne remplaçons aucun attribut existant par le nôtre s'il porte le même nom.

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl" xmlns:mycomp="http://www.myuniquenamespace"> 

<xsl:output method="xml" indent="yes"/> 

<xsl:template match="/"> 
    <xsl:copy> 
    <xsl:apply-templates select="@* | node()"/> 
    </xsl:copy> 
</xsl:template> 

<xsl:template match="node()"> 
    <xsl:element name="{local-name()}" namespace="{namespace-uri()}"> 
    <xsl:apply-templates select="@*"/> 
    <xsl:attribute name="someattr" namespace="http://www.myuniquenamespace"> 
     <xsl:value-of select="generate-id()"/> 
    </xsl:attribute> 
    <xsl:apply-templates select="node()"/> 
    </xsl:element> 
</xsl:template> 

<xsl:template match="@* | text()"> 
    <xsl:copy /> 
</xsl:template> 

</xsl:stylesheet> 

espoir que cela vous aide sur votre chemin,

+0

Merci. Ça a l'air génial !! – Rachel

+0

@Marvin: Ceci est inutilement complexe. Cela devient beaucoup plus court quand vous le faites comme @lexicore le décrit. – Tomalak

3

Prendre la transformation d'identité, ajouter un modèle pour les éléments dans lesquels ajoutez l'attribut avec la valeur générée par generate-id().

+0

Désolé, je dois dire non. La tâche est triviale, j'ai donné assez d'indices. – lexicore

+0

Rachel

+0

Merci de l'avoir fait. – Rachel

Questions connexes