【发布时间】:2012-07-26 04:18:42
【问题描述】:
我需要通过 XSLT 和 java 将 XML 文件转换为 HTML 格式。其中一个标签包含内网页面的链接,如:
http://mycompany.com&mypage=xyz&version=999
现在我想在生成的 html 的 href 属性中使用这个值。
在使用这个值之前,我想去掉“amp;”并更改网址,例如将其附加用户名。
我可以通过一些 XSLT 函数来实现,还是必须在 java 代码中替换它?
【问题讨论】:
我需要通过 XSLT 和 java 将 XML 文件转换为 HTML 格式。其中一个标签包含内网页面的链接,如:
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 很有趣!'
参考:http://www.w3schools.com/xpath/xpath_functions.asp
注意:请确保您使用的是 XSLT 2.0 版,因为替换功能仅在 XSLT 2.0 版中可用,在 1.0 版中不可用
【讨论】:
首先你给定的链接不起作用,
我想你只是想在java中将你的xml转换成html。
为此访问此讨论。 suggestions-for-a-java-based-templating-engine
这是由模板引擎完成的,java中广泛使用的模板引擎是Freemarker和velocity。其他的也可以。
这里是 Java 模板引擎的列表。 Java Template Engines
【讨论】:
如果您想在 URL 中按原样写入 & 字符而不是 &使用禁用输出转义。使用 concat 函数将您想要的任何其他内容附加到 url。
<xsl:value-of select="$url" disable-output-escaping="yes"/>
【讨论】: