【问题标题】:How to use Jquery in XSLT 1.0如何在 XSLT 1.0 中使用 Jquery
【发布时间】:2014-05-11 10:55:03
【问题描述】:

我一直在尝试在 xslt 1.0 中使用 jquery,但我无法让它工作。 我是 xslt 新手,不知道如何使用它。

我已经尝试了封闭的代码:

   <xsl:stylesheet xmlns:x="http://www.w3.org/2001/XMLSchema"
           version="1.0" exclude-result-prefixes="xsl ddwrt msxsl rssaggwrt" 
           xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime"
           xmlns:rssaggwrt="http://schemas.microsoft.com/WebParts/v3/rssagg/runtime"
           xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt"
           xmlns:rssFeed="urn:schemas-microsoft-com:sharepoint:RSSAggregatorWebPart"
           xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"
           xmlns:rss1="http://purl.org/rss/1.0/" xmlns:atom="http://www.w3.org/2005/Atom"
           xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
           xmlns:atom2="http://purl.org/atom/ns#">

<xsl:param name="rss_FeedLimit">5</xsl:param>
<xsl:param name="rss_ExpandFeed">false</xsl:param>
<xsl:param name="rss_LCID">1033</xsl:param>
<xsl:param name="rss_WebPartID">RSS_Viewer_WebPart</xsl:param>
<xsl:param name="rss_alignValue">left</xsl:param>
<xsl:param name="rss_IsDesignMode">False</xsl:param>

 <xsl:output method="html"/>
 <xsl:template name="RSSMainTemplate" xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt">

        <xsl:variable name="Rows" select="channel/item"/>
        <xsl:variable name="RowCount" select="count($Rows)"/>
        <div class="slm-layout-main" >            

        <xsl:call-template name="RSSMainTemplate.body">
            <xsl:with-param name="Rows" select="$Rows"/>
            <xsl:with-param name="RowCount" select="count($Rows)"/>
        </xsl:call-template>

        </div> 
        <script type="text/javascript">
        <![CDATA[
        $('.RssNewContent1').each(function()
            {
                //alert("test");
                var height = parseInt($(this).css("height"));

                 var content = $(this).html();
                 while (this.scrollHeight > height)
                 {
                       content = content.replace(/\s+\S*$/, "");
                       $(this).html(content + " " + "...");
                 }
            });

        ]]>
        </script>         
    </xsl:template>

 <xsl:template name="RSSMainTemplate.body" xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt">

        <xsl:param name="Rows"/>
        <xsl:param name="RowCount"/>
        <xsl:for-each select="$Rows">
        <xsl:variable name="CurPosition" select="position()" />  

        <xsl:if test="($CurPosition &lt;= $rss_FeedLimit)">


                    <div class="RssNewContent1" >

                        <a href = "{link}" target="_blank">
                            <xsl:value-of select="title" />
                        </a>
     <xsl:value-of disable-output-escaping="yes"  select="string(description)" />
    </div>


               </div>       
           </xsl:if>              
        </xsl:for-each>


    </xsl:template> 

任何帮助将不胜感激!! 提前致谢!!

【问题讨论】:

  • 我个人的建议:不要使用 XSLT。不同浏览器实现它的错误没有得到修复,因为它被认为是一种死技术。相反,使用 AJAX 并将所需的数据从 XML 解析到您自己的 HTML 文档中。
  • @NewGirlInCalgary 它到底是怎么失败的?
  • @Louis 它什么也没做。它甚至没有向我显示警报框。如果我删除所有内容并只写 alert();它甚至不起作用。我不确定我做错了什么。
  • @Blazemonger 我在 sharepoint 2007 中使用 RSS webpart。这个 XSLT 来自那个 webpart。我需要编辑 XSLT 并进行一些修改。因此我无法编写自己的 ajax 代码来解析 RSS 提要。
  • @NewGirlInCalgary “它没有做任何事情”对我来说意味着转换的结果什么都不是,一个空字符串。如果是这种情况,那么您的问题比如何使用 XSLT 生成 jQuery 代码要广泛得多。

标签: jquery xml rss xslt-1.0


【解决方案1】:
<script type="text/javascript">
    //<xsl:comment><![CDATA[
         $('.RssNewContent1').each(function()
            {
                //alert("test");
                var height = parseInt($(this).css("height"));

                 var content = $(this).html();
                 while (this.scrollHeight > height)
                 {
                       content = content.replace(/\s+\S*$/, "");
                       $(this).html(content + " " + "...");
                 }
            });
    //]]></xsl:comment>
</script>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-09
    • 2016-08-30
    • 1970-01-01
    • 1970-01-01
    • 2015-01-22
    • 1970-01-01
    • 2021-08-16
    相关资源
    最近更新 更多