2012-05-30 51 views
1

我需要帮助获取以XML格式返回的链接才能显示在网站上。目前我正在使用在XSL中搜索文本元素并创建超链接

<xsl:for-each select="Summary/text"> 
    <p> 
    <xsl:value-of select="self::*"/> 
    </p> 

这会抓取每个段落,并将其正确缩进。除了我们获得的链接之外,这个工作很好。我对做什么感到困惑。我需要显示为超链接的文本显示为一个单独的段落,像这样:

<a href=http://www.google.com</a> 

所以我想我会打电话模板来做到这一点。

 <xsl:template name="hyperlink"> 
    <xsl:param name="text"/> 
    <xsl:choose> 
     <xsl:when test="contains($text,'href=http://')"> 
      <a> 
       <xsl:attribute name="href"> 
        <xsl:value-of select="substring($text, 8, 500)"/> 
       </xsl:attribute> 
      </a> 
     </xsl:when> 
     <xsl:otherwise> 
      <xsl:value-of select="self::*"/> 
     </xsl:otherwise> 
    </xsl:choose> 
</xsl:template> 

我不知道是否$ text或'href=http://'是正确的。当我尝试使用contains('<a href')进行测试时,出现错误。我会很高兴在正确的方向推动。我不认为我正在使用正确的语句来完成这项工作。

+1

所以,如果我理解正确你的问题,当你是不太环节出现问题有效(就像你在帖子中引用的那个)? – Lukasz

+0

您可以向我们展示您的xml输入样本以及预期输出吗?您使用的是什么版本的XSLT以及什么引擎? –

回答

0

尝试使用字符串长度选择HREF字符串的实际长度:

substring($text, 8, string-length($text) - 13) 
相关问题