1

我需要通过 XSLT 和 java 将 XML 文件转换为 HTML 格式。其中一个标签包含 Intranet 页面的链接,例如:

http://mycompany.com&mypage=xyz&version=999

现在我想在生成的 html 的 href 属性中使用这个值。

在使用这个值之前,我想去掉“amp;” 并更改网址,例如将其附加用户名。

我可以通过一些 XSLT 函数来做到这一点,还是必须用 java 代码替换它?

4

4 回答 4

2

我可以通过一些 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'&amp;version='999'</someLink>

产生想要的正确结果

<a href="http://mycompany.com/someUser">someLink</a>
于 2012-07-26T04:31:39.947 回答
1

尝试 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 版中不可用

于 2012-07-26T04:35:27.543 回答
0

首先,您给定的链接不起作用,

http://mycompany.com?mypage=xyz&version=999。

我认为您只是想将您的 xml 转换为 java 中的 html。

对于那次访问这个讨论。 基于 java 的模板引擎的建议

这是由模板引擎完成的,java中广泛使用的模板引擎是Freemarker和velocity。其他的也可以。

这是 Java 模板引擎的列表。 Java 模板引擎

于 2012-07-26T04:31:38.353 回答
0

如果您想按原样在 URL 中写入 & 字符而不是 & 使用禁用输出转义。使用 concat 函数将您想要的任何其他内容附加到 url。

<xsl:value-of select="$url" disable-output-escaping="yes"/>
于 2012-07-26T04:44:34.530 回答