Reemplazar una porción de carácter en XSLT

February 9, 2009 | In: component, componente_web, xsl

Función para reemplazar una porción de texto.

Función:

<!-- Replace funtion-->
<xsl:template name="replace-string">
    <xsl:param name="str" />
    <xsl:param name="delim" />
    <xsl:param name="newdelim" />
   <xsl:if test="string-length(substring-before($str,$delim)) = 0">
      <xsl:value-of select="$str" />
   </xsl:if>
   <xsl:if test="string-length(substring-before($str,$delim)) > 0">
         <xsl:value-of select="substring-before($str,$delim)" />
         <xsl:value-of select="$newdelim" />
   </xsl:if>
   <xsl:if test="string-length(substring-after($str,$delim)) > 0">
       <xsl:call-template name="replace-string">
         <xsl:with-param name="str" select="substring-after($str,$delim)" />
         <xsl:with-param name="delim" select="$delim" />
         <xsl:with-param name="newdelim" select="$newdelim" />
         <xsl:with-param name="ini" value="1" />
       </xsl:call-template>
  </xsl:if>
</xsl:template>

Ejemplo de uso:

        <xml>
            <title>
                Name__MARCA__Alberto
            </title>
        </xml>
        <xsl:template match="title">
            <xsl:call-template name="replace-string">
              <xsl:with-param name="str" select="." />
              <xsl:with-param name="delim" select="'__MARCA__'"/>
              <xsl:with-param name="newdelim" select="' : '" />
            </xsl:call-template>
            <xsl:value-of select="."/>
        </xsl:template>


6 Responses to Reemplazar una porción de carácter en XSLT

Avatar

Zathras

July 13th, 2009 at 6:45 am

Hola una consulta, primera vez que voy a usar XSL y tengo este problema necesito ingresarlo dentro de una etiqueta HTML es decir:

<img src=”http://www.miurl.com/imagenes/ ” />

Pero me sale error.

Tienes alguan idea

Avatar

Zathras

July 13th, 2009 at 6:46 am

HTML:

Etiqueta

Avatar

oliver cortinas

August 4th, 2009 at 10:53 pm

Tengo una imagen SVG a la cual le realizo unas transformaciones pero ahora quiero que cuando encuentre “rotate(-)” dentro del atributo transform de un tag text:
5
me lo cambie a “rotate(-0)” y quede:
5
alguna idea?

Avatar

admin

August 5th, 2009 at 12:23 am

@oliver:


rotate(-0)

———————————–
Lo que no sé es cómo estás utilizando la info. Imagino que el data del SVG te viene en un nodo; y luego lo pintas en otro lado.

Avatar

oliver cortinas

August 5th, 2009 at 6:27 pm

A ver el SVG ya viene en un formato XML(lo puse pero por eso me salio solo el 5 jajaja):
“” 5 “”
(agrego comillas para que no desaparezca el resto del TAG)
Como ven eso es XML lo que quiero hacer es reemplazar el rotate(-) por un rotate(-0) dentro del valor transform del TAG text, se enttiende mejor ahora?

Avatar

oliver cortinas

August 5th, 2009 at 6:29 pm

bueno volvio a salir mal esto me esta calentando ya jajaja a ver tabulado sin las comillas y sin los < y
text
fill=blue
font-size=12
transform=translate(578, 319) rotate(-)
x=0
y=0
el texto dentro del tag es 5
fin del text

Comemtario