Estoy tratando de usar XSLT para convertir un esquema XML simple a HTML y planeé usar fn:replace
para reemplazar las devoluciones (\n
) con <p>;
. Sin embargo, no puedo entender cómo usar esta función correctamente.Usando la función XPath fn: reemplazar de XSLT
Una versión simplificada de la XSLT estoy usando lee:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fn="http://www.w3.org/2005/xpath-functions">
<xsl:template match="/root">
<html>
<body>
<!-- Replace \n with <p> -->
<xsl:value-of select="fn:replace(value, '\n', '<p>')" />
</body>
</html>
</xsl:template>
</xsl:stylesheet>
y la entrada a este XLST es ej .:
<?xml version="1.0"?>
<root>
<value><![CDATA[
Hello
world!
]]></value>
</root>
La conversión falla en fn:replace
con un NoSuchMethodException. Si cambio la instrucción de reemplazo a
<xsl:value-of select="fn:replace('somestring', '\n', '<p>')" />
Recibo una IllegalArgumentException. ¿Cómo uso fn:replace
para lograr lo que quiero?
Estoy usando Butterfly XML Editor para probar el XSLT.
Thx, mencionando XSLT 2.0 me empujó en la dirección correcta. Al topar con el atributo de versión de; a 2.0 y utilizando ; Consigo el trabajo hecho. Tal vez la cadena de análisis es más limpia, pero esto hace el trabajo :) –
larsmoa
¿Hiciste algo más que simplemente cambiar la versión a 2.0? –
¿me puede decir cómo cambiar el atributo de versión de a 2.0? –