Usando a função XPath fn: replace from XSLT
Estou tentando usar o XSLT para converter um esquema XML simples em HTML e planejei usarfn:replace
para substituir retornos (\n
) com<p>;
. No entanto, não consigo descobrir como usar essa função corretamente.
Uma versão simplificada do XSLT que estou usando lê:
<?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>
E a entrada para este XLST é por exemplo:
<?xml version="1.0"?>
<root>
<value><![CDATA[
Hello
world!
]]></value>
</root>
A conversão falha emfn:replace
com um NoSuchMethodException. Se eu alterar a instrução de substituição para
<xsl:value-of select="fn:replace('somestring', '\n', '<p>')" />
Eu recebo uma IllegalArgumentException. Como usofn:replace
para conseguir o que eu quero?
estou a usarButterfly XML Editor para testar o XSLT.