2010-03-31 22 views
5

Estoy intentando crear un elemento en un XML donde se copie y modifique el contenido básico.Cómo crear un elemento en XSLT al copiar con plantillas

Mi XML es algo así como

<root> 
    <node> 
    <child>value</child> 
    <child2>value2</child2> 
    </node> 
    <node2>bla</node2> 
</root> 

El número de los hijos del nodo puede cambiar, así como los hijos de la raíz. El XSLT debe copiar todo el contenido, modificar algunos valores y agregar algunos nuevos.

la copia y de modificación no es un problema:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> 
    <xsl:output method="xml" encoding="UTF-8"/> 
    <xsl:template match="@*|node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
    </xsl:template> 
</xsl:stylesheet> 

(+ nuevas plantillas para modificaciones).

Pero, ¿cómo agrego un nuevo elemento en esta estructura en alguna ruta, por ej. Quiero agregar un elemento como el último elemento del nodo "nodo". El elemento "nodo" en sí siempre existe.

Respuesta

5
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> 
    <xsl:output method="xml" encoding="UTF-8"/> 
    <xsl:template match="@*|node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
    </xsl:template> 
    <xsl:template match="node"> 
    <node> 
     <xsl:apply-templates select="@*|node()"/> 
     <newNode/> 
    </node> 
    </xsl:template> 
</xsl:stylesheet> 
+0

Perfecto. Gracias. –

+0

Agregar un elemento secundario al elemento raíz no funciona con esto. Alguna solución? – Buffalo

Cuestiones relacionadas