xml - transformar - xsl ejemplos
¿Cómo eliminar elementos de xml usando xslt con stylesheet y xsltproc? (1)
Utilizando uno de los patrones de diseño XSLT más fundamentales: "Anulando la transformación de identidad ", uno solo escribirá lo siguiente:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output omit-xml-declaration="yes"/> <xsl:template match="node()|@*"> <xsl:copy> <xsl:apply-templates select="node()|@*"/> </xsl:copy> </xsl:template> <xsl:template match="Element[@fruit=''apple'' and @animal=''cat'']"/> </xsl:stylesheet>
Observe cómo la segunda plantilla anula la plantilla de identidad (1ª) solo para elementos llamados "Elemento" que tienen un atributo "fruto" con valor "manzana" y atributo "animal" con valor "gato". Esta plantilla tiene un cuerpo vacío, lo que significa que el elemento coincidente simplemente se ignora (no se produce nada cuando se combina).
Cuando se aplica esta transformación en el siguiente documento XML de origen:
<doc>... <Element name="same">foo</Element>... <Element fruit="apple" animal="cat" /> <Element fruit="pear" animal="cat" /> <Element name="same">baz</Element>... <Element name="same">foobar</Element>... </doc>
el resultado deseado es producido:
<doc>... <Element name="same">foo</Element>... <Element fruit="pear" animal="cat"/> <Element name="same">baz</Element>... <Element name="same">foobar</Element>... </doc>
Aquí se pueden encontrar más fragmentos de código de uso y anulación de la plantilla de identidad.
Tengo muchos archivos XML que tienen algo de la forma:
<Element fruit="apple" animal="cat" />
Que quiero que se elimine del archivo.
Utilizando una hoja de estilo XSLT y la utilidad de línea de comandos de Linux xsltproc, ¿cómo podría hacer esto?
En este punto del guión, ya tengo la lista de archivos que contiene el elemento que deseo eliminar, por lo que el único archivo se puede usar como parámetro.
EDITAR: la pregunta originalmente carecía de intención.
Lo que intento lograr es eliminar todo el elemento "Elemento" donde (fruta == "manzana" && animal == "gato"). En el mismo documento hay muchos elementos llamados "Elemento", deseo que estos permanezcan. Asi que
<Element fruit="orange" animal="dog" />
<Element fruit="apple" animal="cat" />
<Element fruit="pear" animal="wild three eyed mongoose of kentucky" />
Se convertiría:
<Element fruit="orange" animal="dog" />
<Element fruit="pear" animal="wild three eyed mongoose of kentucky" />