validaciones - Agregar elemento en medio de xml usando xslt
validaciones xsl (2)
Aquí hay una hoja de estilo XSLT 1.0 que hará lo que usted solicitó:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<!-- Identity transform -->
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Name">
<xsl:copy-of select="."/>
<Age>34</Age>
</xsl:template>
<xsl:template match="Dept">
<xsl:copy-of select="."/>
<Domain>Insurance</Domain>
</xsl:template>
</xsl:stylesheet>
Obviamente, la lógica variará dependiendo de dónde obtendrá los nuevos datos y dónde debe ir. La hoja de estilo anterior simplemente inserta un elemento <Age>
después de cada elemento <Name>
y un elemento <Domain>
después de cada elemento <Dept>
.
(Limitación: si su documento puede tener elementos <Name>
o <Dept>
dentro de otros elementos <Name>
o <Dept>
, solo los más externos tendrán este procesamiento especial. No creo que pretenda que su documento tenga este tipo de estructura recursiva, por lo que no lo afectaría, pero vale la pena mencionarlo por las dudas).
Debajo está el xml real:
<?xml version="1.0" encoding="utf-8"?>
<employee>
<Name>ABC</Name>
<Dept>CS</Dept>
<Designation>sse</Designation>
</employee>
Y quiero la salida de la siguiente manera:
<?xml version="1.0" encoding="utf-8"?>
<employee>
<Name>ABC</Name>
<Age>34</Age>
<Dept>CS</Dept>
<Domain>Insurance</Domain>
<Designation>sse</Designation>
</employee>
¿Es posible agregar un elemento XML entre el uso de xslt? Por favor dame una muestra!
He modificado algunas cosas en la hoja de estilo existente, esto te permitirá elegir el elemento específico y actualizarlo en tu xml.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<!-- Identity transform -->
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Name[1]">
<xsl:copy-of select="."/>
<Age>34</Age>
</xsl:template>
<xsl:template match="Dept[1]">
<xsl:copy-of select="."/>
<Domain>Insurance</Domain>
</xsl:template>
</xsl:stylesheet>
XML:
<?xml version="1.0" encoding="utf-8"?>
<employee>
<Name>ABC</Name>
<Dept>CS</Dept>
<Designation>sse</Designation>
<Name>CDE</Name>
<Dept>CSE</Dept>
<Designation>sses</Designation>
</employee>