XSL If语句用于单击链接时

时间:2011-06-10 15:26:01

标签: xslt rss

我在.xsl文件上通过XSLT提取RSS源。我有一个“显示”链接,当点击时,会显示一个隐藏的DIV,其中包含具有唯一RSS项目整页源的Iframe。

问题是,由于这个DIV是隐藏的,它实际上会在首次查看页面时加载所有iframe的源页面并大大缩短加载时间。

我想要做的只是在单击“显示”按钮后iframe加载源。我如何使用XSLT If语句调用它?

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:user="urn:my-extension-lib:date">
<xsl:template match="/">
    <xsl:for-each select="rss/channel/item">            
        <div style="margin-bottom: 30px;">
            <div style="margin: 5px;">
                <div style="font-weight: bold;">                        
                    <a href="{link}" target="_blank" style="font-size: 10pt;">
                        <xsl:value-of select="title" />
                    </a>
                </div> 
                <div>
                    <xsl:value-of select="user:GetFormattedDate(pubDate,'MMM d, yyyy hh:mm tt')" />
                </div>
            </div>
            <div style="padding-left:30px">
                <a href="javascript:test('{guid}', '{link}');" id="{link}">Show</a>
            </div>
            <div style="margin: 20px 20px 20px 40px;display:none" id="{guid}">
                <iframe width="685" height="400" scrolling="yes" frameborder="yes" src="{link}"></iframe>
            </div>
        </div>
    </xsl:for-each>
</xsl:template>

1 个答案:

答案 0 :(得分:1)

我认为您需要做的是首先为每个IFRAME加载一个“空白”页面。例如,名为blank.htm的页面为空。此外,您可能希望为每个IFRAME提供一个ID标记,因此您可以使用Javascript轻松访问它以更改源

<iframe id="iframe{guid}" width="685" height="400" scrolling="yes" frameborder="yes" src="blank.htm"/>

然后,您可以像这样对您的javascript进行编码,以显示DIV,并将IFRAME的来源更改为正确的页面。

function test(id, link)
{
   document.getElementById(id).style.display = 'block';
   document.getElementById("iframe" + id).src = link;
}

以下是您的整个样式表的示例

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:template match="/">
      <html>
         <head>
            <title>Test</title>
            <script> 
            function test(id, link) 
            { 
               document.getElementById(id).style.display = 'block'; 
               document.getElementById("iframe" + id).src = link; 
            } 
            </script>
         </head>
         <body>
            <xsl:for-each select="rss/channel/item">
               <div style="margin-bottom: 30px;">
                  <div style="margin: 5px;">
                     <div style="font-weight: bold;">
                        <a href="{link}" target="_blank" style="font-size: 10pt;">
                           <xsl:value-of select="title"/>
                        </a>
                     </div>
                     <div>
                        <xsl:value-of select="pubDate"/>
                     </div>
                  </div>
                  <div style="padding-left:30px">
                     <a href="javascript:test('{guid}', '{link}');" id="{link}">Show</a>
                  </div>
                  <div style="margin: 20px 20px 20px 40px;display:none" id="{guid}">
                     <iframe id="iframe{guid}" width="685" height="400" scrolling="yes" frameborder="yes" src="blank.htm"/>
                  </div>
               </div>
            </xsl:for-each>
         </body>
      </html>
   </xsl:template>
</xsl:stylesheet>