我需要用超链接<a href="http://google.com">Google</a>
听起来很简单,但我在xslt文件中这样做。我通常可以使用函数replace,但它只在用字符串替换字符串时才有效(不允许使用任何元素)。
对此的任何帮助或指示将非常感激。谢谢。
答案 0 :(得分:3)
此问题与此问题类似:Replacing strings in various XML files
您只需要更改您要替换的内容即可。
这是一个显示可能修改的示例。
XML输入
<doc>
<test>This should be a link to google: Google</test>
</doc>
XSLT 2.0
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:param name="list">
<words>
<word>
<search>Google</search>
<replace>http://www.google.com</replace>
</word>
<word>
<search>Foo</search>
<replace>http://www.foo.com</replace>
</word>
</words>
</xsl:param>
<xsl:template match="@*|*|comment()|processing-instruction()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="text()">
<xsl:variable name="search" select="concat('(',string-join($list/words/word/search,'|'),')')"/>
<xsl:analyze-string select="." regex="{$search}">
<xsl:matching-substring>
<a href="{$list/words/word[search=current()]/replace}"><xsl:value-of select="."/></a>
</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:value-of select="."/>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:template>
</xsl:stylesheet>
XML输出
<doc>
<test>This should be a link to google: <a href="http://www.google.com">Google</a>
</test>
</doc>