我需要通过XSLT和java将XML文件转换为HTML格式。其中一个标签包含内部网页等的链接:通过xslt将其转换为HTML时更改xml内容
http://mycompany.com &我的空间= XYZ &版本= 999
现在我想用在生成的html href属性此值。
使用此值之前,我想摆脱“amp”并更改网址,如追加用户名。
我可以通过一些XSLT函数吗?或者我必须在java代码中替换它?
我需要通过XSLT和java将XML文件转换为HTML格式。其中一个标签包含内部网页等的链接:通过xslt将其转换为HTML时更改xml内容
http://mycompany.com &我的空间= XYZ &版本= 999
现在我想用在生成的html href属性此值。
使用此值之前,我想摆脱“amp”并更改网址,如追加用户名。
我可以通过一些XSLT函数吗?或者我必须在java代码中替换它?
首先你给出的链接不工作,
我觉得只是要你的XML转换成HTML Java编写的。
访问此讨论。 suggestions-for-a-java-based-templating-engine
这是通过模板引擎完成的,在java中广泛使用的模板引擎是Freemarker和velocity。其他人也可用。
这里是Java模板引擎列表。 Java Template Engines
我可以通过一些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:替换(string,pattern,replace)和fn:concat(string,string,...)
返回通过替换参数替换给定模式而创建的字符串 示例:replace “贝拉意大利”, “升”, “”) 结果: '成为 *一个伊达* IA'
实施例:替换(“ 贝拉意大利”, “升”, “”) 结果:“衣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
如果你想写的&字符在URL中,而不是& amp;使用禁用输出转义。使用concat函数来追加任何你想要的url。
<xsl:value-of select="$url" disable-output-escaping="yes"/>
感谢您的回答,我会尝试并让您知道。我也可以通过一些系统属性动态给userName吗? – 2012-07-26 04:38:05
@KshitijGupta:大概可以这样做 - 如何将外部参数传递给XSLT转换依赖于实现(供应商)。阅读您正在使用的XSLT处理器的文档,并且必须存在关于此主题的部分。如果您找不到这些信息,请提出一个新问题,并且有人可能会分享如何完成这项工作。 – 2012-07-26 05:17:52