2012-05-18 18 views
6

Estoy tratando de convertir atributos a los sub-elementos, es decir, convertir el siguiente:Convertir atributos XML a elementos XSLT

<WP featured="yes" player="no" dancers="no" series="logos" archive="no" fanart="no" id="eclipse_logos_"> 
    <seriesName>LOGOS</seriesName> 
    <selection>ECLIPSE</selection> 
    <imgurl>http://www.nba.com/warriors/photos/eclipse_logos_</imgurl> 
    <res>1024x1024r(iPad/iPhone)?1280x1024r(Regular)?1440x900r(Widescreen)?1920x1080r(HDTV)?1920x1200r(Widescreen)</res> 
</WP> 

En:

<WP> 
    <featured>yes</featured> 
    <player>no</player> 
    <dancers>no</dancers> 
    <series>logos</series> 
    <archive>no</archive> 
    <fanart>no></fanart> 
    <id>eclipse_logos_</id> 
    <seriesName>LOGOS</seriesName> 
    <selection>ECLIPSE</selection> 
    <imgurl>http://www.nba.com/warriors/photos/eclipse_logos_</imgurl> 
    <res>1024x1024r(iPad/iPhone)?1280x1024r(Regular)?1440x900r(Widescreen)?1920x1080r(HDTV)?1920x1200r(Widescreen)</res> 
</WP> 
+0

posible duplicado de [Convertir todos los atributos del nodo en los nodos secundarios] (http://stackoverflow.com/questions/4340272/convert-all-nodes-attributes-into-child-nodes) – hakre

Respuesta

10

Prueba esto:

<?xml version="1.0" encoding="utf-8"?> 
<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" 
> 
    <xsl:output method="xml" indent="yes"/> 

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

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

hola, lo siento por el retraso en mi respuesta. tal vez estoy aplicando incorrectamente su hoja de estilo xslt porque todo lo que obtengo es una página en blanco cuando abro el archivo xml en mi navegador. Guardé su código como wallpaper.xsl y luego puse ' ' en la parte superior de mi documento xml. es esto incorrecto? – dmack

+0

¿Qué navegador usaste? Probé con Chrome e IE 9, tanto localmente (como archivos locales) como de forma remota (en el servidor web). A Chrome no le gustaba abrir el archivo local (estaba en blanco) y la consola (CTRL + MAYÚS + J) mostraba este mensaje: 'Inseguro intento de cargar el archivo URL: /// ... desde el marco con el archivo URL: ///.... Los dominios, protocolos y puertos deben coincidir. "Apertura remotamente trabajado en ambos. –

+0

Para el punto de @ infant-programmeraravind, aunque esta solución funciona, es bastante amplia. Si el XML de origen tuviera otros atributos fuera del elemento '', también se convertirían en elementos. – ABach

3

El código de dradu es genérico, la transformación se aplicará a todos los atributos, a continuación el código es más específico ab out WP element: solo los atributos que vienen bajo el elemento WP se convertirán en elementos.

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" indent="yes"/> 

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

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