2012-07-26 80 views
1

我需要通过XSLT和java将XML文件转换为HTML格式。其中一个标签包含内部网页等的链接:通过xslt将其转换为HTML时更改xml内容

http://mycompany.com &我的空间= XYZ &版本= 999

现在我想用在生成的html href属性此值。

使用此值之前,我想摆脱“amp”并更改网址,如追加用户名。

我可以通过一些XSLT函数吗?或者我必须在java代码中替换它?

回答

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> 
+0

感谢您的回答,我会尝试并让您知道。我也可以通过一些系统属性动态给userName吗? – 2012-07-26 04:38:05

+0

@KshitijGupta:大概可以这样做 - 如何将外部参数传递给XSLT转换依赖于实现(供应商)。阅读您正在使用的XSLT处理器的文档,并且必须存在关于此主题的部分。如果您找不到这些信息,请提出一个新问题,并且有人可能会分享如何完成这项工作。 – 2012-07-26 05:17:52

1

尝试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

0

如果你想写的&字符在URL中,而不是& amp;使用禁用输出转义。使用concat函数来追加任何你想要的url。

<xsl:value-of select="$url" disable-output-escaping="yes"/>