2013-06-21 5 views
0

J'essaie de transformer un seul attribut en un élément. Le J'utilise est XSL:XSLT transformer un seul attribut en élément

<xsl:template match="TextView/@*"> 
    <xsl:element name="{name()}"> 
    <xsl:value-of select="."/> 
    </xsl:element> 
    </xsl:template> 

mon xml:

<TextView 
    android:id="@+id/ti" 
    style="@style/HTxt" 
    android:text="@string/ti" 
    custom:attribute="name" /> 

Le XSL ci-dessus transforme tous les attributs aux éléments. Mais je ne veux transformer que l'attribut 'custom:' et ignorer les autres. Comment puis-je atteindre cet objectif? Merci d'avance.

Répondre

3

Remplacée @* avec @custom:attribute
Par conséquent, essayez:

<xsl:template match="TextView/@custom:attribute"> 
     <xsl:element name="{name()}"> 
      <xsl:value-of select="."/> 
     </xsl:element> 
</xsl:template> 

Mais attention: custom est un namespace prefix. Vous devez l'ajouter avec la même URL d'espace de nommage que dans votre XML à votre xsl: stylesheet. Quelque chose comme:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
     xmlns:custom="CUSTOM_URL" 
    version="1.0"> 
+0

hr_117 Remerciez you..But même les autres attributs sont displayed..how puis-je supprimer tout sauf coutume: attribut ??? – crtn

+2

Je suppose que vous avez un modèle de transfert d'identité dans votre xslt. Par conséquent, annonce un nouveau modèle pour ignorer les attributs de TextView (< ') –

+2

@ hr_117 Notez que vous devrez ajouter explicitement' priority = "..." 'à Les deux modèles, comme 'TextView/@ custom: attribute' et' TextView/@ * 'ont la même priorité par défaut. –

Questions connexes