Использование функции XPath fn: replace from XSLT
Я пытаюсь использовать XSLT для преобразования простой XML-схемы в HTML и планирую использоватьfn:replace
заменить возврат (\n
) с<p>;
, Однако я не могу понять, как правильно использовать эту функцию.
Упрощенная версия XSLT, которую я использую, гласит:
<?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>
И вход в этот XLST, например:
<?xml version="1.0"?>
<root>
<value><![CDATA[
Hello
world!
]]></value>
</root>
Преобразование завершается неудачноfn:replace
с NoSuchMethodException. Если я заменю оператор замены на
<xsl:value-of select="fn:replace('somestring', '\n', '<p>')" />
Я получаю исключение IllegalArgumentException. Как я используюfn:replace
добиться того, что я хочу?
я используюButterfly XML Editor проверить XSLT.