2009-10-28 125 views
5

tengo este XML:¿Cómo obtener el valor de un atributo del elemento raíz en XSLT?

<?xml version="1.0" encoding="utf-8" ?> 
<IMPORT mode="FULL"> 
    .... 
</IMPORT> 

Estoy tratando de convertirlo con la siguiente hoja de estilo XSLT:

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="/"> 
    <xsl:element name="import"> 
     <xsl:attribute name="mode"> 
     <xsl:value-of select="@mode"/> 
     </xsl:attribute> 
      .... 
     </xsl:element> 
    </xsl:template> 

Mi problema es que no parece que la siguiente línea a trabajar:

<xsl:value-of select="@mode"/> 

Como solo obtengo

<import mode=""> 

en lugar del esperado:

<import mode="FULL"> 

Alguna pista?

Respuesta

7

intenta utilizar <xsl:value-of select="IMPORT/@mode"/>

+0

gracias a todos por sus respuestas – user198063

8

Usted no está realmente en el elemento de IMPORT.

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="/"> 
    <xsl:apply-templates select="IMPORT"/> 
    </xsl:template> 
    <xsl:template match="IMPORT"> 
    <xsl:element name="import"> 
     <xsl:attribute name="mode"> 
     <xsl:value-of select="@mode"/> 
     </xsl:attribute> 
     ....  
    </xsl:element> 
    </xsl:template> 
1

Prueba esto:

<xsl:template match="IMPORT"> 
    <xsl:element name="import"> 
     <xsl:attribute name="mode"> 
      <xsl:value-of select="@mode"/> 
      </xsl:attribute> 
    </xsl:element> 
</xsl:template> 
Cuestiones relacionadas