eliminar - convertir codigo ascii a texto javascript
¿Desea eliminar todos los caracteres / n / r de un nodo XSLT? (2)
La función XPath de normalize-space () debe hacer lo que desee.
¿Me preguntabas si podrías ayudarme, por favor? Tengo un nodo en xml que es el que se sigue
$ LOG: 08880xbpnd $
fhdsafidsfsd
df
Dakota del Sur
fsd
F
Dakota del Sur
fsd
Me preguntaba si, de todos modos, hay que hacer que todo el texto pase a una línea para que luego pueda pasarse a una función de JavaScript. por lo que resultaría así
$ LOG: 08880xbpnd $ fhdsafidsfsddfsdfsdfsdfsd
Desafortunadamente, la función normalize-space()
(utilizada en la respuesta de andynormancx) hace más que eliminar nuevas líneas .
Elimina todos los espacios en blanco iniciales y finales y reemplaza cualquier grupo de espacios blancos contiguos interiores con un solo carácter de espacio .
En muchos casos, queremos borrar solo un tipo de un carácter de espacio en blanco (como en el caso actual - nuevas líneas (CR + LF se normaliza automáticamente al leer el analizador XML a solo LF).
La forma correcta y segura de hacerlo es mediante el uso de la función estándar XPath translate()
:
translate(., ''
'', '''')
devuelve una cadena obtenida del valor de cadena del nodo actual en el que se elimina cualquier carácter de nueva línea.
Aquí hay un ejemplo :
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="text()">
<xsl:value-of
select="translate(.,''
'','''')"/>
</xsl:template>
</xsl:stylesheet>
Cuando se aplica la transformación anterior en este documento XML fuente :
<t>
$LOG: 08880xbpnd $
"embedded blanks must stay"
df
sd
fsd
f
sd
fsd
</t>
El resultado es solo en una línea, según se requiera, y todos los espacios integrados se dejan intactos :
<t>$LOG: 08880xbpnd $"embedded blanks must stay"dfsdfsdfsdfsd</t>