<Order id="0001">
<Customer id="1">Juan Perez</Customer>
</Order>
Y queremos mover el atributo "id" del elemento "Order" a un nuevo elemento "Extension", llamemos al archivo resultante order.out.xml:
<Order> <Customer id="1">Juan Perez</Customer> <Extension id="0001"/> </Order>
Para obtener la transformación deseada, ejecutamos la siguiente XSLT, llamémosla move_id_attribute_under_extension_element.xsl:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="no" indent="yes" />
<!-- copiar todos los nodos excepto el nodo Order -->
<xsl:template match="node()|@*" name="identity">
<xsl:copy>
<xsl:apply-templates select="node()|@*" />
</xsl:copy>
</xsl:template>
<!-- cuando se encuentra el elemento Order -->
<xsl:template match="Order">
<!-- copiar el elemento Order, con modificaciones -->
<Order>
<!-- copiar todos los nodos que se encuentran dentro de Order excepto el atributo id, que se mueve a <Extension id="..."> -->
<xsl:apply-templates select="node()|@*[local-name() != 'id' ]" />
<!-- mover el atributo id del elemento Order a un elemento nuevo Extension -->
<Extension>
<xsl:attribute name="id">
<xsl:value-of select="./@id"/>
</xsl:attribute>
</Extension>
</Order>
</xsl:template>
</xsl:stylesheet>
Para ejecutar la XSLT desde Ubuntu:
$ saxon-xslt -o order.out.xml order.xml move_id_attribute_under_extension_element.xsl
Para instalar saxon-xslt en Ubuntu:
$ sudo apt-get install libsaxon-java
No hay comentarios.:
Publicar un comentario