我正在尝试使用XSLT将BBCode转换为HTML。这就是我所做的:
<xsl:stylesheet exclude-result-prefixes="foo xslt" version="2.0" xmlns="http://www.w3.org/TR/xhtml1/strict"
xmlns:foo="urn:foo" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xslt="http://xml.apache.org/xslt">
<xsl:output encoding="UTF-8" indent="yes" media-type="text/html" method="html" version="4.0" xslt:indent-amount="4"/>
<xsl:function name="foo:bbcode-to-xhtml">
<xsl:param name="bbcode"/>
<xsl:analyze-string flags="is" regex="\[url=(.*?)\](.*?)\[/url\]" select="$bbcode">
<xsl:matching-substring>
<a href="{regex-group(1)}">
<xsl:value-of select="regex-group(2)"/>
</a>
</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:value-of select="."/>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:function>
<xsl:template match="/">
<xsl:value-of select="foo:bbcode-to-xhtml('A [url=http://www.example.com/]Foo[/url] of Bar!')"/>
</xsl:template>
</xsl:stylesheet>
这就是我得到的:
A Foo of Bar!
这就是我的期望:
A <a href="http://www.example.com/">Foo</a> of Bar!
有谁可以说我做错了什么?
答案 0 :(得分:0)
尝试<xsl:copy-of select="foo:bbcode-to-xhtml('A [url=http://www.example.com/]Foo[/url] of Bar!')"/>
,使用值 - 您只能获得纯文本节点。