es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo eliminar el símbolo de moneda de un XML con XSLT?

¿Cómo eliminar el símbolo euro de la moneda del código XML? A continuación, presento la salida del archivo XML.

XML de entrada:

& lt; productos & gt;
& lt; producto & gt;
& lt; sku & gt; BTKUJ-1-2-2-3 & lt; / sku & gt;
& lt; precio & gt; 20 € & lt; / precio & gt;
& lt; / producto & gt;
& lt; / productos & gt;

Muestra XSLT 1.0:

& lt;? Xml version = “1.0” encoding = “UTF-8”? & gt;
& lt; xsl: stylesheet version = “1.0” xmlns: xsl = “http://www.w3.org/1999/XSL/Transform” xmlns: g = “http://base.google.com/ns/1.0” & gt;
& lt; xsl: salida método = “xml” versión = “1.0” encoding = “UTF-8” indent = “yes” / & gt;
& lt; xsl: plantilla match = “productos” & gt;
& lt; xsl: element name = “productos” & gt;
& lt; xsl: for-each select = “producto” & gt;
& lt; xsl: element name = “producto” & gt;
& lt; xsl: element name = “sku” & gt;
AVM0TCPD_ & lt; xsl: value-of select = “id” / & gt;
& lt; / xsl: element & gt;
& lt; xsl: element name = “priceimp” & gt;
& lt; xsl: value-of select = “price” / & gt;
& lt; / xsl: element & gt; – & gt;
& lt; / xsl: element & gt;
& lt; / xsl: for-each & gt;
& lt; / xsl: element & gt;
& lt; / xsl: plantilla & gt;
& lt; / xsl: stylesheet & gt;

Resultado esperado:

& lt; productos & gt;
& lt; producto & gt;
& lt; sku & gt; BTKUJ-1-2-2-3 & lt; / sku & gt;
** & lt; precio & gt; 20 & lt; / precio & gt; **
& lt; / producto & gt;
& lt; / productos & gt;

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para eliminar el símbolo del euro del código XML, se puede utilizar la función de XSLT translate para reemplazar el símbolo del euro por una cadena vacía.

    Modifique el elemento priceimp en el código XSLT para incluir esta función:

    <xsl:element name="priceimp">
        <xsl:value-of select="translate(price, '€', '')"></xsl:value-of>
    </xsl:element>
    

    Esto eliminará el símbolo del euro del elemento price en el XML de salida. El código XSLT actualizado se vería así:

    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:g="http://base.google.com/ns/1.0">
        <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"></xsl:output>
        <xsl:template match="products">
            <xsl:element name="products">
                <xsl:for-each select="product">
                    <xsl:element name="product">
                        <xsl:element name="sku">
                            <xsl:value-of select="id"></xsl:value-of>
                        </xsl:element>
                        <xsl:element name="priceimp">
                            <xsl:value-of select="translate(price, '€', '')"></xsl:value-of>
                        </xsl:element>
                    </xsl:element>
                </xsl:for-each>
            </xsl:element>
        </xsl:template>
    </xsl:stylesheet>
    

    El XML de salida tendrá el símbolo del euro eliminado del elemento price:

    <products>
        <product>
            <sku>BTKUJ-1-2-2-3</sku>
            <priceimp>20</priceimp>
        </product>
    </products>
    

Comments are closed.