我需要通过 XSLT 和 java 将 XML 文件转换为 HTML 格式。其中一个标签包含 Intranet 页面的链接,例如:
http://mycompany.com&mypage=xyz&version=999
现在我想在生成的 html 的 href 属性中使用这个值。
在使用这个值之前,我想去掉“amp;” 并更改网址,例如将其附加用户名。
我可以通过一些 XSLT 函数来做到这一点,还是必须用 java 代码替换它?
我可以通过一些 XSLT 函数来做到这一点,还是必须用 java 代码替换它?
这在 XSLT 中是微不足道的。
这种转变:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:param name="pUserName" select="'someUser'"/>
<xsl:template match="someLink">
<a href="{substring-before(., '?')}/{$pUserName}">someLink</a>
</xsl:template>
</xsl:stylesheet>
应用于此 XML 文档时:
<someLink>http://mycompany.com?mypage='xyz'&version='999'</someLink>
产生想要的正确结果:
<a href="http://mycompany.com/someUser">someLink</a>
尝试 fn:replace(string,pattern,replace) 和 fn:concat(string,string,...)
返回通过用替换参数替换给定模式创建的字符串示例:replace("Bella Italia", "l", " ") 结果:'Be *a Ita*ia'
示例:replace("Bella Italia", "l", "") 结果:'Bea Itaia'
fn:concat(string,string,...) 返回字符串的串联 示例:concat('XPath ','is ','FUN!') 结果:'XPath is FUN!'
参考:http ://www.w3schools.com/xpath/xpath_functions.asp
注意:确保您使用的是 XSLT 2.0 版,因为替换功能仅在 XSLT 2.0 版中可用,在 1.0 版中不可用
首先,您给定的链接不起作用,
我认为您只是想将您的 xml 转换为 java 中的 html。
对于那次访问这个讨论。 基于 java 的模板引擎的建议
这是由模板引擎完成的,java中广泛使用的模板引擎是Freemarker和velocity。其他的也可以。
这是 Java 模板引擎的列表。 Java 模板引擎
如果您想按原样在 URL 中写入 & 字符而不是 & 使用禁用输出转义。使用 concat 函数将您想要的任何其他内容附加到 url。
<xsl:value-of select="$url" disable-output-escaping="yes"/>